以下是BGP的五种报文及报文解析:
1、OPEN消息
TCP会话建立起来以后,两个邻居都要发送一个OPEN消息,双方使用open消息标识自己,并且规定自己的BGP运行参数。如果open消息被接受,则回送一条keep live消息进行确认,确认后就能发送update消息了。open消息包含以下内容:
- Version 8bit,V4目前使用较多的版本
- AS号 16bit,本地AS号
- HOLDTIME 路由器必须收到一个keep live或者更新消息之前所允许经过的最大秒数
- BGP identifer ROUTE-ID和OSPF选取的routerID的方式一致
- 可选参数长度 用来表示可选参数字段的长度
- 可选参数 包含了一个可选参数的列表,每个参数都由一个长为1个8组的类型字段、一个长8位组的长度字段及一个可变长的包含参数数值的字段组成。用来宣告支持验证、多协议支持和路由刷新等可选功能(常被称为“能力值”,意思就是所具备的能力展示)
2、KEEPALIVE消息
如果路由器接受了邻居在OPEN消息中的参数,就会应答一个keeplive消息,并且在此以后 1/3 的holdtime(但不小于1秒)为周期发送该消息,思科默认为60秒。如果协商后保持时间为0,则不发送keepalive保活消息。
keepalive消息实际上弥补了TCP无法确认对端存活的缺陷
keepalive消息仅包含19bytes的BGP头部,除此之外不包含任何其他数据。
3、UPDATE消息
用来公布可用的路由、撤销的路由或者两者兼顾,
每条update消息只描述单条BGP路由,这是因为BGP路径属性只能描述单条路由
消息中包含:
- 网络层可达信息(NLRI) 一个或多个(长度、前缀)二元组,用来公布IP地址前缀和前缀长度
- 路径消息
- 被撤销路由(withdraw)
4、Notification消息
当检测到差错的时候发送,通常会导致BGP连接的终止
5、Route-refresh
当路由策略发生变化时,去请求邻居重新通告路由(BGP不会周期性发送更新)