当bgp的邻居状态机处于啥状态是,标志着与邻居的tcp连接已经正常建立
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当bgp的邻居状态机处于啥状态是,标志着与邻居的tcp连接已经正常建立相关的知识,希望对你有一定的参考价值。
BGP 是一种基于路径矢量的 EGP,主要用于 AS 之间的路由传递与控制,而 IGP 主要负责 AS 内部的路由发现和计算。 BGP 是基于 TCP 端口号 179 的路由协议,基于 TCP 的优点体现在:三次握手建立邻居的可靠机制;可以跨链路建立邻居关系; TCP 有确认重传机制,无需在 BGP 中完成; BGP 的认证由 TCP 完成的,认证字段在 TCP 头部的 option 中。BGP的状态机
Idle 状态是 BGP 初始状态。在 Idle 状态下, BGP 拒绝邻居发送的连接请求。只有在收到本设备的 Start 事件后, BGP 才开始尝试和其它 BGP 对等体进行 TCP 连接,并转至 Connect 状态。
在 Connect 状态下, BGP 启动连接重传定时器(Connect Retry),等待 TCP 完成连接。
如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报文,并转至 OpenSent状态。
如果 TCP 连接失败,那么 BGP 转至 Active 状态。
如果连接重传定时器超时, BGP 仍没有收到 BGP 对等体的响应,那么 BGP继续尝试和其它 BGP 对等体进行 TCP 连接,停留在 Connect 状态。
在 Active 状态下, BGP 总是在试图建立 TCP 连接。
如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报文,关闭连接重传定时器,并转至 OpenSent 状态。
如果 TCP 连接失败,那么 BGP 停留在 Active 状态。
如果连接重传定时器超时, BGP 仍没有收到 BGP 对等体的响应,那么 BGP转至 Connect 状态。
在 OpenSent 状态下, BGP 等待对等体的 Open 报文,并对收到的 Open 报文中的 AS 号、版本号、认证码等进行检查
如果收到的 Open 报文正确,那么 BGP 发送 Keepalive 报文,并转至OpenConfirm 状态。
如果发现收到的 Open 报文有错误,那么 BGP 发送 Notification 报文给对等体,并转至 Idle 状态。
在 OpenConfirm 状态下, BGP 等待 Keepalive 或 Notification 报文。如果收到Keepalive 报文,则转至 Established 状态,如果收到 Notification 报文,则转至Idle 状态。
在 Established 状态下, BGP 可以和对等体交换 Update、 Keepalive、 Routerefresh 报文和 Notification 报文。
如果收到正确的 Update 或 Keepalive 报文,那么 BGP 就认为对端处于正常运行状态,将保持 BGP 连接。
如果收到错误的 Update 或 Keepalive 报文,那么 BGP 发送 Notification 报文通知对端,并转至 Idle 状态。
Route-refresh 报文不会改变 BGP 状态。
如果收到 Notification 报文,那么 BGP 转至 Idle 状态。
如果收到 TCP 拆链通知,那么 BGP 断开连接,转至 Idle 状态。 参考技术A ① Idle(空闲):
Idle 是BGP连接的第一个状态,在空闲状态,BGP在等待一个启动事件,启动事件出现以后,BGP初始化资源,复位连接重试计时器(Connect-Retry),发起一条TCP连接,同时转入Connect(连接)状态。
② Connect(连接):
在Connect 状态,BGP发起第一个TCP连接,如果 连接重试计时器(Connect-Retry)超时,就重新发起TCP连接,并继续保持在Connect 状态,如果TCP 连接成功,就转入OpenSent 状态,如果TCP 连接失败,就转入Active 状态。
③ Active(活跃):
在Active状态,BGP总是在试图建立TCP 连接,如果连接重试计时器(Connect-Retry)超时,就退回到Connect 状态,如果TCP 连接成功,就转入OpenSent 状态,如果TCP 连接失败,就继续保持在Active状态,并继续发起TCP连接。
④ OpenSent(打开消息已发送):
在OpenSent 状态,TCP连接已经建立,BGP也已经发送了第一个Open报文,剩下的工作,BGP就在等待其对等体发送Open 报文。并对收到的Open报文进行正确性检查,如果有错误,系统就会发送一条出错通知消息并退回到Idle状态,如果没有错误,BGP就开始发送Keepalive 报文,并复位Keepalive 计时器,开始计时。同时转入OpenConfirm状态。
⑤ OpenConfirm(打开消息确认)状态:
在OpenConfirm状态,BGP发送一个Keepalive 报文,同时复位保持计时器,如果收到了一个Keepalive 报文,就转入Established 阶段,BGP邻居关系就建立起来了。如果TCP连接中断,就退回到Idle 状态。
⑥ Established(连接已建立):
在Established 状态,BGP 邻居关系已经建立,这时,BGP将和它的邻居们交换Update 报文,同时复位保持计时器。
一句话总结BGP特性
一、 BGP使用的是TCP的179端口建立连接,不使用组播IP,而是单播建立邻居,所以它无法自动发现邻居,需要手工配置邻居的更新地址。
二、 数据包:
- open: 用来建立邻居关系
- update:用来发送NLRI
- keepalive:用来维护邻居关系,每60秒发送一次。
- notification:路由器检查到差错后,用来中断邻居关系
- Route-refresh:请求对等体重新发送路由。
三、状态机 - idel:初始状态,不接受邻居发送的连接请求
- connect:等待BGP连接的完成;如果TCP连接成功,则向邻居发送open报文,进入opensent状态;如果TCP连接不成功,则转入Active状态。
- active: BGP进程会尝试与其邻居初始化TCP连接。如果连接成功,BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态。 如果TCP连接失败,那么BGP停留在Active状态。如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP将转入Connect状态。
- opensent:在此状态下,BGP等待对等体的Open报文,接到到Open报文后,会对接收到的AS号、版本号、认证码进行检查。如果接收到的Open报文正确,那么BGP发送KeepAlive报文,并转到Openconfirm状态;如果接收到的Open报文有误,那么BGP发送Notification报文给对等体,并转到Idle状态。
- openconfirm:BGP等待Keepalive或者Notification报文。如果收到Keepalive则转入Establish状态,如果收到Notification报文,则转到Idle状态。
- establish:已经建立了邻居关系,BGP可以和对等体交换Update、Keepalive、Route-refresh、Notification报文。如果收到正确的Update和Keepalive,将保持BGP连接。 如果收到错误的Update和Keepalive,那么BGP将发送Notification报文对知对端,并进入Idle状态。如果收到Notification或TCP拆除连接的通知,那么也会转入Idle状态。
四、 路径属性 - 公认可遵:所有路由器都要识别,并且必须包含在Update包中的属性。这些属性有:Origin、Next_hop、AS_Path
- 公认必遵:所有路由器都要识别,但不一定要包含在Update包中的属性。这些属性有:Local-Pref
- 可选传递:BGP路由器可以不识别这个属性,但它仍然会接收这类属性,并通知给其他对等体。这些属性有Community
- 可选非传递:BGP设备可以不识别此类属性,如果BGP设备不识别此类属性,则会忽略该属性,不会通告给对等体。这些属性有:MED、Originator_ID、Cluster_list
五、选路原则: 见 http://blog.51cto.com/liu008qing/2298895
六、RR: - 路由反射器,它打破了IBGP的水平分割。非客户机与非客户机之间不能传递路由。从客户端学到的路由传递给客户端和非客户端;从非客户端学到的路由传递给客户端;从EBGP学习到的路由传递给客户端和非客户端。
- Cluster:RR和它的客户端组成一个Cluster,同一个Cluster有相同的Cluster_ID。
- Cluster_List:当一条路由被RR反射以后,就会形成一个Cluster_list,当即RR接收到一条更新的路由时,会检查Cluster_list,如果已经有本地的Cluster_list,则会丢弃这条路由;如果收到的路由没有本地的Cluster ID,则会将其加入Cluster_list,并反射该路由。
- Originator_ID:Originator_ID用来标识路由的发起者,当一条路由第一次被反射的时候,RR将这个属性加入这条路由。如果一条路由已经有了Originator ID,则不会再添加了。当设备接收到这条路由时,会将Originator_id与Router_ID进行比较,如果相同则不接收这条路由。
- 虽然RR打破了IBGP的水平分割,但它通过自己的Cluster_list和Originator_ID来防止环路的产生。
- 两台路由之间可以互为RR客户端。
七、 联盟: - 联盟是将一个AS划分为更多的子AS的技术。
- 每个子AS建立全互联的邻居关系
- 子AS之间建立EBGP连接关系。
- 在配置时,BGP进程处起的是子AS的AS号,全局的AS号将成为联盟ID。
- 需要配置confed peer-as,这些AS指的是同一个全局AS内的其他的子AS号。
八、同步:BGP路由器不应该使用或向EBGP邻居通告从IBGP邻居那里学习到的BGP路由信息,除非该路由是本地的或者该路由存在于IGP数据库,即该路由也能从IGP学习到。
九、 最优:只有最优的路由才能传递给对等体。最优的前提条件:1. 关闭同步 2. 下一跳可达。
十、 有效: 不通告BGP的更新源做为业务网段
十一、防环:从IBGP学习到的路由不能再通告给IBGP,也就是说IBGP的路由只能传一跳。
以上是关于当bgp的邻居状态机处于啥状态是,标志着与邻居的tcp连接已经正常建立的主要内容,如果未能解决你的问题,请参考以下文章