
实验需求
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和环路
R1\]int g0/0/0 \[R1-GigabitEthernet0/0/0\]ip add 12.1.1.1 24 \[R1-GigabitEthernet0/0/0\]int l0 \[R1-LoopBack0\]ip add 172.16.0.1 32 \[R1-LoopBack0\]int l1 \[R1-LoopBack1\]ip add 192.168.1.1 24 \[R2\]int g0/0/0 \[R2-GigabitEthernet0/0/0\]ip add 12.1.1.2 24 \[R2-GigabitEthernet0/0/0\]int g0/0/1 \[R2-GigabitEthernet0/0/1\]ip add 172.16.1.1 30 \[R2-GigabitEthernet0/0/1\]int g0/0/2 \[R2-GigabitEthernet0/0/2\]ip add 172.16.1.21 30 \[R2-GigabitEthernet0/0/2\]int l0 \[R2-LoopBack0\]ip add 172.16.0.2 32 \[R3\]int g0/0/0 \[R3-GigabitEthernet0/0/0\]ip add 172.16.1.2 30 \[R3-GigabitEthernet0/0/0\]int g0/0/1 \[R3-GigabitEthernet0/0/1\]ip add 172.16.1.5 30 \[R3-GigabitEthernet0/0/1\]int l0 \[R3-LoopBack0\]ip add 172.16.0.3 32 \[R3-LoopBack0\]int l1 \[R3-LoopBack1\]ip add 172.16.3.1 24 \[R4\]int g0/0/0 \[R4-GigabitEthernet0/0/0\]ip add 172.16.1.6 30 \[R4-GigabitEthernet0/0/0\]int g0/0/1 \[R4-GigabitEthernet0/0/1\]ip add 172.16.1.9 30 \[R4-GigabitEthernet0/0/1\]int l0 \[R4-LoopBack0\]ip add 172.16.0.4 32 \[R4-LoopBack0\]int l1 \[R4-LoopBack1\]ip add 172.16.4.1 24 \[R5\]int g0/0/0 \[R5-GigabitEthernet0/0/0\]ip add 172.16.1.22 30 \[R5-GigabitEthernet0/0/0\]int g0/0/1 \[R5-GigabitEthernet0/0/1\]ip add 172.16.1.17 30 \[R5-GigabitEthernet0/0/1\]int l0 \[R5-LoopBack0\]ip add 172.16.0.5 32 \[R5-LoopBack0\]int l1 \[R5-LoopBack1\]ip add 172.16.5.1 32 \[R6\]int g0/0/0 \[R6-GigabitEthernet0/0/0\]ip add 172.16.1.18 30 \[R6-GigabitEthernet0/0/0\]int g0/0/1 \[R6-GigabitEthernet0/0/1\]ip add 172.16.1.13 30 \[R6-GigabitEthernet0/0/1\]int l0 \[R6-LoopBack0\]ip add 172.16.0.6 32 \[R6-LoopBack0\]int l1 \[R6-LoopBack1\]ip add 172.16.6.1 24 \[R7\]int g0/0/0 \[R7-GigabitEthernet0/0/0\]ip add 172.16.1.14 30 \[R7-GigabitEthernet0/0/0\]int g0/0/1 \[R7-GigabitEthernet0/0/1\]ip add 172.16.1.10 30 \[R7-GigabitEthernet0/0/1\]int g0/0/2 \[R7-GigabitEthernet0/0/2\]ip add 34.1.1.7 24 \[R7-GigabitEthernet0/0/2\]int l0 \[R7-LoopBack0\]ip address 172.16.0.7 32 \[R7-LoopBack0\]int l1 \[R7-LoopBack1\]ip address 172.16.7.1 24 \[R8\]int g0/0/0 \[R8-GigabitEthernet0/0/0\]ip address 34.1.1.8 24 \[R8-GigabitEthernet0/0/0\]int l0 \[R8-LoopBack0\]ip add 172.16.0.8 32 \[R8-LoopBack0\]int l1 \[R8-LoopBack1\]ip add 192.168.2.1 24 #### ospf协议 \[R2\]ospf 1 router-id 2.2.2.2 \[R2-ospf-1\]a 0 \[R2-ospf-1-area-0.0.0.0\]network 172.16.0.2 0.0.0.0 \[R2-ospf-1-area-0.0.0.0\]network 172.16.1.0 0.0.0.3 \[R2-ospf-1-area-0.0.0.0\]network 172.16.1.20 0.0.0.3 \[R3\]ospf 1 router-id 3.3.3.3 \[R3-ospf-1\]a 0 \[R3-ospf-1-area-0.0.0.0\]network 172.16.1.0 0.0.0.3 \[R3-ospf-1-area-0.0.0.0\]network 172.16.1.4 0.0.0.3 \[R3-ospf-1-area-0.0.0.0\]network 172.16.0.3 0.0.0.0 \[R3-ospf-1-area-0.0.0.0\]network 172.16.3.0 0.0.0.255 \[R4\]ospf 1 router-id 4.4.4.4 \[R4-ospf-1\]a 0 \[R4-ospf-1-area-0.0.0.0\]network 172.16.0.4 0.0.0.0 \[R4-ospf-1-area-0.0.0.0\]network 172.16.1.4 0.0.0.3 \[R4-ospf-1-area-0.0.0.0\]network 172.16.1.8 0.0.0.3 \[R4-ospf-1-area-0.0.0.0\]network 172.16.4.0 0.0.0.255 \[R5\]ospf 1 router-id 5.5.5.5 \[R5-ospf-1\]a 0 \[R5-ospf-1-area-0.0.0.0\]network 172.16.1.20 0.0.0.3 \[R5-ospf-1-area-0.0.0.0\]network 172.16.1.16 0.0.0.3 \[R5-ospf-1-area-0.0.0.0\]network 172.16.0.5 0.0.0.0 \[R5-ospf-1-area-0.0.0.0\]network 172.16.5.0 0.0.0.255 \[R6\]ospf 1 router-id 6.6.6.6 \[R6-ospf-1\]a 0 \[R6-ospf-1-area-0.0.0.0\]network 172.16.0.6 0.0.0.0 \[R6-ospf-1-area-0.0.0.0\]network 172.16.1.12 0.0.0.3 \[R6-ospf-1-area-0.0.0.0\]network 172.16.1.16 0.0.0.3 \[R6-ospf-1-area-0.0.0.0\]network 172.16.6.0 0.0.0.255 \[R7\]ospf 1 router-id 7.7.7.7 \[R7-ospf-1\]a 0 \[R7-ospf-1-area-0.0.0.0\]network 172.16.0.7 0.0.0.0 \[R7-ospf-1-area-0.0.0.0\]network 172.16.1.8 0.0.0.3 \[R7-ospf-1-area-0.0.0.0\]network 172.16.1.12 0.0.0.3 \[R7-ospf-1-area-0.0.0.0\]network 172.16.7.0 0.0.0.255 #### BGP建邻 \[R1\]bgp 1 \[R1-bgp\]peer 12.1.1.2 as-number 2 \[R2\]bgp 64512 \[R2-bgp\]confederation id 2 \[R2-bgp\]confederation peer-as 64513 \[R2-bgp\]peer 12.1.1.1 as-number 1 \[R2-bgp\]peer 172.16.1.22 as-number 64513 \[R2-bgp\]peer 172.16.1.22 next-hop-local \[R5\]bgp 64513 \[R5-bgp\]confederation id 2 \[R5-bgp\]confederation peer-as 64512 \[R5-bgp\]peer 172.16.1.21 as-number 64512 \[R5-bgp\]peer 172.16.1.21 next-hop-local \[R7\]bgp 64513 \[R7-bgp\]peer 34.1.1.8 as-number 3 \[R8\]bgp 3 \[R8-bgp\]peer 34.1.1.7 as-number 2 #### IBGP建邻 \[R2\]bgp 64512 \[R2-bgp\]peer 172.16.0.3 as-number 64512 \[R2-bgp\]peer 172.16.0.3 connect-interface l0 \[R2-bgp\]peer 172.16.0.3 next-hop-local \[R3\]bgp 64512 \[R3-bgp\]confederation id 2 \[R3-bgp\]peer 172.16.0.2 as-number 64512 \[R3-bgp\]peer 172.16.0.2 connect-interface l0 \[R3-bgp\]peer 172.16.0.4 as-number 64512 \[R3-bgp\]peer 172.16.0.4 connect-interface l0 \[R4\]bgp 64512 \[R4-bgp\]confederation id 2 \[R4-bgp\]peer 172.16.0.3 as-number 64512 \[R4-bgp\]peer 172.16.0.3 next-hop-local \[R5\]bgp 64513 \[R5-bgp\]peer 172.16.0.6 as-number 64513 \[R5-bgp\]peer 172.16.0.6 connect-interface l0 \[R5-bgp\]peer 172.16.0.6 next-hop-local \[R6\]bgp 64513 \[R6-bgp\]confederation id 2 \[R6-bgp\]peer 172.16.0.5 as-number 64513 \[R6-bgp\]peer 172.16.0.5 connect-interface l0 \[R6-bgp\]peer 172.16.0.7 as-number 64513 \[R6-bgp\]peer 172.16.0.7 connect-interface l0 \[R7\]bgp 64513 \[R7-bgp\]confederation id 2 \[R7-bgp\]peer 172.16.0.6 as-number 64513 \[R7-bgp\]peer 172.16.0.6 connect-interface l0 \[R7-bgp\]peer 172.16.0.6 next-hop-local #### 配置反射器 \[R3-bgp\]peer 172.16.0.4 reflect-client \[R6-bgp\]peer 172.16.0.7 reflect-client #### BGP宣告环回 \[R2\]ip route-static 172.16.0.0 16 NULL 0 \[R2-bgp\]network 172.16.0.0 16 \[R7\]ip route-static 172.16.0.0 16 NULL 0 \[R7-bgp\]network 172.16.0.0 16 #### R1 R8环回互访 \[R1\]interface Tunnel 0/0/0 \[R1-Tunnel0/0/0\]ip add 10.1.1.1 24 \[R1-Tunnel0/0/0\]tunnel-protocol gre \[R1-Tunnel0/0/0\]source 172.16.0.1 \[R1-Tunnel0/0/0\]destination 172.16.0.8 \[R1\]ip route-static 192.168.2.0 24 10.1.1.2 \[R8\]int Tunnel 0/0/0 \[R8-Tunnel0/0/0\]ip address 10.1.1.2 24 \[R8-Tunnel0/0/0\]tunnel-protocol gre \[R8-Tunnel0/0/0\]source 172.16.0.8 \[R8-Tunnel0/0/0\]destination 172.16.0.1 \[R8\]ip route-static 192.168.1.0 24 10.1.1.1 --------------------------------------------------------------------------------------------------------------------------------- 一、BGP路由选路原则(13条) 1. 丢弃下一跳(NEXT_HOP)不可达的路由。 2. 优选Preferred-value值最大的路由(默认0,取值0\~65535,H3C和华为私有属性)。 3. 优选本地优先级(LOCAL_PREF)最高的路由。 4. 依次选择network命令生成的路由、import-route命令引入的路由、聚合路由。 5. 优选AS路径(AS_PATH)最短的路由。 6. 依次选择ORIGIN属性为IGP、EGP、Incomplete的路由。 7. 优选MED值最低的路由。 8. 依次选择从EBGP、联盟EBGP、联盟IBGP、IBGP学来的路由。 9. 优选下一跳度量值(通过IGP到达下一跳的度量)最低的路由。 10. 优选CLUSTER_LIST长度最短的路由。 11. 优选ORIGINATOR_ID最小的路由。 12. 优选Router ID最小的路由器发布的路由。 13. 优选IP地址最小的对等体发布的路由。 二、BGP负载分担时的选路 1. 背景:BGP默认选出唯一最优路由,可通过配置命令或路由策略修改属性实现负载分担,如 maximum load-balancing 2 允许最多2条等价路径。 2. 与IGP的区别: - IGP通过自身路由算法,对度量值相等的路由进行负载分担。 - BGP无路由计算算法,基于选路规则有条件地实现负载分担。 三、BGP路由的发布策略 - 只将最优路由发布给对等体(默认发布BGP路由表最优路由,配置 active-route-advertise 则发布IP路由表最优路由)。 - 只发布自己使用的最优路由。 - 从EBGP获得的路由向所有BGP对等体发布。 - 从IBGP获得的路由不向IBGP对等体发布(IBGP水平分割),但会发布给EBGP对等体。 - BGP连接建立后,向新对等体发布所有满足条件的路由,后续仅在路由变化时发布更新。 四、BGP属性(控制选路的方法) 1. 公认属性(所有路由器必须识别) 公认必遵属性(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支持自动或手动聚合。 2. 可选属性 可选传递属性(路由器可不识别,但会传递) - aggregator:手动聚合属性。 - community:团体属性。 可选非传递属性(路由器可不识别,且不传递) - clustor_list:集群列表。 - originator_id:集群ID。 - MED:多出口鉴别器,用于判断流量进入AS的最优路径,仅在相邻AS间传递,默认值0(network路由)或原IGP的cost(引入路由),值小的优先。 3. preferred-value - 首选项,H3C和华为私有属性,默认0,取值0\~65535,值大的路由优先。 五、属性控制的选择建议 1. 影响下游所有路由器选路:使用AS-PATH。 2. 影响本AS内部某个路由器选路:使用Local-preference。 3. 影响下游某一个AS的路由器选路:使用MED。 4. 影响某一台路由器选路:使用preferred-value。 六、属性控制方法 通过路由策略实现,对匹配的路由用 Apply 子句修改属性,在邻居的入/出方向调用策略,空节点允许其他网段通过。 BGP对等体组、聚合、路由反射器、联盟、团体属性 七、BGP协议特性 1. 负责在自治系统间传递路由,AS内部路由扩散依靠IGP。 2. 是路径矢量协议,一跳为一个自治系统,路由在AS间传递时下一跳会变化,在AS内部传递时下一跳不变。 3. 具有AS防环机制,通过AS_PATH属性,当路由的AS_PATH中包含本AS编号时不学习该路由。 4. 基于TCP协议传输,端口号179,需手动配置邻居。 5. 第一次网络收敛发送完整路由表,后续只发送增量更新。 6. 有多种属性可控制路由选择。 7. 支持路由聚合。 8. 可进行路由过滤和路由策略配置。 八、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基本配置 1. 启动与创建连接:启动BGP,配置router-id,指定对等体及AS号,创建地址族并使能交换路由信息能力。 2. 优化连接:指定建立TCP连接的源接口,设置EBGP对等体最大跳数。 3. 生成路由:将本地路由发布到BGP路由表,或引入其它路由协议的路由。 4. 查看命令:display bgp peer(查看对等体信息)、display bgp routing-table(查看路由表)。