BGP:边界网关路由协议
目录
1.BGP协议为不同AS间共享路由,工作时隔离两个AS的内部网络,形成一个独立的交互空间;且同时可以实施强大的策略来干涉选路;靠对等体(<BGP边界路由器>)来进行沟通。 2. AS内部的(IGP)路由器没有另一个AS区域的路由,
BGP 设计特性:
1、可靠性—大量的路由共享,取消周期更新 TCP 179端口工作 TCP 仅基于单播通信 BGP协议需要单播建立邻居关系(手工指定邻居的ip地址(不自己选)) #BGP协议仅传递路由条目,但更新量依然很大;避免对设备资源的占用选择了增量更新(有变化才更新);故需要保障 #所有的路由传递到位—可靠;因此BGP协议基于TCP工作(只能单播) 2、<BGP可以非直连建邻(peer),BGP承载于IGP之上(意味着IGP的全网可达,才可以保证BGP的课进行)> 3、可控性 --- 建邻、路由宣告、选路控制(干涉选路造就了可控性)--及其容易进行 #可控性—BGP协议不是路由的产生者,仅为搬运者,且AS间正常应该存在大量的链路来保障稳定性;故BGP协议传递的路 #由条目很难默认最佳选路(路由多,不一定是最佳);--需要管理员对路由进行大量的策略来干涉选路; 4、AS-BY-AS 以一个AS为一跳
BGP 特点:
1)无类别路径矢量 -----距离矢量的升级版---AS--BY--AS 2)使用单播更新来发送所有信息;基于TCP 179端口工作 3)增量更新--仅触发无周期 4)具有丰富的属性来取代IGP中度量进行选路----多个参数控制协议 5)可以在进项和出项对流量实施强大的策略--可控性 6)默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径 7)BGP支持认证和聚合(汇总)
BGP的工作过程:
1.管理员定义邻居的ip地址,前提要求对邻居ip可达<IGP可达> 2.启动BGP协议后,先目标端口为179进行TCP的三次握手来建立TCP的会话; 3.会话建立后,收发open报文来建立邻居关系,生成邻居表; 4.邻居关系建立后,邻居间使用update 共享路由条目,在收发了路由信息后,本地生成BGP表; 5.Bgp表中装载本地发出及接收到的所有路由条目;之后路由器将BGP表中的最优路径(不一定是最佳选路,仅为BGP参数最佳)加载于路由表中; 6.收敛完成!仅keeplive周期保活即可;
BGP数据包 :
首先通过TCP的三次握手来寻找到邻居; Open 仅负责邻居关系的建立,正常仅收发一次即可;携带route-id,hold time 默认3min Keeplive 保活 周期1min查询邻居关系是否存在;实际保活TCP会话; Update 携带路由条目 目标网络号+各种属性 Notification 出现错误数据时收发;
BGP的路由黑洞;
由于bgp协议可以非直连建立邻居关系,故若两台BGP邻居间存在未运行BGP协议的路由时;可能出现路由条目可以在控制层面正常单播传递,但数据层面流量经过未运行BGP协议的设备时,无法通行; 控制层面可达,数据层面不可达; 解决方法: 1、物理或逻辑链路全连 2、全连的BGP邻居关系,所有设备运行bgp(建立IBGP关系); 3、将BGP路由条目重发布到IGP协议中(LAB)(路由过于庞大,占用大量资源) 4、最佳方案---MPLS 多协议标签交换
BGP的防环机制;--水平分割
1、EBGP水平分割—防止EBGP环路 利用BGP条目中的as-path 属性,该属性将记录所有经过的AS编号;接收到的路由条目中若as-path中存在本地的AS号,将拒绝接收;
2、IBGP水平分割—防止IBGP环路 基于AS-BY-AS特性,BGP的路由条目默认在一个AS内部传递时,其属性不变化; IBGP水平分割--- 从一个IBGP邻居处学习到的路由条目不得传递给本地其他IBGP邻居;因为BGP协议具有非直连建立邻居的能力,故在一个AS内部只要设备运行BGP议,那么其必然存在EBGP邻居关系(一定连接了其他的AS);IBGP水平分割规则将导致在一个AS内部所有运行了BGP协议路由器间,均需要建立IBGP邻居关系,才能正常传递路由条目---建立邻居关系的配置成指数增长;可以使用联邦和路由反射器来解决该问题;
补充
1、非直连邻居
4、结构突变
1、新增网段 – BGP更新源设备将使用update来告知本地所有的邻居 2、断开网段 – BGP更新源设备将使用update来告知本地所有的邻居 3、无法沟通 – 3min hold time到时时断开邻居关系和TCP会话,之后删除从该邻居处学习到的所有信息;
6、IGP 和 BGP 对比
IGP追求:收敛速度快,选择路径佳(无环),占用资源少 ,hop-by-hop EGP追求:可控性 ,可靠性 ,AS-BY-AS
7、BGP的类别
EBGP:外部的BGP邻居关系,两台处于不同AS的BGP路由器间建立的邻居关系 IBGP:内部的BGP邻居关系,两台处于同一个AS内的BGP路由器间的建立的邻居关系
8、AS对等体的备份
9、冗余性(相当于备份)
10、
<Loopback>接口非常稳定,AS间与AS内都可以借助的冗余拓扑来保证可靠性。
11、状态机
状态名称 | 用途 |
---|---|
Idle | 开始准备TCP的连接并监视远程对等体,启用BGP时,要准备足够的资源 |
Connect | 正在进行TCP连接,等待完成中,认证都是在TCP建立期间完成的。如果TCP连接建立失败则进入Active状态,反复尝试连接 |
Active | TCP连接没建立成功,反复尝试TCP连接 |
OpenSent | TCP连接已经建立成功,开始发送Open包,Open包携带参数协商对等体的建立 |
OpenConfirm | 参数、能力特性协商成功,自己发送Keepalive包,等待对方的Keepalive包 |
Established | 已经收到对方的Keepalive包,双方能力特性经协商发现一致,开始使用Update通告路由信息 |
Active 与 Established 是稳态
12、IBGP水平分割—防止环路的一些影响
当BGP路由器R1将路由传递给BGP路由器R2时,由于IBGP水平分割,R2无法将BGP路由传递给R4,R4将无法学习到路由。为解决该问题可以采用AS内IBGP全互联的方式,即:R2、R4之间建立非直连的IBGP对等体关系,以此让BGP路由器R2将路由传递给BGP路由器 R4。
实验
如上图
第一步,配置ip
R1
#
interface GigabitEthernet0/0/0
ip address 10.1.1.1 255.255.255.0
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.0
#
interface LoopBack1
ip address 11.1.1.1 255.255.255.0
R2
#
interface GigabitEthernet0/0/0
ip address 10.1.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 20.1.1.1 255.255.255.0
#
interface LoopBack0
ip address 2.2.2.2 255.255.255.0
R3
#
interface GigabitEthernet0/0/0
ip address 20.1.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 30.1.1.1 255.255.255.0
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.0
R4
#
interface GigabitEthernet0/0/0
ip address 30.1.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 40.1.1.1 255.255.255.0
#
interface GigabitEthernet0/0/2
ip address 50.1.1.1 255.255.255.0
#
interface LoopBack0
ip address 4.4.4.4 255.255.255.0
R5
#
interface GigabitEthernet0/0/0
ip address 40.1.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 50.1.1.2 255.255.255.0
#
interface LoopBack1
ip address 12.1.1.1 255.255.255.0
第二部,静态路由 与 rip
R1与R2
R1
#
ip route-static 2.2.2.0 255.255.255.0 10.1.1.2
R2
#
ip route-static 1.1.1.0 255.255.255.0 10.1.1.1
R4与R5
R4
#
ip route-static 5.5.5.0 255.255.255.0 40.1.1.2
ip route-static 5.5.5.0 255.255.255.0 50.1.1.2
R5
#
ip route-static 4.4.4.0 255.255.255.0 40.1.1.1
ip route-static 4.4.4.0 255.255.255.0 50.1.1.1
R2-R3-R4
R2
#
rip 1
version 2
network 2.0.0.0
network 20.0.0.0
R3
#
rip 1
version 2
network 3.0.0.0
network 20.0.0.0
network 30.0.0.0
R4
#
rip 1
version 2
network 30.0.0.0
network 4.0.0.0
第三步,BGP的配置
R1-R2
R1
#
bgp 1
router-id 1.1.1.1
peer 2.2.2.2 as-number 2
peer 2.2.2.2 ebgp-max-hop 2
peer 2.2.2.2 connect-interface LoopBack0
R2
#
bgp 2
router-id 2.2.2.2
peer 1.1.1.1 as-number 1
peer 1.1.1.1 ebgp-max-hop 2
peer 1.1.1.1 connect-interface LoopBack0
peer 3.3.3.3 as-number 2
peer 3.3.3.3 connect-interface LoopBack0
peer 3.3.3.3 next-hop-local
peer 4.4.4.4 as-number 2
peer 4.4.4.4 connect-interface LoopBack0
peer 4.4.4.4 next-hop-local
R3
#
bgp 2
router-id 3.3.3.3
peer 2.2.2.2 as-number 2
peer 2.2.2.2 connect-interface LoopBack0
peer 2.2.2.2 next-hop-local
peer 4.4.4.4 as-number 2
peer 4.4.4.4 connect-interface LoopBack0
peer 4.4.4.4 next-hop-local
R4
#
bgp 2
router-id 4.4.4.4
peer 2.2.2.2 as-number 2
peer 2.2.2.2 connect-interface LoopBack0
peer 2.2.2.2 next-hop-local
peer 3.3.3.3 as-number 2
peer 3.3.3.3 connect-interface LoopBack0
peer 3.3.3.3 next-hop-local
peer 5.5.5.5 as-number 3
peer 5.5.5.5 ebgp-max-hop 2
peer 5.5.5.5 connect-interface LoopBack0
R5
#
bgp 3
router-id 5.5.5.5
peer 4.4.4.4 as-number 2
peer 4.4.4.4 ebgp-max-hop 2
peer 4.4.4.4 connect-interface LoopBack0
第四步,BGP的宣告
R1
[Huawei-bgp] network 11.1.1.0 255.255.255.0
R5
[Huawei-bgp] network 12.1.1.0 255.255.255.0
第五步,试验检测