1. BGP的消息类型:
bgp是建立在tcp之上的协议,tcp端口号179
1:open(打开消息)
2:keepalive(存活消息)
3:update(更新消息)
4:notification(报错消息)
2.BGP包头格式:
bgp的所有消息都会以该头开始
Maker(16字节)——-全为1,标识bgp报文边界
Length(2字节)——-BGP包全长,长度的值必须最少19字节最大4096字节。
Type(1字节)—
1 - OPEN
2 - UPDATE
3 - NOTIFICATION
4 – KEEPALIVE
3.OPEN消息格式:
1.Version(1字节)—–当前的BGP版本号为4
2.My Autonomous System(2字节)—-发送者自制系统号
3.Hold Time(2字节)—-BGP hold time默认为180秒。如果180秒内,没有收到keepalive消息,则删除bgp邻居。
4.BGP Identifier(4字节)—-发送者的BGP router-ID.
5.Optional Parameters Length(可选参数长度)(1字节):如果这个域是0,说明没有可选参数。
6.Optional Parameters(可选参数):这里总长度是和Optional Parameters Length指定的值是一致的。
从上可以看出open消息最短也得是 19(固定头长)+1+2+2+4+1 = 29字节。
4.keepalive报文
该报文比较简单,只有bgp的固定头。默认每60秒发送一次,对等体收到后,会更新保活消息计时,如果联系三次发送的消息,都没到达对等体,那么对方见删除bgp邻居。
建立邻居时,BGP先尝试与对等体建立一个TCP连接。如果TCP连接建立成功,BGP发送一个OPEN消息给对端,并等待从对端发来的OPEN消息。收到一个OPEN消息以后,BGP检查该消息的所有字段,如果没有发现错误,则向对端发送一个KEEPALIVE消息并启动KEEPALIVE定时器。收到KEEPALIVE消息,则邻居建立。
5.BGP update报文格式
bgp目的就是要通告路由,而所有路由的添加,更新,删除都是依赖此消息完成。
Unfeasible Routes Length—-2字节,指示了撤销路由的字节总长度。0说明没有撤销路由。
Withdrawn Routes —-之前发布过,不再有效的路由。总长度与Unfeasible Routes Length值对应。
Total Path Attribute Length—-2字节,0代表在UPDATE消息中没有网络层可达信息域。
Path Attributes(路径属性):总长度和Total Path Attribute Length值对应。
5.NOTIFICATION报文格式:
当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP会话会立即中断。该报文也比较简单,在bgp固定头之上,再增加四个字节即可。
错误码:
错误子码:
参考文献:
1 http://www.h3c.com.cn/MiniSite/Technology_Circle/Net_Reptile/The_Tthree/Home/Catalog/201010/696842_97665_0.htm
2 http://blog.163.com/hlz_2599/blog/static/142378474201161152657815
3 http://6247039.blog.51cto.com/6237039/1321814/