0%

《计算机网络》BGP协议

>>> BGP协议

BGP全称是Border Gateway Protocol, 对应中文是边界网关协议。属于应用层协议, tcp端口号179

比如阿里云接入互联网,需要通过BGP设备与移动、联通等ISP建立对话,互换信息。阿里云会告诉ISP自己的所有公网IP,以让ISP的用户能够访问阿里云内的机器

>>> BGP报文格式

报文头格式

格式

  • Marker:占16字节,用于检查BGP对等体的同步信息是否完整,以及用于BGP验证的计算。不使用验证时所有比特均为1(十六进制则全“FF”)。
  • Length:占2个字节(无符号位),BGP消息总长度(包括报文头在内),以字节为单位。长度范围是19~4096。
  • Type:占1个字节(无符号位),BGP消息的类型。Type有5个可选值,表示BGP报文头后面所接的5类报文(其中,前四种消息是在RFC4271中定义的,而Type5的消息则是在RFC2918中定义的):
TYPE值 报文类型
1 OPEN
2 UPDATE
3 NOTIFICATION
4 KEEPALIVE
5 REFRESH(RFC2918)

OPEN类型报文体格式

字段 长度 含义
Version 1个字节(无符号位) 表示协议的版本号,现在BGP的版本号为4。
My Autonomous System 2个字节(无符号位) 发送者自己的AS域号
Hold Time 2个字节(无符号位) 发送者自己设定的hold time值(单位:秒),用于协商BGP对等体间保持建立连接关系,发送KEEPALIVE或UPDATE等报文的时间间隔。BGP的状态机必须在收到对等体的OPEN报文后,对发出的OPEN报文和收到的OPEN报文两者的hold time时间作比较,选择较小的时间作为协商结果。Hold Time的值可为零(不发KEEPALIVE报文)或大于等于3,我们系统的默认为180。
BGP Identifier 4个字节(无符号位) 发送者的router id。
Opt Parm Len 1个字节(无符号位) 表示Optional Parameters(可选参数)的长度。如果此值为0,表示没有可选参数。

UPDATE类型报文体格式

字段 | 长度 | 含义
| —- | —- | —- |
|Withdrawn Routes Length | 2个字节(无符号位)| 标明Withdrawn Routes部分的长度。其值为零时,表示没有撤销的路由。|
|Withdrawn Routes | 变长 | 包含要撤销的路由列表,列表中的每个单元包含1字节的Length域和可变长度的Prefix域。Length:待撤销路由的掩码。其值为零时,表示匹配所有的路由。Prefix:传送的IP地址前缀必须用整字节表示。例如:假定待撤销的路由为200.200.200.200,其编码用16进制表示可如下:Mask掩码(十进制) Length Prefix32 20 C8 C8 C8 C825 19 C8 C8 C8 8020 14 C8 C8 C015 0F C8 C8|
|Total Path Attribute Length | 2个字节(无符号位)| 标明Path Attributes部分和Network Layer Reachability Information两部分的长度。其值为零时,表示没有路由及其路由属性要通告。|
|Path Attributes | 变长 | 包含要更新的路由属性列表,按其类型号从小到大的顺序排序,填写更新的路由的所有属性。每一个属性单元包括属性类型,属性长度,属性值三部分。其编码采用TLV格式。如下所示。图2 BGP路径属性TLV格式其中,Attr.TYPE占2个字节(无符号位),包括1字节的Flags(无符号位)和1字节的Type Code(无符号位)。图3 TLV结构-TypeAttr.Flags:占1个字节(8个bit),表示属性的标记,其每个bit位的意义如下显示:O: Optional bit, 属性的可选性。决定属性是否为必携带属性。带可选属性(optional)设为1,公认属性(well-known)设为零。T: Transitive bit 属性的可传递性。对于可选属性,是可传递的设为1,非可传递的设为0。对于公认属性必须设为1。P: Partial bit 属性的局部性。对于可传递的可选属性是局部的设为1,是完全的设为零。对于非可传递的的可选属性和公认属性,必须设为零。E: Extended Length bit 决定该属性的长度的字段(即Attr. Length)是否需要扩展。不需要扩展则设为零,Attr. Length占1个字节;需要扩展则设为1,Attr. Length占2个字节。U: Unused bits 低4位没有使用,发送时必须全部设为零,并且在接收时被忽略。Attr.Type Code:占1个字节(无符号位),表示属性的类型号。设置如下表2。Attr.Value:根据不同属性的类型填写不同内容。|
|Network Layer Reachability Information(NLRI) | 变长 | 包含要更新的地址前缀列表,每一个地址前缀单元由一个LV二元组(prefix length, the prefix of the reachable route)组成,其编码填写方法与Withdrawn Routes的填写方法相同。|

其他类型格式

查看文档 https://tools.ietf.org/html/rfc4271




微信关注我,及时接收最新技术文章