
实验需求
1、AS1中存在两个环回,一个地址为192.168.1.0/24,该地址不能在任何协议中宣告;AS3中存在两个环回,一个地址为192.168.2.0/24,该地址不能在任何协议中宣告,最终要求这两个环回可以ping通;
2、R1-R8的建邻环回用x.x.x.x/32表示;整个AS2的IP地址为172.16.0.0/16,请合理划分;并且其内部配置OSPF协议;
3、AS间的骨干链路IP地址随意定制;
4、使用BGP协议让整个网络所有设备的环回可以互相访问;
5、减少路由条目数量,避免环路出现;
需求分析
- AS1和AS3中的环回地址
要求:
AS1中有两个环回地址(192.168.1.0/24),这两个地址不能被任何协议(如BGP、OSPF等)宣告。
AS3中有两个环回地址(192.168.2.0/24),同样不能被任何协议宣告。
最终这两个环回地址需要能够ping通。
分析:
需要确保这两个地址不通过BGP或OSPF进行广告传播,应该在协议配置中排除它们的宣告。
可能需要通过静态路由或在路由策略中进行特殊配置,保证这些环回地址之间的连通性。
解决方案: 使用静态路由,或者通过BGP/OSPF策略控制这些地址的传播。BGP的network指令可以用来指定哪些网络可以被宣告,而不宣告这些环回地址。
- R1-R8的环回地址
要求:
R1到R8之间的环回地址使用x.x.x.x/32表示。
对应的AS2的IP地址范围是172.16.0.0/16,需要合理划分该范围并配置OSPF。
分析:
每个路由器的环回地址可以被分配一个唯一的/32地址,用于进行OSPF的邻接建立。
解决方案: 在172.16.0.0/16的地址范围内,可以为每个路由器的环回接口划分一个独立的/32地址。OSPF的邻接可以通过环回地址建立,并且/32地址在OSPF中会被作为一个"可达的网络"进行传播。
- AS间的骨干链路IP地址
要求:
骨干链路的IP地址可以随意定制。
分析:
骨干链路是连接不同AS的关键,IP地址可以灵活分配,确保网络之间的连通性即可。
解决方案: 可根据需要选择合适的IP地址范围,确保不同AS之间的路由能够顺利传递。一般情况下,可以选择私有地址段(如10.x.x.x、172.x.x.x、192.168.x.x)来作为骨干链路的地址。
- 使用BGP协议实现环回互通
要求:
使用BGP协议让所有设备的环回接口可以互相访问。
分析:
BGP协议需要在AS间进行配置,广告环回地址。
解决方案: 在每个AS内配置BGP,使得各个AS的路由器能够通过BGP广告环回接口的地址,同时利用AS间的骨干链路互通。需要在BGP配置中合理设置network指令、路由过滤和策略等。
- 减少路由条目数量,避免环路
要求:
尽量减少路由条目数量,避免路由环路的产生。
分析:
可以通过配置路由过滤(如BGP的prefix-list、route-map等)来限制某些路由的传递,避免不必要的路由条目。
使用OSPF的区域划分,限制路由传播范围,也有助于减少路由表的大小。
解决方案: 对BGP使用合理的策略,避免将不必要的网络广告出去,防止路由环路的出现;使用OSPF的区域划分(例如骨干区域、普通区域)来控制路由的传播。
实验过程:
配置IP和环路
R1int g0/0/0
R1-GigabitEthernet0/0/0ip add 12.1.1.1 24
R1-GigabitEthernet0/0/0int l0
R1-LoopBack0ip add 172.16.0.1 32
R1-LoopBack0int l1
R1-LoopBack1ip add 192.168.1.1 24
R2int g0/0/0
R2-GigabitEthernet0/0/0ip add 12.1.1.2 24
R2-GigabitEthernet0/0/0int g0/0/1
R2-GigabitEthernet0/0/1ip add 172.16.1.1 30
R2-GigabitEthernet0/0/1int g0/0/2
R2-GigabitEthernet0/0/2ip add 172.16.1.21 30
R2-GigabitEthernet0/0/2int l0
R2-LoopBack0ip add 172.16.0.2 32
R3int g0/0/0
R3-GigabitEthernet0/0/0ip add 172.16.1.2 30
R3-GigabitEthernet0/0/0int g0/0/1
R3-GigabitEthernet0/0/1ip add 172.16.1.5 30
R3-GigabitEthernet0/0/1int l0
R3-LoopBack0ip add 172.16.0.3 32
R3-LoopBack0int l1
R3-LoopBack1ip add 172.16.3.1 24
R4int g0/0/0
R4-GigabitEthernet0/0/0ip add 172.16.1.6 30
R4-GigabitEthernet0/0/0int g0/0/1
R4-GigabitEthernet0/0/1ip add 172.16.1.9 30
R4-GigabitEthernet0/0/1int l0
R4-LoopBack0ip add 172.16.0.4 32
R4-LoopBack0int l1
R4-LoopBack1ip add 172.16.4.1 24
R5int g0/0/0
R5-GigabitEthernet0/0/0ip add 172.16.1.22 30
R5-GigabitEthernet0/0/0int g0/0/1
R5-GigabitEthernet0/0/1ip add 172.16.1.17 30
R5-GigabitEthernet0/0/1int l0
R5-LoopBack0ip add 172.16.0.5 32
R5-LoopBack0int l1
R5-LoopBack1ip add 172.16.5.1 32
R6int g0/0/0
R6-GigabitEthernet0/0/0ip add 172.16.1.18 30
R6-GigabitEthernet0/0/0int g0/0/1
R6-GigabitEthernet0/0/1ip add 172.16.1.13 30
R6-GigabitEthernet0/0/1int l0
R6-LoopBack0ip add 172.16.0.6 32
R6-LoopBack0int l1
R6-LoopBack1ip add 172.16.6.1 24
R7int g0/0/0
R7-GigabitEthernet0/0/0ip add 172.16.1.14 30
R7-GigabitEthernet0/0/0int g0/0/1
R7-GigabitEthernet0/0/1ip add 172.16.1.10 30
R7-GigabitEthernet0/0/1int g0/0/2
R7-GigabitEthernet0/0/2ip add 34.1.1.7 24
R7-GigabitEthernet0/0/2int l0
R7-LoopBack0ip address 172.16.0.7 32
R7-LoopBack0int l1
R7-LoopBack1ip address 172.16.7.1 24
R8int g0/0/0
R8-GigabitEthernet0/0/0ip address 34.1.1.8 24
R8-GigabitEthernet0/0/0int l0
R8-LoopBack0ip add 172.16.0.8 32
R8-LoopBack0int l1
R8-LoopBack1ip add 192.168.2.1 24
ospf协议
R2ospf 1 router-id 2.2.2.2
R2-ospf-1a 0
R2-ospf-1-area-0.0.0.0network 172.16.0.2 0.0.0.0
R2-ospf-1-area-0.0.0.0network 172.16.1.0 0.0.0.3
R2-ospf-1-area-0.0.0.0network 172.16.1.20 0.0.0.3
R3ospf 1 router-id 3.3.3.3
R3-ospf-1a 0
R3-ospf-1-area-0.0.0.0network 172.16.1.0 0.0.0.3
R3-ospf-1-area-0.0.0.0network 172.16.1.4 0.0.0.3
R3-ospf-1-area-0.0.0.0network 172.16.0.3 0.0.0.0
R3-ospf-1-area-0.0.0.0network 172.16.3.0 0.0.0.255
R4ospf 1 router-id 4.4.4.4
R4-ospf-1a 0
R4-ospf-1-area-0.0.0.0network 172.16.0.4 0.0.0.0
R4-ospf-1-area-0.0.0.0network 172.16.1.4 0.0.0.3
R4-ospf-1-area-0.0.0.0network 172.16.1.8 0.0.0.3
R4-ospf-1-area-0.0.0.0network 172.16.4.0 0.0.0.255
R5ospf 1 router-id 5.5.5.5
R5-ospf-1a 0
R5-ospf-1-area-0.0.0.0network 172.16.1.20 0.0.0.3
R5-ospf-1-area-0.0.0.0network 172.16.1.16 0.0.0.3
R5-ospf-1-area-0.0.0.0network 172.16.0.5 0.0.0.0
R5-ospf-1-area-0.0.0.0network 172.16.5.0 0.0.0.255
R6ospf 1 router-id 6.6.6.6
R6-ospf-1a 0
R6-ospf-1-area-0.0.0.0network 172.16.0.6 0.0.0.0
R6-ospf-1-area-0.0.0.0network 172.16.1.12 0.0.0.3
R6-ospf-1-area-0.0.0.0network 172.16.1.16 0.0.0.3
R6-ospf-1-area-0.0.0.0network 172.16.6.0 0.0.0.255
R7ospf 1 router-id 7.7.7.7
R7-ospf-1a 0
R7-ospf-1-area-0.0.0.0network 172.16.0.7 0.0.0.0
R7-ospf-1-area-0.0.0.0network 172.16.1.8 0.0.0.3
R7-ospf-1-area-0.0.0.0network 172.16.1.12 0.0.0.3
R7-ospf-1-area-0.0.0.0network 172.16.7.0 0.0.0.255
BGP建邻
R1bgp 1
R1-bgppeer 12.1.1.2 as-number 2
R2bgp 64512
R2-bgpconfederation id 2
R2-bgpconfederation peer-as 64513
R2-bgppeer 12.1.1.1 as-number 1
R2-bgppeer 172.16.1.22 as-number 64513
R2-bgppeer 172.16.1.22 next-hop-local
R5bgp 64513
R5-bgpconfederation id 2
R5-bgpconfederation peer-as 64512
R5-bgppeer 172.16.1.21 as-number 64512
R5-bgppeer 172.16.1.21 next-hop-local
R7bgp 64513
R7-bgppeer 34.1.1.8 as-number 3
R8bgp 3
R8-bgppeer 34.1.1.7 as-number 2
IBGP建邻
R2bgp 64512
R2-bgppeer 172.16.0.3 as-number 64512
R2-bgppeer 172.16.0.3 connect-interface l0
R2-bgppeer 172.16.0.3 next-hop-local
R3bgp 64512
R3-bgpconfederation id 2
R3-bgppeer 172.16.0.2 as-number 64512
R3-bgppeer 172.16.0.2 connect-interface l0
R3-bgppeer 172.16.0.4 as-number 64512
R3-bgppeer 172.16.0.4 connect-interface l0
R4bgp 64512
R4-bgpconfederation id 2
R4-bgppeer 172.16.0.3 as-number 64512
R4-bgppeer 172.16.0.3 next-hop-local
R5bgp 64513
R5-bgppeer 172.16.0.6 as-number 64513
R5-bgppeer 172.16.0.6 connect-interface l0
R5-bgppeer 172.16.0.6 next-hop-local
R6bgp 64513
R6-bgpconfederation id 2
R6-bgppeer 172.16.0.5 as-number 64513
R6-bgppeer 172.16.0.5 connect-interface l0
R6-bgppeer 172.16.0.7 as-number 64513
R6-bgppeer 172.16.0.7 connect-interface l0
R7bgp 64513
R7-bgpconfederation id 2
R7-bgppeer 172.16.0.6 as-number 64513
R7-bgppeer 172.16.0.6 connect-interface l0
R7-bgppeer 172.16.0.6 next-hop-local
配置反射器
R3-bgppeer 172.16.0.4 reflect-client
R6-bgppeer 172.16.0.7 reflect-client
BGP宣告环回
R2ip route-static 172.16.0.0 16 NULL 0
R2-bgpnetwork 172.16.0.0 16
R7ip route-static 172.16.0.0 16 NULL 0
R7-bgpnetwork 172.16.0.0 16
R1 R8环回互访
R1interface Tunnel 0/0/0
R1-Tunnel0/0/0ip add 10.1.1.1 24
R1-Tunnel0/0/0tunnel-protocol gre
R1-Tunnel0/0/0source 172.16.0.1
R1-Tunnel0/0/0destination 172.16.0.8
R1ip route-static 192.168.2.0 24 10.1.1.2
R8int Tunnel 0/0/0
R8-Tunnel0/0/0ip address 10.1.1.2 24
R8-Tunnel0/0/0tunnel-protocol gre
R8-Tunnel0/0/0source 172.16.0.8
R8-Tunnel0/0/0destination 172.16.0.1
R8ip route-static 192.168.1.0 24 10.1.1.1
一、BGP路由选路原则(13条)
-
丢弃下一跳(NEXT_HOP)不可达的路由。
-
优选Preferred-value值最大的路由(默认0,取值0~65535,H3C和华为私有属性)。
-
优选本地优先级(LOCAL_PREF)最高的路由。
-
依次选择network命令生成的路由、import-route命令引入的路由、聚合路由。
-
优选AS路径(AS_PATH)最短的路由。
-
依次选择ORIGIN属性为IGP、EGP、Incomplete的路由。
-
优选MED值最低的路由。
-
依次选择从EBGP、联盟EBGP、联盟IBGP、IBGP学来的路由。
-
优选下一跳度量值(通过IGP到达下一跳的度量)最低的路由。
-
优选CLUSTER_LIST长度最短的路由。
-
优选ORIGINATOR_ID最小的路由。
-
优选Router ID最小的路由器发布的路由。
-
优选IP地址最小的对等体发布的路由。
二、BGP负载分担时的选路
-
背景:BGP默认选出唯一最优路由,可通过配置命令或路由策略修改属性实现负载分担,如 maximum load-balancing 2 允许最多2条等价路径。
-
与IGP的区别:
-
IGP通过自身路由算法,对度量值相等的路由进行负载分担。
-
BGP无路由计算算法,基于选路规则有条件地实现负载分担。
三、BGP路由的发布策略
-
只将最优路由发布给对等体(默认发布BGP路由表最优路由,配置 active-route-advertise 则发布IP路由表最优路由)。
-
只发布自己使用的最优路由。
-
从EBGP获得的路由向所有BGP对等体发布。
-
从IBGP获得的路由不向IBGP对等体发布(IBGP水平分割),但会发布给EBGP对等体。
-
BGP连接建立后,向新对等体发布所有满足条件的路由,后续仅在路由变化时发布更新。
四、BGP属性(控制选路的方法)
- 公认属性(所有路由器必须识别)
公认必遵属性(BGP路由必须携带)
-
AS_path:记录路由经过的AS编号,用于AS防环,选路时AS_PATH短的优先。
-
next-hop:下一跳地址。向EBGP邻居发布路由时,下一跳为EBGP邻居地址;向IBGP邻居发布时,下一跳不变,可通过命令修改为本地地址。
-
origin:描述路由来源,属性值优选顺序为IGP>EGP>Incomplete。
公认可选属性(所有路由器识别,非必须携带)
-
local-perference:本地优先级,仅在IBGP邻居间传递,默认值100,值大的优先,用于AS内选择离开本AS的最佳路由。
-
Atomic-aggregate:自动聚合属性,BGP支持自动或手动聚合。
- 可选属性
可选传递属性(路由器可不识别,但会传递)
-
aggregator:手动聚合属性。
-
community:团体属性。
可选非传递属性(路由器可不识别,且不传递)
-
clustor_list:集群列表。
-
originator_id:集群ID。
-
MED:多出口鉴别器,用于判断流量进入AS的最优路径,仅在相邻AS间传递,默认值0(network路由)或原IGP的cost(引入路由),值小的优先。
- preferred-value
- 首选项,H3C和华为私有属性,默认0,取值0~65535,值大的路由优先。
五、属性控制的选择建议
-
影响下游所有路由器选路:使用AS-PATH。
-
影响本AS内部某个路由器选路:使用Local-preference。
-
影响下游某一个AS的路由器选路:使用MED。
-
影响某一台路由器选路:使用preferred-value。
六、属性控制方法
通过路由策略实现,对匹配的路由用 Apply 子句修改属性,在邻居的入/出方向调用策略,空节点允许其他网段通过。
BGP对等体组、聚合、路由反射器、联盟、团体属性
七、BGP协议特性
-
负责在自治系统间传递路由,AS内部路由扩散依靠IGP。
-
是路径矢量协议,一跳为一个自治系统,路由在AS间传递时下一跳会变化,在AS内部传递时下一跳不变。
-
具有AS防环机制,通过AS_PATH属性,当路由的AS_PATH中包含本AS编号时不学习该路由。
-
基于TCP协议传输,端口号179,需手动配置邻居。
-
第一次网络收敛发送完整路由表,后续只发送增量更新。
-
有多种属性可控制路由选择。
-
支持路由聚合。
-
可进行路由过滤和路由策略配置。
八、BGP基本术语
-
BGP Speaker:运行BGP协议的路由器。
-
BGP Peer:相互存在TCP连接、交换路由信息的BGP Speaker。
-
BGP对等体:
-
EBGP对等体:跨AS的邻居,一般物理直连,从其获得的路由会向所有对等体通告。
-
IBGP对等体:同一AS内部的邻居。
-
邻居可以直连,也可以非直连。
九、BGP规划问题(路由黑洞)
-
产生原因:IBGP邻居之间存在未运行BGP协议的路由器,无法获得BGP路由,导致数据包被丢弃。
-
解决方法:
-
BGP引入IGP。
-
在黑洞路由器上配置目的网段的静态路由。
-
建立IBGP全连接(存在IBGP水平分割机制,从IBGP邻居学习的路由不传递给其他IBGP邻居)。
-
使用BGP路由反射器(无视IBGP防环机制,减少邻居关系数量)。
-
采用BGP联盟(减少邻居关系数量,受IBGP水平分割限制)。
十、BGP环路问题(水平分割)
-
EBGP水平分割:通过AS_PATH属性防环,学习到的路由中若有本地AS号则拒绝学习。
-
IBGP水平分割:路由器从一个IBGP对等体学习到的BGP路由,不会通告给其他IBGP对等体。
十一、BGP消息种类
-
头部信息:包含标记(解决协议兼容性)、长度(指示报文长度)、类型(指示报文类型)。
-
数据包种类:
-
Open:建立BGP对等体连接,携带route-id,包含保持时间、可选参数等。
-
Keepalive:周期性发送以保持连接有效性,默认每60秒发送,超时时间180秒。
-
Update:携带路由更新信息,包括要撤销和新增的路由及相关属性。
-
Notification:检测到错误状态时发送,之后关闭BGP连接。
-
Router-refresh:改变路由策略后,要求对等体重发指定地址族的完整路由表,仅支持该能力的路由器会响应。
十二、BGP状态机
-
Idle:空闲状态,停留30秒,准备TCP连接并监视远程对等体。
-
Connect:TCP连接中,连接失败进入Active状态。
-
Active:TCP主动连接方,连接未成功则反复尝试。
-
OpenSent:成功建立TCP连接,发送open报文,等待对方open报文。
-
OpenConfirm:收到open报文,发送Keepalive报文,等待第一个Keepalive报文。
-
Established:收到Keepalive报文,成功建立邻居关系。
十三、BGP邻居建立条件
-
IBGP:
-
物理口建邻:建议使用直连接口地址。
-
环回口建邻:对方接口有IP地址且TCP可达,更新源地址需与指定邻居地址一致,无需直连。
-
EBGP:
-
物理口建邻:建议使用直连接口地址。
-
环回口建邻:对方接口有IP地址且TCP可达,可修改最大跳数实现非直连,更新源地址需与指定邻居地址一致。
-
注意:默认IBGP邻居间数据包TTL为255,EBGP为1,环回建立EBGP邻居需修改TTL值。
十四、BGP基本配置
-
启动与创建连接:启动BGP,配置router-id,指定对等体及AS号,创建地址族并使能交换路由信息能力。
-
优化连接:指定建立TCP连接的源接口,设置EBGP对等体最大跳数。
-
生成路由:将本地路由发布到BGP路由表,或引入其它路由协议的路由。
-
查看命令:display bgp peer(查看对等体信息)、display bgp routing-table(查看路由表)。