一、报文种类
1、open报文
用于建立BGP邻居的连接,协商BGP参数的报文
2、undae报文
用于BGP邻居间交互路由信息的报文。
3、notification报文
差错报文,用于报错,且终端邻居关系的报文。
4、Keep alive报文
用于保持邻居连接的报文,用于保活。
5、route-refresh报文
用户在策略改变之后,请求邻居重新发送路由信息。
二、报文结构
BGP报文默认是由两部分组成,分别是BGP报文头和具体的报文内容。
1、BGP报文头
marker:占用16字节,默认全F,用于检查BGP邻居头部的消息是否完整。
length:占用2字节,用于描述BGP报文的总长度,包括了头部和具体部分。
type:类型,用于描述当前BGP报文类型,分别分1 2 3 4 5这五种类型。
2、open报文
version:BGP版本,默认都是版本4.
my as:用于描述发送报文的BGP路由器所处的AS号,如果对端的AS号和本地配置的不一致,则协商失败,发送notification报文。
hold time:描述路由器邻居失效的时间,默认情况是Keep alive的3倍,当两端的hold time不一致时需要协商,使用数值低的使用。
2.1 默认情况下holdtime是keepalive的3倍关系即180秒,keepalive默认60秒。
2.2 如果从邻居接收到的holdtime和自己的holdtime相同,则不做改变。
2.3 如果从邻居接收到的holdtime大于自己的holdtime,则不做改变。
2.4 如果从邻居接收到的holdtime小于自己的holdtime,则协商结果是使用数值小的holdtime执行。
2.4.1 如果自己的keepalive值小于协商后的holdtime值除以3,那么不做改变。
2.4.2 如果自己的keepalive值大于协商后的holdtime值除以3,那么选用数值小的执行。
BGP id:用来描述发送该报文的路由器BGP route-id。
optional parameters length:BGP协商参数字段长度。
optional parameters:BGP协商参数。
3、Update报文
withdrawn routes length:用来描述失效的路由长度。
total path attributes length:用来描述携带的属性长度。
path attributes:携带的属性。
Network Layer Reachability Information (NLRI):网络层可达信息,用来描述所携带的路由的网络号和掩码长度。
针对属性不同的路由条目,需要分开update报文发送。
具有相同属性的路由条目,可以在一条update报文发送。
withdrawn routes length:如果这个参数不为空,那么下面就回携带的需要删除的路由信息。