BGP报文类型
(2017-02-08 00:23:36)| 分类: BGP | 
 
- Open消息。用于协商BGP参数。
 - 
Update消息。用于交换路由信息。
 - 
Keepalive消息。用于保持邻居关系。
 - 
Notification消息。差错通知。
 - 
Route-Refresh消息。用于在改变路由策略后请求对等体重新发送路由信息。
 
Open消息:是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。对等体在接收到Open消息并协商成功后,将发送Keepalive消息确认并保持连接的有效性。确认后,对等体间可以进行Update、Notification、Keepalive和Route-Refresh消息的交换。
 
Update消息:用于在对等体之间交换路由信息。Update消息可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。
- 
一条Update消息可以发布多条具有相同路由属性的可达路由,这些路由可共享一组路由属性。所有包含在一个给定的Update消息里的路由属性适用于该Update消息中的NLRI(Network Layer Reachability Information)字段里的所有目的地(用IP前缀表示)。
 - 
一条Update消息可以撤销多条不可达路由。每一个路由通过目的地(用IP前缀表示),清楚的定义了BGP Speaker之间先前通告过的路由。
 - 
一条Update消息可以只用于撤销路由,这样就不需要包括路径属性或者NLRI。相反,也可以只用于通告可达路由,就不需要携带撤销路由信息了。
 
Keepalive消息:BGP会周期性的向对等体发出Keepalive消息,用来保持连接的有效性。
 
Notification消息:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。
 
Route-Refresh消息:通过OPEN消息告知BGP peer本地支持路由刷新能力(Route-Refresh capability)。在所有BGP路由器使能Route-Refresh能力的情况下,如果BGP的入口路由策略发生了变化,本地BGP路由器会向对等体发布Route-Refresh消息,收到此消息的对等体会将其路由信息重新发给本地BGP路由器。这样,可以在不中断BGP连接的情况下,对BGP路由表进行动态刷新,并应用新的路由策略。
 
 
BGP报头
- Marker(标记):16字节,固定为1。
 - Length(长度):两字节无符号整数。指定了消息的全长,包括头部。
 - Type(类型):1 字节,指示报文类型:
 - 
- Open
 - Update
 - Keepalive
 - Notification
 - Route-Refresh
 
 
Open报文结构
- Version:BGP的版本号。对于BGPv4来说,其值为4。
 - My Autonomous System:本地AS编号。通过比较两端的AS编号可以确定是EBGP连接还是IBGP连接。
 - Hold Time:在建立对等体关系时两端要协商Hold time,并保持一致。如果两端所配置的Hold time时间不同,则BGP会选择较小的值作为协商的结果。如果在这个时间内未收到对端发来的Keepalive消息,则认为BGP连接中断。如果保持时间为0,则标识不发送Keepalive报文。
 - BGP Identifier:BGP路由器的Router ID,以IP地址的形式表示,用来识别BGP路由器。
 - Opt Parm Len(Optional Parameters Length):可选参数的长度。如果为0则没有可选参数。
 - Optional Parameters:是一个可选参数用于BGP验证或多协议扩展(Multiprotocol Extensions)等功能。每一个参数为一个(Parameter Type-Parameter Length-Parameter Value)三元组。
 
Update报文结构
- Withdrawn Routes Length :(2字节无符号整数) 不可达路由长度,表示Withdrawn Routes字段的数据长度。如果Withdrawn Routes Length字段数值为0,则表示Withdrawn Routes字段没有任何数据,在UPDATE消息中不会被显示。
 - Withdrawn Routes :(变长) 撤销路由。该字段包括一系列的IP地址前缀信息,以的格式来表示,比如<19,198.18.160.0>表示一个198.18.160.0 255.255.224.0的网络。
 - Path Attribute Length :(2字节无符号整数) 路由属性长度,表示Path Attribute字段的数据长度。如果Path Attribute Length数值为0,则表示Path Attribute字段没有任何数据,在UPDATE消息中不会被显示。
 - Network Layer Reachability Information :(变长) 网络可达信息。包括一系列的IP地址前缀。格式与撤消路由字段一样。
 
Keepalive报文结构
- KeepAlive 报文的组成只包括一个BGP数据报头。
 - 缺省情况下,发送KeepAlive 的时间间隔为 60 秒,Hold Time是180秒。每次从邻居处接收到KeepAlive 报文将重置Hold Time定时器,如果Hold Time定时器超时,就认为对等体Down掉。
 
Notification报文结构
- Errorcode:错误码。1字节长的字段。每个不同的错误都使用唯一的代码表示,而每一个错误码都可以拥有一个或多个错误子码,但如果某些错误码并不存在错误子码的话,则该错误子码字段以全0表示。
 - Errsubcode:错误子码。
 
 
 
BGP报文应用:
- BGP使用TCP建立连接,本地监听端口为179。和TCP连接建立相同,BGP连接的建立也要经过一系列的对话和握手。TCP通过握手协商通告其端口等参数,BGP的握手协商的参数有:BGP版本、BGP连接保持时间、本地的路由器标识(Router ID)、授权信息等。这些信息都在Open消息中携带。
 - BGP连接建立后,如果有路由需要发送则发送Update消息通告对端。Update消息发布路由时,还要携带此路由的路由属性,用以帮助对端BGP协议选择最优路由。在本地BGP路由变化时,要通过Update消息来通知BGP对等体。
 - 经过一段时间的路由信息交换后,本地BGP和对端BGP都无新路由通告,趋于稳定状态。此时要定时发送KEEPALIVE消息以保持BGP连接的有效性。对于本地BGP,如果在保持时间内,未收到任何对端发来的BGP消息,就认为此BGP连接已经中断,将断开此BGP连接,并删除所有从该对等体学来的BGP路由。
 - 当本地BGP在运行中发现错误时(如对端BGP版本本地不支持、本地BGP收到了结构非法的Update消息等),要发送Notification消息通告BGP对等体。本地BGP退出BGP连接时,也需发送Notification报文。
 

加载中…