一、题目
三条路由条目的路由属性如图所示,假设三条路由条目下一跳均可达,当这三条路由条目按顺序先后到达BP路由器后,在默认情况下最终BGP会优选哪一条路由条目?
A、Router B
B、Router C
C、Router A
二、答案
C
三、解析
这道题考察的是BGP优选规则,我们可以根据BGP的十三条选路规则
- 如果此路由的下一跳不可达,忽略此路由
- Preferred-Valnue值数值越高越优先,华为私有属性,仅本地有意义
- Local-Preference值最高的路由优先
- 本地生成的路由
- AS路径的长度最短的路径优先
- 比较Origin属性,IGP优于EGP,EGP优于Incomplete
- 选择MED较小的路由
- EBGP路由优于IBGP路由
- BGP优先选择到BGP下一跳的IGP度量值最低的路径
- 当以上全部相同,则为等价路由,可以负载分担(注意: AS_Path必须一致,当负载分担时,以下3条原则无效)
- 比较Cluster_list长度,短者优先
- 比较Originator_ID(如果没有Originator_ID,则用Router_ID比较),选择数值较小的路径。
- 比较对等体的IP address,优选从具有较小IP Address的对等体学来的路由
这里可以推断出着BGP会根据第7条也就是MED来进行选举,从图中我们可以看出Router A的MED最小,所以会优选RouterA,故选答案C
四、扩展–BGP工作原理
BGP状态机
Open 报文:用于建立 BGP 对等体连接。
Update 报文:用于在对等体之间交换路由信息。
Notification 报文:用于中断 BGP 连接。
Keepalive 报文:用于保持 BGP 连接。
Route-refresh 报文:用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的 BGP 设备会发送和响应此报文。
BGP状态机
如图所示,BGP 对等体的交互过程中存在 6 种状态机:空闲状态(Idle)、连接状态(Connect)、活跃(Active)、Open 报文已发送(OpenSent)、Open 报文已确认(OpenConfirm)和连接已建立
(Established)。在 BGP 对等体建立的过程中,通常可见的 3 个状态是:Idle、Active 和Established。
1)Idle 状态是 BGP 初始状态。在 Idle 状态下,BGP 拒绝邻居发送的连接请求。只有在收到本设备的Start 事件后,BGP 才开始尝试和其它 BGP 对等体进行 TCP 连接,并转至 Connect 状态。
2)在 Connect 状态下,BGP 启动连接重传定时器(Connect Retry),等待 TCP 完成连接。
如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报文,并转至 OpenSent 状态;
如果 TCP 连接失败,那么 BGP 转至 Active 状态;
如果连接重传定时器超时,BGP 仍没有收到 BGP 对等体的响应,那么 BGP 继续尝试和其它 BGP 对等体进行 TCP 连接,停留在 Connect 状态。
3)在 Active 状态下,BGP 总是在试图建立 TCP 连接。
如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报文,关闭连接重传定时器,并转至 OpenSent 状态;
如果 TCP 连接失败,那么 BGP 停留在 Active 状态;
如果连接重传定时器超时,BGP 仍没有收到 BGP 对等体的响应,那么 BGP 转至 Connect 状态。
4)在 OpenSent 状态下,BGP 等待对等体的 Open 报文,并对收到的 Open 报文中的 AS 号、版本号、认证码等进行检查。
如果收到的 Open 报文正确,那么 BGP 发送 Keepalive 报文,并转至 OpenConfirm 状态;
如果发现收到的 Open 报文有错误,那么 BGP 发送 Notification 报文给对等体,并转至 Idle 状态。
5)在 OpenConfirm 状态下,BGP 等待 Keepalive 或 Notification 报文。
如果收到 Keepalive 报文,则转至 Established 状态,
如果收到 Notification 报文,则转至 Idle 状态。
6)在 Established 状态下,BGP 可以和对等体交换 Update、Keepalive、Route-refresh 报文和Notification 报文。
如果收到正确的 Update 或 Keepalive 报文,那么 BGP 就认为对端处于正常运行状态,将保持 BGP 连接。
如果收到错误的 Update 或 Keepalive 报文,那么 BGP 发送 Notification 报文通知对端,并转至 Idle状态。Route-refresh 报文不会改变 BGP 状态。
如果收到 Notification 报文,那么 BGP 转至 Idle 状态。
如果收到 TCP 拆链通知,那么 BGP 断开连接,转至 Idle 状态。
BGP对等体之间的交互原则
BGP 设备将最优路由加入 BGP 路由表,形成 BGP 路由。BGP 设备与对等体建立邻居关系后,采取以下交互原则:
从 IBGP 对等体获得的 BGP 路由,BGP 设备只发布给它的 EBGP 对等体。
从 EBGP 对等体获得的 BGP 路由,BGP 设备发布给它所有 EBGP 和 IBGP 对等体。
当存在多条到达同一目的地址的有效路由时,BGP 设备只将最优路由发布给对等体。
路由更新时,BGP 设备只发送更新的 BGP 路由。
所有对等体发送的路由,BGP 设备都会接收。