BGP:边界网关路由协议
- BGP协议为不同AS间共享路由,工作时隔离两个AS的内部网络,形成一个独立的交互空间;且同时可以实施强大的策略来干涉选路;
特点
-
可控性
BGP协议不是路由的产生者,仅为搬运者,且AS间正常应该存在大量的链路来保障稳定性;故BGP协议传递的路由条目很难默认最佳选路;–需要管理员对路由进行大量的策略来干涉选路;
-
可靠性
为了避免对设备资源的占用选择了增量更新—仅触发、无周期
EGP基于TCP 179端口工作
TCP 仅基于单播通信 BGP协议需要单播建立邻居关系(手工指定邻居的ip地址)
BGP可以非直连建邻(peer),BGP承载于IGP之上;//要建立BDP必须要先能PING通 -
AS-BY-AS
数据包
首先通过TCP的三次握手来寻找到邻居;
Open 仅负责邻居关系的建立,正常进收发一次即可;携带route-id,hold time 默认3min
Keeplive 保活 周期1min查询邻居关系是否存在;实际保活TCP会话;
Update 携带路由条目 目标网络号+各种属性
Notification 出现错误数据时收发;
工作过程
- 管理员定义邻居的ip地址,前提要求对邻居ip可达; — IGP可达
- 启动BGP协议后,先目标端口为179进行TCP的三次握手来建立TCP的会话;
- 会话建立后,收发open报文来建立邻居关系,生成邻居表;
- 邻居关系建立后,邻居间使用update 共享路由条目,在收发了路由信息后,本地生成BGP表;
- Bgp表中装载本地发出及接收到的所有路由条目;
- 之后路由器将BGP表中的最优路径(不一定是最佳选路,仅为BGP参数最佳)加载于路由表中;
- 收敛完成!仅keeplive周期保活即可;
路由黑洞
-
如上图所示,R3,R4未跑BGP,其他路由器都跑了BGP。
过程:R1上的环回,先与R2建立TCP三次会话,通过单播把流量传递给R2,然后R2同样也把流量通过单播传递给R5,这一过程经过R3、R4,但只是经过而已,并未把流量传递给R3、R4,所以当R5要去找R1上的环回时就会把流量传递给R3、R4,但是R3、R4路由表上没有该流量,所以就丢弃,这就形成了路由黑洞
-
由于bgp协议可以非直连建立邻居关系,故若两台BGP邻居间存在未运行BGP协议的路由时;可能出现路由条目可以在控制层面正常单播传递,但数据层面流量经过未运行BGP协议的设备时,无法通行;控制层面可达,数据层面不可达;
-
解决办法
1、 物理或逻辑链路全连
2、 全连的BGP邻居关系,所有设备运行bgp;////没钱,这两天上课先用
3、 将BGP路由条目重发布到IGP协议中(不建议用,只适合在LAB中)
4、 最佳方案---MPLS 多协议标签交换
防环机制–水平分割
1)EBGP水平分割–防止EBGP环路
- 利用BGP条目中的as-path 属性,该属性将记录所有经过的AS编号;接收到的路由条目中若as-path中存在本地的AS号,将拒绝接收;
2)IBGP水平分割–防止IBGP环路
- 过程:BGP具有非直连的能力,如上图,当R1要pingR3时,需先把流量交给R2,但是R2会把流量给R1,这样就会一直形成环路
IBGP水平分割— 从一个IBGP邻居处学习到的路由条目不得传递给本地其他IBGP邻居; - 因为BGP协议具有非直连建立邻居的能力,故在一个AS内部只要设备运行BGP协议,那么其必然存在EBGP邻居关系(一定连接了其他的AS);IBGP水平分割规则将导致在一个AS内部所有运行了BGP协议的路由器间,均需要建立IBGP邻居关系,才能正常传递路由条目—建立邻居关系的配置成指数增长;