BGP学习历程(报文分析与状态机)

BGP学习历程(报文分析与状态机),第1张

BGP学习历程(报文分析与状态机) BGP报文分析

前言:发送报文的前提是TCP连接已建立成功。
个人理解:BGP更多的是像一个跑道,为更多的路由提供传输条件,优势在于通过路由策略的运用,对路由进行控制。

BGP报文格式

所有的BGP报文都需要遵循以下格式
Header:头
Message:详细信息
Data:数据

BGP报文头部(Header)

是所有BGP报文都有的头部,包含以下三要素:
1.标识符:16字节,均为1,表现为均是f
2.长度:包头+信息的总长度
3.类型:报文类型

Border Gateway Protocol - OPEN Message
    Marker: ffffffffffffffffffffffffffffffff		标识符:16字节,均为1,表现为均是f
    Length: 45										长度:包头+信息的总长度
    Type: OPEN Message (1)							报文类型
Open报文:

作用是协商BGP的参数,包括BGP版本(目前使用的是V4,之前有V1,2,3),AS号等,尝试与BGP对等体建立BGP邻居关系,是TCP连接建立后的发的第一个报文。

frame 36: 99 bytes on wire (792 bits), 99 bytes captured (792 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_80:1d:a1 (00:e0:fc:80:1d:a1), Dst: HuaweiTe_72:2a:c7 (00:e0:fc:72:2a:c7)
Internet Protocol Version 4, Src: 3.3.3.3, Dst: 4.4.4.4
Transmission Control Protocol, Src Port: 179, Dst Port: 49724, Seq: 1, Ack: 1, Len: 45
Border Gateway Protocol - OPEN Message
    Marker: ffffffffffffffffffffffffffffffff							标识符
    Length: 45															长度
    Type: OPEN Message (1)												类型
    Version: 4															BGP版本
    My AS: 200															发送该报文的路由器所在的AS号
    Hold Time: 180								    					等待时间,如果超过180秒,表示无响应断开
    BGP Identifier: 4.4.4.4												本地配置的router-id
    Optional Parameters Length: 16										可选参数字节长度
    Optional Parameters
        Optional Parameter: Capability
            Parameter Type: Capability (2)
            Parameter Length: 14
            Capability: Multiprotocol extensions capability				多协议扩展能力,默认是IPv4
			    Type: Multiprotocol extensions capability (1)
                Length: 4
                AFI: IPv4 (1)											地址族ID(AFI)为IPv4
                Reserved: 00
                SAFI: Unicast (1)										子地址族ID:单播
            Capability: Route refresh capability						路由刷新能力值
                Type: Route refresh capability (2)
                Length: 0
            Capability: Support for 4-octet AS number capability		支持4个字节的AS号码的能力(2字节是1-65535,4字节是1-4294967295)
                Type: Support for 4-octet AS number capability (65)
                Length: 4
                AS Number: 200

Update报文:

用于路由信息更新,包括新增路由(可达路由)更新通知和撤销路由(不可达路由)更新通知。
注:可达路由和不可达路由Update报文中包含的元素是不同的。

1.可达路由:新增路由更新,下面案例为bgp 200中宣告(network)自己的环回口,导致路由信息更新。

frame 20: 109 bytes on wire (872 bits), 109 bytes captured (872 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_80:1d:a1 (00:e0:fc:80:1d:a1), Dst: HuaweiTe_72:2a:c7 (00:e0:fc:72:2a:c7)
Internet Protocol Version 4, Src: 3.3.3.3, Dst: 4.4.4.4
Transmission Control Protocol, Src Port: 179, Dst Port: 49153, Seq: 47, Ack: 20, Len: 55
Border Gateway Protocol - UPDATE Message
    Marker: ffffffffffffffffffffffffffffffff
    Length: 55
    Type: UPDATE Message (2)
    Withdrawn Routes Length: 0								撤销(不可达)路由长度,此次为0,就是新增的路由信息
    Total Path Attribute Length: 28							总的路径属性长度
    Path attributes											路径属性
        Path Attribute - ORIGIN: IGP						源:IGP	
        Path Attribute - AS_PATH: empty						AS路径:无
        Path Attribute - NEXT_HOP: 3.3.3.3 					下一跳
        Path Attribute - MULTI_EXIT_DISC: 0					MED为0
        Path Attribute - LOCAL_PREF: 100					本地优先级
    Network Layer Reachability Information (NLRI)			网络层可达性信息(NLRI)
        3.3.3.0/24
            NLRI prefix length: 24							NLRI 前缀长度
            NLRI prefix: 3.3.3.0							NLRI 前缀(路由前缀)

2.不可达路由:撤销路由,下面案例是去掉环回口的宣告(network),模拟出现“撤销的update”

frame 11: 81 bytes on wire (648 bits), 81 bytes captured (648 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_80:1d:a1 (00:e0:fc:80:1d:a1), Dst: HuaweiTe_72:2a:c7 (00:e0:fc:72:2a:c7)
Internet Protocol Version 4, Src: 3.3.3.3, Dst: 4.4.4.4
Transmission Control Protocol, Src Port: 179, Dst Port: 49153, Seq: 1, Ack: 1, Len: 27
Border Gateway Protocol - UPDATE Message
    Marker: ffffffffffffffffffffffffffffffff
    Length: 27
    Type: UPDATE Message (2)
    Withdrawn Routes Length: 4									撤销(不可达)路由长度,此次为4,就是要撤销的路由信息
    Withdrawn Routes											撤回的路由
        3.3.3.0/24
            Withdrawn route prefix length: 24
            Withdrawn prefix: 3.3.3.0
    Total Path Attribute Length: 0								总的路径属性长度,此次为0,说明这个UPDATE报文是撤销路由报文
Keepalive报文:

用于保持邻居关系,两邻居间周期性发送,判断对等体之间的可达性,相当于OSPF中的Hello报文。

注:Keepalive报文只有报文头部,发送时间是60s,两端互相发送,三倍的发送时间(180s)若没收到对方的回应,断开BGP连接。

frame 53: 73 bytes on wire (584 bits), 73 bytes captured (584 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_80:1d:a1 (00:e0:fc:80:1d:a1), Dst: HuaweiTe_72:2a:c7 (00:e0:fc:72:2a:c7)
Internet Protocol Version 4, Src: 3.3.3.3, Dst: 4.4.4.4
Transmission Control Protocol, Src Port: 179, Dst Port: 49724, Seq: 65, Ack: 65, Len: 19
Border Gateway Protocol - KEEPALIVE Message
    Marker: ffffffffffffffffffffffffffffffff
    Length: 19
    Type: KEEPALIVE Message (4)

Notification报文:

差错通知,BGP的差错检测机制,在建立邻居过程中或者邻居已建立后出现如何差错BGP speaker都会发送该报文,然后与之相关的BGP邻居关系将被关闭。

注:错误代码分很多种,下面只列举了一种,此次显示的是我将OSPF的路由删除了一条,导致OSPF无法建立邻居关系,进而使BGP的Keepalive报文响应时间超时(超过了180s)。

frame 194: 75 bytes on wire (600 bits), 75 bytes captured (600 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_80:1d:a1 (00:e0:fc:80:1d:a1), Dst: HuaweiTe_72:2a:c7 (00:e0:fc:72:2a:c7)
Internet Protocol Version 4, Src: 3.3.3.3, Dst: 4.4.4.4
Transmission Control Protocol, Src Port: 49855, Dst Port: 179, Seq: 210, Ack: 172, Len: 21
Border Gateway Protocol - NOTIFICATION Message
    Marker: ffffffffffffffffffffffffffffffff
    Length: 21
    Type: NOTIFICATION Message (3)
    Major error Code: Hold Timer Expired (4)						错误代码:保持计时器已过期
    Minor error Code (Hold Timer Expired): 0			
Route-Refresh报文:

路由刷新报文,用于改变路由策略后请求对等体重新发布路由信息。

注:下面的结果是使用“refresh bgp all import / export”进行BGP软路由更新,使之出现Route-Refresh 报文。

frame 295: 77 bytes on wire (616 bits), 77 bytes captured (616 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_80:1d:a1 (00:e0:fc:80:1d:a1), Dst: HuaweiTe_72:2a:c7 (00:e0:fc:72:2a:c7)
Internet Protocol Version 4, Src: 3.3.3.3, Dst: 4.4.4.4
Transmission Control Protocol, Src Port: 179, Dst Port: 49698, Seq: 398, Ack: 343, Len: 23
Border Gateway Protocol - ROUTE-REFRESH Message
    Marker: ffffffffffffffffffffffffffffffff
    Length: 23
    Type: ROUTE-REFRESH Message (5)
    Address family identifier (AFI): IPv4 (1)											地址族ID(AFI)为:IPv4
    Subtype: Normal route refresh request [RFC2918] with/without ORF [RFC5291] (0)
    Subsequent address family identifier (SAFI): Unicast (1)							子地址族ID(SAFI):单播
BGP报文应用

1.建立TCP连接时,需要使用open报文。
2.建立TCP连接后,如果有路由需要变化或者路由变化时,发送update报文到对端。
3.稳定后要定时发送keepalive报文以保持BGP连接的有效性。
4.当本地BGP在运行中发现错误时,要发送Notification报文通告BGP对等体
5. Route-Refresh报文用来通知对等体自己的路由刷新

BGP状态机

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5707176.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存