华三-BGP

第一章 知识点

BGP特点

  BGP使用TCP为传输层协议,TCP端口号179。路由器之间的BGP会话基于TCP连接而建立。
  两个建立BGP会话的路由器互为对等体(Peer)。BGP对等体之间交换BGP路由表。
  BGP能够承载大批量的路由前缀,用于大规模的网络中。

BGP的路径矢量特征

  BGP通常被称为路径矢量路由协议(Path-Vector Routing Protocol)。
  每条BGP路由都携带着多种路径属性(Path attribute),在各种路径属性种,AS_Path属性是非常关键的每一个。AS_Path属性记录了BGP路由传递过程种所经过的AS号,实际上它是一个AS号的列表。
  BGP路由器不接受AS_Path中包含其自身AS号的路由更新。AS_Path属性值的长短(AS号的个数)会作为一个比较的依据,影响BGP路由选择的决策。
  这就跟BGP的选路原则中的5条,优选AS_Path的最短的路径优先。
  还可以防环;

BGP peer

  运行BGP的路由器被称为BGP发言者,或者BGP路由器;
  BGP对等体也叫BGP邻居,与OSPF、RIP等协议不同,BGP的会话是基于TCP建立的。建立BGP对等体关系的两台路由器并不要求必须直连;
  BGP存在两种对等体关系类型:EBGP及IBGP。针对这两种对等体类型,BGP处理路由的操作存在较大差异;

EBGP(External BGP)

 位于不同自治系统的BGP路由器之间的BGP邻接关系。
  1. 两台路由器之间要建立EBGP对等体关系,必须满足两条条件;
  2. 两个路由器所属AS不同(也即AS号不同);
  3. 在配置BGP时,Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立;

IBGP(Internal BGP)

 位于相同自治系统的BGP路由器之间的BGP邻接关系。
  1. 两台路由器之间要建立IBGP对等体关系,必须满足两个条件;
  2. 两个路由器所属AS需相同(也即AS号相同);
  3. 在配置BGP时,Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立;

BGP邻居

 BGP的同AS号中使用回环接口来建立IBGP邻居。不同AS号使用互联地址段来建立EBGP邻居。
 IBGP:运行与同一AS内部的BGP称为IBGP。为了防止AS内产生环路,BGP设备不将从IBGP对等体学到的路由通告给其他IBGP对等提,并与所有IBGP对等体建立全连接。为了解决IBGP对等体的连接数量太多的问题,BGP设计了路由反射器和BGP联盟。
 EBGP:运行与不同AS之间的BGP称为EBGP。为了防止AS间产生环路,当BGP设备接受EBGP对等体发送的路由时,会将带有本地AS号的路由丢弃。
 BGP邻居建立的条件:
  1. 邻居地址可达
  2. 自身配置的邻居AS号=邻居配置的AS号
  3. 数据包的源IP=对方配置的邻居IP
 BGP使用TCP作为其传输层协议(端口号179),提高了协议的可靠性
 BGP是一种路径矢量路由协议,它采用到达目的地址所经过的AS列表来衡量到达目的地址的距离。
 BGP是一种EGP(外部网关协议),主要是在于控制路由的传播和选择最佳路由。

BGP的报文

 BGP对等体间通过以下5种报文进行交互,其中Keepalive报文为周期性发送,其余报文为触发式发送:
  1. Open报文:协商BGP邻居的各项参数,建立邻居关系。用于建立BGP对等体连接;
  2. Update报文:连接建立后,有路由需要发送或路由变化时,发送Update通告对端路由信息。用于在对等体之间交换路由信息;
  3. Notification报文:当BGP在运行中发现错误时,要发送Notification报文通告BGP对端。用于中断BGP连接;
  4. Keepalive报文:维持BGP对等体状态,定时发送Keepalive报文义保持BGP对等体关系的有效性。用于保持BGP连接;
  5. Route-refresh报文:用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新能力的BGP设备会发送和响应此报文。当路由策略发生变化时,触发请求对等体重新通告路由;

AS中路由黑洞问题

  在传输AS(TransitAS)65102中,BCDE四台路由器运行了OSPF,确保AS内部路由实现互通。B与E运行BGP,并且两者建立IBGP对等体关系(两者并非直连,但是对与BGP,这是允许的,仅需确保两者之间能够正确建立TCP连接即可)。C与D并未运行BGP
  A将本地路由1.1.1.0/24通告到BGP,最终F能够通过BGP学习到该条路由。C、D由于并未运行BGP,因此无法通过BGP学习到1.1.1.0/24路由。
  如此以来,F发往1.1.1.0/24网络的数据包在到达C/D后将被丢弃,在C及D路由器这里,就出现了黑洞路由。

避免黑洞路由

 1. 若路由器从IBGP对等体学习到一条BGP路由,它不能使用该条路由,更不能将路由传递给之间的EBGP对等体,除非它又从IBGP学习到该路由,这就是BGP的同步规则。
 2. 同步规则的存在,可以防止数据在传输AS内由于转发设备没有目标网络的路由而被丢弃的问题,也就是所谓的黑洞路由。
 3. 为了使得BGP路由能够正常交互,我们就不得不在该传输AS内所有路由器上都运行BGP,且构建全互联的IBGP对等体关系;或者在AS边界上将BGP路由引入IGP。显然这两种方法各有利弊,尤其是后者,盲目地将BGP路由引入IGP是非常危险的。
 4. 同步规则的存在意义是避免出现黑洞问题,而如果AS内路由问题已经解决,那么同步规则也就没有必要再开启了。

解决黑洞问题解决办法1

  将BGP路由引入到IGP,并关闭同步规则

传输AS中的黑洞问题解决办法2

  传输AS内所有路由器均运行BGP,实现BGP对等体关系的全互联,并关闭同步规则。

BGP6中状态机

 BGP的6种状态机:
  1. 空闲(IdIe)
   尝试建立TCP连接开始准备TCP的连接并监视远程Peer启动TCP连接,启用BGP时,要准备足够的资源;
  2. 连接(connect)
   发TCP包,正在就行TCP连接,等待完成中,认证都是在TCP建立期间完成的。如果TCP连接建立失败则进入Active状态,反复尝试连接;
  3. 活跃(Active)
   发TCP包,TCP连接没建立成功,反复尝试TCP连接;
  4. Open报文已发送(OpenSent)
   发Open包TCP连接建立已经成功,开启发送Open包,Open包携带参数协商对等体的建立;
  5. Open报文已确认(OpenConfirm)
   发Keepalive包参数、能力特性协商成功,自己发送Keepalive包,等待对方的Keepalive包;
  6. 已建立(Established)
   发Update包已经收到对方的Keepalive包,双方能力特性协商发现一致,开始使用Update通告路由信息;
image
image

IBGP水平分割规则

  - BGP路由在AS之间的防环依赖于AS_Path路径属性,当路由器收到BGP路由后,发现该路由所携带的AS_Path属性中出现了其自己所处的AS号,则路由器认为出现了路由环路,它将忽略该条路由。
  - AS_Path属性仅在路由离开AS时才会被更改,而BGP路由在AS内部传递时,路由的AS_Path属性值不会发生改变,如此一来,IBGP路由的防环就无法依赖AS_Path了。
  - 为了防止BGP路由在AS内部传递时发生环路,BGP要求:”路由器不能将自己从IBGP对等体学习到的路由再传递给其他IBGP对等体”,这就是IBGP水平分割规则。
  - 由于IBGP水平分割原则的存在,BGP要求AS内须保证IBGP对等体关系的全互联,因为只有这样,才能够确保每一个路由器都能学习到路由。
  - C从E学习到的IBGP路由,由于水平分割规则的限制,不能够传递给B路由器,这将导致B无法学习到F通告的BGP路由。
image
  - 考虑到IBGP水平分割规则的限制,为了使得AS内的路由器都能够正常学习到BGP路由,我们不得不建立一个全互联的IBGP对等体关系
  - 然而再AS内的所有BGP路由器之间维护全互联的IBGP对等体关系是需要耗费大量资源的,为了的可扩展性、可维护性也非常差。解决方法:
   (1)路由反射器
   (2)联邦
image

路由反射器

  RR(Route Reflector)路由反射器:由于水平分割的原因,为了保证AS内所有的BGP路由器都能学习到完整的BGP路由,就必须在AS内实现IBGP全互联。
  然而实现IBGP全互联存在诸多短板:
   1. 路由器需维护大量的TCP及BGP连接,尤其在路由器数量较多时。
   2. AS内BGP网络的可扩展性较差,因为通过纯手工配置命令。
  - 路由器反射器的工作原理:
   RR的核心作用是打破IBGP的水平分割规矩。在BGP网络中,选择一台性能较好的设备作为RR,其他设备与RR建立IBGP邻居关系。RR会将从一个IBGP邻居收到的路由反射给其他IBGP邻居,从而减少全互联的需求。
  - RR在接收BGP路由时:
   如果收到非客户端传来的BGP路由,则会反射给所有客户端。
   如果收到客户端传来的BGP路由,则会反射给所有设备(指与RR建立邻居关系的设备)
   如果RR学习到EBGP邻居传来的EBGP路由,则发送给所有客户、非客户IBGP对等体(类似于与RR建立邻居关系的所有设备)。
   RR的反射规则有一句口诀:非非不传,其它都传。
   关于非非不传,指的是非客户端不传非客户端。

BGP联盟

  当AS规模庞大时,为简化IBGP全互联架构,引入了联盟技术。联盟将一个大的AS划分为多个小的子AS(也称为成员AS),子AS之间通过成员EBGP邻居关系连接,与外部AS建立联盟EBGP邻居关系。列如,将AS123划分为AS2,AS3和AS45等子AS,它们之间建立成员EBGP邻居关系。
  - 联盟的路由传递特点:
   成员EBGP邻居之间传递路由时,将其当做IBGP等同对待,默认不会修改下一跳属性。因此,在联盟内部,建议各成员AS使用相同的IGP协议,以确保路由的下一跳可达。若使用不同的IGP协议,可能会因下一跳不可达导致路由丢弃。

BGP路由通告规则

  - 当存在多条路径时,路由器只选取最优(Best)的BGP路由来使用(没有激活负载均衡的情况下);
  - BGP只把自己使用的路由,也就是自己认为最优的路由传递给对等体;
  - 路由器从EBGP对等体获得的路由会传递给它所有的BGP对等体(包括EBGP和IBGP对等体);
  - 路由器从IBGP对等体获得的路由不会传递给它的IBGP对等体(存在反射器RR的情况除外);
  - 路由器从IBGP对等体获得的路由是否通告给它的EBGP对等体要视IGP和BGP同步的情况来决定。

BGP的三张表

  BGP邻居表:列出本设备的BGP对等体,以及对等体的状态等信息;
image
  BGP路由表:列出本设备发现的所有BGP路由,如果到达同一目的地存在多条路由,则将路由都进行罗列,但每个目的地只会优选一条路由;
image
  普通路由表:设备的路由表,被优选的BGP路由会被加载到路由表中使用;

第二章拓扑图

image

第三章 需求

  某企业网络使用ISIS作为IGP协议实现内部网络的互联互通,EGP使用BGP实现外部网络互联互通,现有如下需求:
   1. AS100、AS200和AS300使用ISIS实现内部互联
   2. 在AS和AS之间配置BGP实现自治系统互联。
   3. AR1和A2作为RR设备。

第四章 操作步骤

IP地址规划

MSR36-20_3(AR1)

image

MSR36-20_4(AR2)

image

MSR36-20_5(AR3)

image

MSR36-20_6(AR4)

image

MSR36-20_7(AR5)

image

MSR36-20_8(AR6)

image

MSR36-20_9(AR7)

image

MSR36-20_10(AR8)

image

MSR36-20_11(AR9)

image

MSR36-20_12(AR10)

image

搭建基础网络

MSR36-20_3(AR1)

image
image

isis邻居

image

MSR36-20_4(AR2)

image
image

Isis邻居

image

MSR36-20_5(AR3)

image
image

Isis邻居

image

MSR36-20_6(AR4)

image
image

Isis邻居

image

MSR36-20_7(AR5)

image
image
image

Isis邻居

image

MSR36-20_8(AR6)

image
image
image

Isis邻居

image

MSR36-20_9(AR7)

image
image

Isis邻居

image

MSR36-20_10(AR8)

image
image

Isis邻居

image

MSR36-20_11(AR9)

image
image

Isis邻居

image

MSR36-20_12(AR10)

image
image

Isis邻居

image

配置IBGP

MSR36-20_3(AR1)

image

配置IBGP的对等体以及AS号
  peer 2.2.2.2 as-number 100 /对端的回环接口IP地址以及BGP的AS号
  peer 2.2.2.2 connect-interface LoopBack0 /设置对端回环接口的更新源为LoopBack口。指定发起连接时使用的源地址

IBGP邻居

image

MSR36-20_4(AR2)

image

IBGP邻居

image

MSR36-20_5(AR3)

image

IBGP邻居

image

MSR36-20_6(AR4)

image

IBGP邻居

image

MSR36-20_7(AR5)

image

IBGP邻居

image

MSR36-20_8(AR6)

image

IBGP邻居

image

配置EBGP

MSR36-20_5(AR3)

image

EBGP邻居

image

MSR36-20_6(AR4)

image

EBGP邻居

image

MSR36-20_7(AR5)

image

EBGP邻居

image

MSR36-20_8(AR6)

image

EBGP邻居

image

MSR36-20_9(AR7)

image

EBGP邻居

image

MSR36-20_10(AR8)

image

EBGP邻居

image

MSR36-20_11(AR9)

image

EBGP邻居

image

MSR36-20_12(AR10)

image

EBGP邻居

image

设置下一跳

  1.在AR7上创建了70.70.70.70的地址network到BGP中。看AR3中的BGP学到的这条路由是否是最优的。
image

在AR3上查看是有效且最优的。

  2.需要在AR1上查看70.70.70.70是否有效和最优的路径
image

发现AR1上70.70.70.70/32的路由不是有效的路由,这是因为AR3将来自EBGP对等体AR7的路由传递给IBGP对等体AR1时默认会保持下一跳属性不变,但10.0.37.7对于AR1而言是不可达的,所以AR1会认为70.70.70.70/32的路由不是有效的路由,为此我们需要在AR3上将70.70.70.70/32的路由下一跳设为本地。

MSR36-20_5(AR3)

image

MSR36-20_6(AR4)

image

MSR36-20_7(AR5)

image

MSR36-20_8(AR6)

image

查看AR1上的BGP路由表

image

下一跳变成了3.3.3.3。而且是最优的路径

路由反射器(RR)

在Ar5上查看Bgp路由表中查看,结果发现没有70.70.70.70的路由

image

MSR36-20_3(AR1)

image

MSR36-20_4(AR2)

image

AR5路由表查看

image

发现有70.70.70.70的地址了,然后下一跳是4.4.4.4。还是最优的。

image

Cluster list 是RR的客户端IP地址

第五章 结果

image

第六章 BGP清理进程命令

reset bgp all //清楚BGP进程
tracert -a 1.1.1.1 70.70.70.70 //通过跟源地址来跟踪

posted @ 2025-08-15 16:39  乐泉1  阅读(26)  评论(0)    收藏  举报