BGP详解

No Comments CISCO

 

为什么使用BGP

            BGP是可靠的,基于TCP(Port Numer 179)进行建立和维护连接,并且具有并使用TCP的滑动窗口的机制来更新路由表,可以支持一次性的大量路由条目的更新. BGP是增量更新,同时也是触发更新;周期性的发送Keepalive 信息来验证TCP连接是否正常,以确保对方的路由器状态是正常的。

             PS:EIGRP(使用IPV4协议号89)和OSPF-V2(使用IPV4协议号88)使用One-One 窗口机制,OSPF一次更新100条路由。

BGP的使用原则

1.   多条路径时,BGP Speaker只选最优的给自己使用

2.   BGP Speaker只把自己的路由通告给邻居

3.   从EBGP获得的路由会向它所有BGP 邻居通告(EBGP/IBGP)

BGP Speaker从IBGP获得的路由不会通告给它的IBGP邻居(BGP 的水平分割)IGP是基于端口的水平分割;而IBGP是基于邻居的水平分割。水平分割的作用是避免产生路由环路。

4.   BGP Speaker从IBGP获得的路由是否通告给它的EBGP邻居要服从IGP和BGP是否同步来决定

5.   邻居关系一建立,BGP Speaker就把自己所有的BGP最优路由通告给新的邻居

 

BGP邻居协商过程(4Message

   1. Open (code 1):用于建立连接,包含版本号(如BGP3/BGP4)Hold Time=180s(是一个协商的过程,以较小的Hold Time为准),Router-ID(OSPF和BGP可以手动配置),AS号(范围从1~65535,其中64512~65535 的AS编号范围留作私有);

2. KeepAlives(code 4):周期发送用于维护连接检查路径(这个包是不可靠的),T=Hold Time/3, Hold Time=0 => No KeepAlive.,keepalive 是个19 字节周期发送的BGP 消息头标,没有数据域。

3. Update(code 2):消息包含了三个组件:网络层可达性消息(NLRI)、路径属性和被撤销的路由。包括到达目的网络的路径和属性,更新路由信息用,一次更新只有一条路径,但可以有多条网络。Update可以删除(宣告不可达)和增加(宣告可达)路由.其内容是前缀的长度。

4. Notification(code 3):网络中出现错误(Error),检测到后断开连接并发送通知给对方。

5.Route-Reflesh message:一个可选的message (negotiated during capability advertisement) that is sent to request dynamic BGP route updates from the Adj-RIB-Out table of a remote BGP speaker

PS :BG Ptime

在BGP路由配置模式下可以配置全局的BGP timer :timers bgp 70 210

对于特定的neighbor可以使用特定的 BGP timer:neighbor 172.17.1.2 timers 80 240

过程:Idel,connect,open sent,open confirm,establish。

BGP邻居建立会话的5种状态:

------中间广告---------

1.        Idle:查找路由表,该过程BGP对它的资源进行初始化,复位一个连接重试计时器,发起一条TCP 连接,并开始倾听远程对等体所发起的连接。

2.   Connect:找到路由表后进行TCP三次握手,TCP 连接成功,则转到OpenSent状态,TCP连接失败,则转到active 状态,将尝试再次连接。

3.   Open Sent:握上手后发送Open message消息,等待其对等体发送打开消息,如果出错,则发送一条出错消息并退回空闲状态,如果无错,则开始发送Keepalive 并复位keepalive 计时器。

4.   Open Confirm:收到对方发来的Open消息,如果收到keepalive 消息,BGP 就进入established状态,邻居关系协商完成;如果系统收到一条更新或keepalive 消息,它将重新启动保持计时器;如果收到Notification消息,BGP 就退回到空闲状态。

5.   Established:会话建立,邻居关系协商过程最终状态;这时BGP将开始与它的对等体交换路由更新数据包。

PS: Active状态:当路由器发送出OPEN包给邻居等待回应,如果长时间未接收到回应则超时,超时后状态更改为Idle,试图发起TCP连接获得对等体,成功转到Open Sent状态,连接重试计时器超时,退回连接状态。,这是由于TCP链路上出现了问题所致。??

产生问题的原因主要有:

1.          Neighbor命令后面的ip-address配置有错;

2.          没有打上Neighbor命令(两边都要)

3.          更新源错误,或者更新源不可达。

  Debug信息:

Aspen#

18:24:33: BGP: 192.168.1.221 went from Idle to Active

18:24:41: BGP: 192.168.1.221 went from Active to OpenSent

18:24:42: BGP: 192.168.1.221 went from OpenSent to OpenConfirm

18:24:42: BGP: 192.168.1.221 went from OpenConfirm to Established

18:24:43: BGP: 192.168.1.221 computing updates, neighbor version 0, table version

n 1, starting at .0

18:24:43: BGP: 192.168.1.221 update run completed, ran for 0ms, neighbor version

0, start version 1, throttled to 1, check point net .0

BGP Input Events

BGP的3个数据库

         邻居表、BGP转发表(也叫转发库)、IP路由表。

发表评论