首先,BGP是建立在TCP之上的,就是BGP协议报文在传输层采用TCP封装的(抓包会看到在BGP报文之上有TCP报文的字段)。然后如果要交互BGP报文必须建立BGP对等体。
所有BGP报文的头部都是相同的:
1. marker 标记,用于协议的兼容性
2. length 长度,标识该BGP报文的长度
3. type 类型,标识该BGP报文的类型有open报文,keep alive报文,update报文,notification报文,router-refresh报文
Open报文中的内容:
version:BGP协议的版本,现在都是4,BGPv4
my as :发送者的AS号
holdtime:保活时间 在规定时间内如果收不到keep alive或者update报文,则对等体失效
BGP ID:路由器标识符
option parameter:可选参数,用来扩展BGP支持多协议
扫描二维码关注公众号,回复:
1566030 查看本文章
keep alive报文中无实际内容,只有个包头
update报文中的内容:(承载路由)
withdrawn route:回收路由(不可达路由)信息
Path attribute:路径属性
network layer reachability information:网络层可达信息,就是宣告一条路由到BGP中,该字段会包含路由信息
notification报文:
其中包含error code(表中没有列出)错误代码和一些数据
refresh-route报文中内容:
address family identifier 协议族ID
subsequent address family identifier 子地址族ID
路由器通过BGP互相通告路由的一个简单的过程就是:TCP连接建立,互相发送Open报文,回复keepalive报文,如有路由信息则发送Update报文,保持对等体关系需互相发送keepalive报文。