华三-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通告路由信息;


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路由。

- 考虑到IBGP水平分割规则的限制,为了使得AS内的路由器都能够正常学习到BGP路由,我们不得不建立一个全互联的IBGP对等体关系
- 然而再AS内的所有BGP路由器之间维护全互联的IBGP对等体关系是需要耗费大量资源的,为了的可扩展性、可维护性也非常差。解决方法:
(1)路由反射器
(2)联邦

路由反射器
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对等体,以及对等体的状态等信息;

BGP路由表:列出本设备发现的所有BGP路由,如果到达同一目的地存在多条路由,则将路由都进行罗列,但每个目的地只会优选一条路由;

普通路由表:设备的路由表,被优选的BGP路由会被加载到路由表中使用;
第二章拓扑图

第三章 需求
某企业网络使用ISIS作为IGP协议实现内部网络的互联互通,EGP使用BGP实现外部网络互联互通,现有如下需求:
1. AS100、AS200和AS300使用ISIS实现内部互联
2. 在AS和AS之间配置BGP实现自治系统互联。
3. AR1和A2作为RR设备。
第四章 操作步骤
IP地址规划
MSR36-20_3(AR1)

MSR36-20_4(AR2)

MSR36-20_5(AR3)

MSR36-20_6(AR4)

MSR36-20_7(AR5)

MSR36-20_8(AR6)

MSR36-20_9(AR7)

MSR36-20_10(AR8)

MSR36-20_11(AR9)

MSR36-20_12(AR10)

搭建基础网络
MSR36-20_3(AR1)


isis邻居

MSR36-20_4(AR2)


Isis邻居

MSR36-20_5(AR3)


Isis邻居

MSR36-20_6(AR4)


Isis邻居

MSR36-20_7(AR5)



Isis邻居

MSR36-20_8(AR6)



Isis邻居

MSR36-20_9(AR7)


Isis邻居

MSR36-20_10(AR8)


Isis邻居

MSR36-20_11(AR9)


Isis邻居

MSR36-20_12(AR10)


Isis邻居

配置IBGP
MSR36-20_3(AR1)

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

MSR36-20_4(AR2)

IBGP邻居

MSR36-20_5(AR3)

IBGP邻居

MSR36-20_6(AR4)

IBGP邻居

MSR36-20_7(AR5)

IBGP邻居

MSR36-20_8(AR6)

IBGP邻居

配置EBGP
MSR36-20_5(AR3)

EBGP邻居

MSR36-20_6(AR4)

EBGP邻居

MSR36-20_7(AR5)

EBGP邻居

MSR36-20_8(AR6)

EBGP邻居

MSR36-20_9(AR7)

EBGP邻居

MSR36-20_10(AR8)

EBGP邻居

MSR36-20_11(AR9)

EBGP邻居

MSR36-20_12(AR10)

EBGP邻居

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

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

发现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)

MSR36-20_6(AR4)

MSR36-20_7(AR5)

MSR36-20_8(AR6)

查看AR1上的BGP路由表

下一跳变成了3.3.3.3。而且是最优的路径
路由反射器(RR)
在Ar5上查看Bgp路由表中查看,结果发现没有70.70.70.70的路由

MSR36-20_3(AR1)

MSR36-20_4(AR2)

AR5路由表查看

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

Cluster list 是RR的客户端IP地址
第五章 结果

第六章 BGP清理进程命令
reset bgp all //清楚BGP进程
tracert -a 1.1.1.1 70.70.70.70 //通过跟源地址来跟踪

浙公网安备 33010602011771号