《bgp报文分析【精制材料】》由会员分享,可在线阅读,更多相关《bgp报文分析【精制材料】(32页珍藏版)》请在金锄头文库上搜索。
1、Bgp报文分析,1,实操应用,Bgp概述,BGP(Border Gateway Protocol,边界网关协议)是一种提供域间路由选择系统的路由协议,确保自治系统之间能够无环路地交换路由选择信息,BGP路由器交换有关前往目标网络的路径信息。 BGP是一种基于策略的路由选择协议,BGP确定最佳路径时考虑的不是速度,而是让AS能够根据多种BGP属性来控制数据流的传输路径。 一个路由器只能属于一个as号。rfc4271中As(2字节)的范围是1-65535。在rfc4893中扩展为4字节,范围是0-4294967295,其中23456被保留为AS_TRANS。,2,实操应用,Bgp的特性,BGP使用
2、TCP作为其传输层协议(端口号179),提高了协议的可靠性。 BGP是一种外部网关协议(Exterior Gateway Protocol,EGP),与OSPF、RIP等内部网关协议(Interior Gateway Protocol,IGP)不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由。 BGP支持CIDR(Classless Inter-Domain Routing,无类别域间路由)。他使用带有较短的掩码(相对于自然掩码)的路由来在一条路由中表达更多的路由信息。例如从202.112.1.0/24到202.112.254.0/24用202.112.0.0/16标识。
3、 路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。 BGP路由通过携带AS路径信息彻底解决路由环路问题。 BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择。 BGP易于扩展,能够适应网络新的发展。,3,实操应用,Bgp的五种种报文,Open报文:用来与相邻路由器建立关系。 Keeplive报文:用来确认open报文,和周期性的证实邻站关系。 Update报文:用来发送路由的信息,以及列出要撤销的多条路由。 Notification报文:用来发送检测到的差错,并中断连接。 Refresh报文:用来要求对等体重新发送
4、指定地址族的路由信息。,4,实操应用,Bgp的公共报文头,BGP消息报文头格式 主要字段的解释如下: Marker:16字节,用于标明BGP报文边界,所有比特均为“1”。 Length:2字节,BGP消息总长度(包括消息头在内),以字节为单位最小19字节,最大4096字节。 Type:1字节,BGP消息的类型。其取值从1到4,分别表示Open、Update、Notification、Keepalive消息。,5,实操应用,Open报文格式,Version:BGP的版本号。对于BGP-4来说,其值为4。 My autonomous system:本地AS号。 Hold time:BGP连接保持时
5、间(单位秒)。 BGP identifier:BGP标识符。以IP地址的形式表示,用来识别BGP路由器。 Opt Parm Len(Optional Parameters Length):可选参数的长度。如果为0则没有可选参数。 Optional parameters:可选参数。用于多协议扩展(Multiprotocol Extensions)等功能,均使用TLV(type-length-value)格式。,6,实操应用,open报文,as号为2字节时: Bgp报文解析需要在Open报文中获取的是as号和报文源ip的对应关系 。as号是上图中标记的位置。,7,实操应用,Open报文,As号为4
6、字节时 Bgp报文解析需要在Open报文中获取的是as号和报文源ip的对应关系。as号是上图中标记的位置。,8,实操应用,Update报文格式,Unfeasible routes length:不可达路由字段的长度,以字节为单位。如果为0则说明没有Withdrawn Routes字段。 Withdrawn routes:不可达路由的列表,长度可变,以(长度,前缀)格式表示的被撤销路由,如果(长度,前缀)中的长度为0,匹配任意的路由。 Total path attribute length:路径属性字段的长度,以字节为单位。如果为0则说明没有Path Attributes字段。 Path atr
7、ibutes:与NLRI相关的所有路径属性列表,每个路径属性由一个TLV(Type-Length-Value)三元组构成。 NLRI(Network Layer Reachability Information):可达路由的前缀和前缀长度二元组。,9,实操应用,Update报文,当路由失效时,发送的update报文: Bgp报文解析功能需要在该报文中的withdrawn routes中获取ip段的信息(ip段的信息可以是多个),as号为open报文获取到的as号或默认0。,10,实操应用,Update报文,添加路由信息时,发送的update报文: Bgp报文解析功能需要在update报文中从a
8、s path中获取as号(path segment length是指as的个数,path segment value是as值);从Network Layer Reachability Information中获取ip段的信息(ip段的信息可以是多个)。 注:1.As号可以是4字节也可以是2字节; 2.对于路径属性字段在后面会有介绍。,11,实操应用,Update报文,Update报文中有扩展属性MP_REACH_NLRI时,发送的update报文: Bgp报文解析功能需要在update报文中从as path中获取as号;从Network Layer Reachability Informati
9、on中ip段的信息。 注:As号可以是4字节也可以是2字节。,12,实操应用,Update报文,下图中蓝框标出的是需要获取的信息,13,实操应用,Keeplive报文格式,消息格式中只包含公共报文头,没有其他任何附加字段,14,实操应用,Notification报文格式,主要字段的解释如下: Error code:差错码,指定错误类型。 Error subcode:差错子码,错误类型的详细信息。 Data:用于辅助发现错误的原因,它的内容依赖于具体的差错码和差错子码,记录的是出错部分的数据,长度不固定。,15,实操应用,Notification报文,错误码:,16,实操应用,Refresh报文
10、格式,主要的字段解释如下: AFI:Address Family Identifier,地址族标识。 Res.:保留,必须置0。 SAFI:Subsequent Address Family Identifier,子地址族标识。,17,实操应用,路由属性分类,BGP路由属性是一组参数,它对特定的路由进行了进一步的描述,使得BGP能够对路由进行过滤和选择。事实上,所有的BGP路由属性都可以分为以下四类: 公认必须遵循(Well-known mandatory):在路由更新数据报文中必须存在的路由属性,这种属性域在BGP 路由信息中有着不可替代的作用,如果缺少必遵属性,路由信息就会出错。 公认可选
11、(Well-known discretionary):所有BGP路由器都可以识别,但不要求必须存在于Update消息中,可以根据具体情况来选择。 可选过渡(Optional transitive):在AS之间具有可传递性的属性。BGP路由器可以不支持此属性,但它仍然会接收带有此属性的路由,并通告给其他对等体。 可选非过渡(Optional non-transitive):如果BGP路由器不支持此属性,该属性被忽略,且不会通告给其他对等体。只在本地起作用,出了自治系统,域值就恢复成缺省值。 Bgp属性可以扩展到256种。,18,实操应用,常用bgp路由属性,1.origin(公认必须遵循) 2.
12、as_path(公认必须遵循) 3.next hop(公认必须遵循) 4.Med(可选非过渡) 5.Local-preference(公认可选) 6.Atomic-aggregate(公认可选) 7.Aggregator(可选过渡) munity(可选过渡) 9.originator-Id(可选非过渡) 10.cluster-List(可选非过渡),19,实操应用,常用bgp路由属性,11.destination Pref 12.advertiser 13.rcid-path 14.MP_Reach_NlRI(可选非传递) 15.MP_Unreach_NLRI(可选非传递) 16.Extend
13、ed_Communities 17.AS4_PATH 18. AS4_AGGREGATOR,20,实操应用,常用的路由属性,源属性(ORIGIN ,属性类型1) AS路径属性(AS_PATH ,属性类型2) 下一跳属性(NEXT_HOP ,属性类型3) MED属性(MULTI_EXIT_DISC ,属性类型4 ) 本地优先属性(LOCAL_PREF ,属性类型5) 团体属性(COMMUNITY ,属性类型5 ) 扩展属性: 扩展协议可达NLRI(MP_REACH_NLRI ,属性类型14) 扩展协议不可达NLRI(MP_UNREACH_NLRI,属性类型15),21,实操应用,源属性(ORIG
14、IN),ORIGIN属性定义路由信息的来源,标记一条路由是怎么成为BGP路由的。它有以下三种类型: IGP(0):优先级最高,说明路由产生于本AS内。 EGP(1):优先级次之,说明路由通过EGP学到。 incomplete(2):优先级最低,它并不是说明路由不可达,而是表示路由的来源无法确定。例如,引入的其它路由协议的路由信息。,22,实操应用,AS路径属性(AS_PATH),AS_PATH由一系列AS路径组成,AS_PATH有四种种类型: AS_SET(1):在UPDATE消息中的路由经过的AS的无序集; AS_SEQUENCE(2):在UPDATE消息中的路由经过的AS的有序集; 附加段
15、类型: AS_CONFED_SET(4):其用法与AS_SET完全一样,区别在于该列表中的AS号属于联盟路由中的AS; AS_CONFED_SEQUENCE(3):其用法与AS_SEQUENCE完全一样,区别在于该列表中的AS号属于联盟路由中的AS。 AS_PATH属性按一定次序记录了某条路由从本地到目的地址所要经过的所有AS号。,23,实操应用,As路径属性(as_path),BGP处理AS_PATH规则如下: 当BGP发布者发布路由给IBGP对等体时,BGP不修改路由的AS_PATH属性。 当BGP发布者发布路由给EBGP对等体时,如果第一个AS_PATH属性的类型为AS_SEQUENCE
16、,本地系统应该把自己的AS号作为序列的最后一个元素加在序列的最后面; 当BGP发布者发布路由给EBGP对等体时,如果第一个AS_PATH属性的类型为AS_SET,本地系统应该插入一个AS_SEQUENCE,同时把自己的AS号添加进去;如果AS_PATH为空,本地系统应该添加一个。AS_SEQUENCE,同时把自己的AS号添加进去。 通常情况下,BGP不会接受AS_PATH中已包含本地AS号的路由,从而避免了形成路由环路的可能,24,实操应用,下一跳属性(NEXT_HOP),BGP的下一跳属性和IGP的有所不同,不一定就是邻居路由器的IP地址。下一跳属性取值情况分为三种,如所示。 如果是发布给EBGP对等体,NEXT_HOP填写BGP发布者的IP地址; 如果是发布给IBGP对等体,且路由来自AS外部,则NEXT_HOP不变; 如果是发布给IBGP对等体,且路由来自AS内部,则使用发布者的地址作为NEXT_HOP;如果配置了负载分担,路由被发给IBGP邻居时则会修改下一跳属性。,25,实操应用,MED属性(MULTI_EXIT_DISC),当某个 AS 有多