BGP路由黑洞及IBGP全连接

简介:
组网需求:
1.AS65000边界网段发布:RT1、RT2重发布直连路由至OSPF(metric 1000 type 1)
2.BGP配置要求:
 no synchronization 
  no auto-summary IBGP使用LOOPBACK建立邻居,下一跳指向自己
3.RT1,RT2发布AS65000的汇总路由至BGP:10.0.0.0/16、10.3.0.0/16
4.RT5发布AS65001的汇总路由至BGP:10.5.0.0/16
5.RT6发布AS65001的汇总路由至BGP:10.6.0.0/16
6.分析路由黑洞的形成及解决方法
IGP路由的配置:
R1:
 router ospf 1
 router-id 10.0.0.1
 redistribute connected metric 1000 metric-type 1 subnets   //重发布直连网络到OSPF中
 passive-interface Serial0/1  //与EBGP相连的接口必须配置为被动接口,以免形成邻居
 network 10.0.0.1 0.0.0.0 area 0
 network 10.0.1.4 0.0.0.3 area 0
R3:
router ospf 1
 router-id 10.0.0.3
 passive-interface default
 no passive-interface Serial0/0
 no passive-interface FastEthernet1/0
 network 10.0.0.3 0.0.0.0 area 0
 network 10.0.1.0 0.0.0.3 area 0
 network 10.0.1.4 0.0.0.3 area 0
 network 10.3.3.0 0.0.0.255 area 0
 interface FastEthernet1/0               
 ip address 10.0.1.1 255.255.255.252
 ip ospf network point-to-point         //配置网络类型为点对点(不需选举DR或BDR)
R4:
router ospf 1
 router-id 10.0.0.4
 passive-interface default
 no passive-interface Serial0/0
 no passive-interface FastEthernet1/0
 network 10.0.0.4 0.0.0.0 area 0
 network 10.0.1.0 0.0.0.3 area 0
 network 10.0.1.8 0.0.0.3 area 0
 network 10.3.4.0 0.0.0.255 area 0
interface FastEthernet1/0               
 ip address 10.0.1.1 255.255.255.252
 ip ospf network point-to-point         //配置网络类型为点对点(不需选举DR或BDR)
R2:
router ospf 1
 router-id 10.0.0.2
 redistribute connected metric 1000 metric-type 1 subnets   //重发布直连网络到OSPF中
 passive-interface default   //与EBGP相连的接口必须配置为被动接口,以免形成邻居
 no passive-interface Serial0/0
 network 10.0.1.8 0.0.0.3 area 0
IBGP的配置: 
R1:
router bgp 65000
 no synchronization             //关闭同步
 neighbor 10.0.0.2 remote-as 65000      //指定IBGP邻居和AS
 neighbor 10.0.0.2 update-source Loopback0  //指定更新源为LOOPBACK 0
 neighbor 10.0.0.2 next-hop-self       //把下跳改为自己(EBGP默认)
 neighbor 10.0.15.2 remote-as 65001           //指定EBGP邻居和AS
 network 10.0.0.0 mask 255.255.0.0           /静态发布路由到BGP
 no auto-summary             //关闭自动汇总
 ip route 10.0.0.0 255.255.0.0 null 0   //添加一条静态汇总路由,用来发布
R2:
router bgp 65000
 no synchronization             //关闭同步
 neighbor 10.0.0.1 remote-as 65000       //指定邻居和AS
 neighbor 10.0.0.1 update-source Loopback0   //指定更新源为LOOPBACK 0
 neighbor 10.0.0.1 next-hop-self        //把下跳改为自己(EBGP默认)
 neighbor 10.0.26.2 remote-as 65002        //指定EBGP邻居和AS
 network 10.3.0.0 mask 255.255.0.0             /静态发布路由到BGP
 no auto-summary              //关闭自动汇总
 ip route 10.3.0.0 255.255.0.0 null 0   //添加一条静态汇总路由,用来发布
R5:
router bgp 65001          
 network 10.5.0.0 mask 255.255.0.0      //静态发布路由到BGP
 neighbor 10.0.15.1 remote-as 65000      //指定EBGP邻居和AS
 no auto-summary             //关闭自动汇总
 ip route 10.5.0.0 255.255.0.0 Null0      //添加一条静态汇总路由,用来发布到BGP
R6:
 router bgp 65002
 no synchronization             //关闭同步
 network 10.6.0.0 mask 255.255.0.0      //静态发布路由到BGP
 neighbor 10.0.26.1 remote-as 65000     //指定EBGP邻居和AS
 no auto-summary            //关闭自动汇总
 ip route 10.6.0.0 255.255.0.0 Null0     //添加一条静态汇总路由,用来发布到BGP
注意:使用IBGP时默认跳数为255,EBGP的默认跳数为1,如果使用EBGP的LOOBACK地址建邻居,需手工指定跳数
neighbor 10.10.10.10 ebgp-multihop 2 //后面接的是跳数1-255
思考:现在10.5.5.1能够PING通10.6.6.1吗?
答案是不能ping通,原因是R3上没有去往R6的路由(后面分析)
现在我们来分析一下R6上的10.6.0.0/16路由的传播!
在R6上:
   Network          Next Hop            Metric LocPrf Weight Path
*> 10.5.0.0/16      10.0.26.1                              0 65000 65001 i
*> 10.6.0.0/16      0.0.0.0                  0         32768 i
*表示有效 >表示最优 因为10.6.0.0是由本路由器始发所以下一跳是0.0.0.0,如果是重发布到BGP的就为IGP中的下一跳,本地始发路由的weight为32768,Originn属性为IGP
R2收到从EBGP收到的路由,向它所有的邻居转发
*> 10.6.0.0/16      10.0.26.2                0             0 65002 i
因为是由EBGP通告过来的,所以下一跳为EBGP的邻居地址
R1:
*>i10.6.0.0/16      10.0.0.2                 0    100      0 65002 i
从IBGP学到的路由,是否通告给EBGP,视同步而定,因为这里是关闭同步的所以能通告给R5(如果开启了同步,必须达到同步的路由才能传给EBGP),同时在R2上配置了next-hop-self将下一跳改变为自己,所以R1收到的路由的下一跳指向它的IBGP邻居
R5:
*> 10.6.0.0/16      10.0.15.1                              0 65000 65002 i
向EBGP通告路由时,将下一跳改变为自己。同理R6也能学到R5的路由
当10.5.5.1ping10.6.6.1时,R5查找路由表,匹配10.6.0.0/16的路由,下一跳为10.0.15.1为直连接口,将数发往R1,R1进行查找路由,找到匹配10.6.0.0/16路由,下一跳为10.0.0.2,不是直连接口,将下一跳为目标IP进行递归查找路由,匹配10.0..02/32的路由,下一跳为10.0.1.5为直连接口,将数据发到R3,R3以目标IP10.6.6.1进行查找路由,找不到匹配项,便丢弃数据,因为R3没有运行BGP学习不到BGP的路由,所以形成路由黑洞
解决方法:1.将BGP的路由重分布到OSPF中
     2.将AS内的路由器形成IBGP全连接
     3.路由反射器
     4.配置MPLS
方法1. 
配置如下:
R1:
router ospf 1
redistribute bgp 65000 subnets  //重分布BGP的路由到OSPF中
R2:
router ospf 1
redistribute bgp 65000 subnets //重分布BGP的路由到OSPF中
现在可以看到AS内的路由器都有AS外的路由呢,所以可以PING通了!
R3的路由表,有AS外的路由:
R5上测试一下:
注意: 因为INTERNET网上的BGP路由多达十几万条,如果不做策略将BGP路由重分布到OSPF中,是不可行的,OSPF最大也只能支持一万多条路由表,并且极大消耗路由器的内存,所以此方法一般不用!
这里有一个INTERNET上的公共路由器,可以去查看上面的路由表,只需telnet上route-server.ip.att.net这个地址就行,用户名为rviews
BGP路由表有14万多
方法2: IBGP的全连接(因为从一个IBGP学习到的路由不会传递给另一个IBGP,所以需要全连接,为了防止路由环路)
配置如下:
R1:
 neighbor 10.0.0.3 remote-as 65000
 neighbor 10.0.0.3 update-source Loopback0
 neighbor 10.0.0.3 next-hop-self 
 neighbor 10.0.0.4 remote-as 65000
 neighbor 10.0.0.4 update-source Loopback0
 neighbor 10.0.0.4 next-hop-self
R3:
 router bgp 65000
 no synchronization 
 neighbor 10.0.0.1 remote-as 65000
 neighbor 10.0.0.1 update-source Loopback0
 neighbor 10.0.0.1 next-hop-self
 neighbor 10.0.0.4 remote-as 65000
 neighbor 10.0.0.4 update-source Loopback0
 neighbor 10.0.0.4 next-hop-self 
 neighbor 10.0.0.2 remote-as 65000
 neighbor 10.0.0.2 update-source Loopback0
 neighbor 10.0.0.2 next-hop-self
 no auto-summary
R4: 
 router bgp 65000
 no synchronization 
 neighbor 10.0.0.1 remote-as 65000
 neighbor 10.0.0.1 update-source Loopback0
 neighbor 10.0.0.1 next-hop-self
 neighbor 10.0.0.3 remote-as 65000
 neighbor 10.0.0.3 update-source Loopback0
 neighbor 10.0.0.3 next-hop-self 
 neighbor 10.0.0.2 remote-as 65000
 neighbor 10.0.0.2 update-source Loopback0
 neighbor 10.0.0.2 next-hop-self
 no auto-summary
R2:
 neighbor 10.0.0.4 remote-as 65000
 neighbor 10.0.0.4 update-source Loopback0
 neighbor 10.0.0.4 next-hop-self 
 neighbor 10.0.0.3 remote-as 65000
 neighbor 10.0.0.3 update-source Loopback0
 neighbor 10.0.0.3 next-hop-self
在R3上查看邻居关系,已经形成全连接了!
也有AS外部路由了
现在R5上测试一下:
现在我们来分析一条路由,R1通告10.5.0.0/16路由给R3,R3会把这条路由通告给R4吗?
R3收到一条路来自己R1的路由:
*>i10.5.0.0/16      10.0.0.1                 0    100      0 65001 i
R4上的路由:
*>i10.5.0.0/16      10.0.0.1                 0    100      0 65001 i
这里为什么只有一条路由呢,因为形成了IGBP全连接由R1通告过来了,R3从IBGP学习到的路由不再传递给IBGP,所以R4只有一条,这就是为什么要形成全连接的原因。
限于字数,方法3路由反射器将在下篇做详细介绍!


本文转自 tangfangxiao 51CTO博客,原文链接:
http://blog.51cto.com/tangfangxiao/645519
相关文章
|
网络协议 网络虚拟化 网络架构
【华为数通HCIP | 网络工程师】821-BGP高频题、易错题(1)
【华为数通HCIP | 网络工程师】821-BGP高频题、易错题(1)
2804 0
|
11月前
|
数据库 数据安全/隐私保护 UED
如何开发CRM系统中的订单管理板块(附架构图+流程图+代码参考)
本文详细介绍了CRM系统中订单管理板块的开发与实现,涵盖功能设计、业务流程、开发技巧及代码参考。通过构建高效订单管理系统,企业可提升销售效率与客户满意度,并优化整体运营流程。
|
10月前
|
人工智能 缓存 安全
你还是没有理解CAS
在高并发场景下,使用 `count++` 统计商品浏览次数可能导致计数丢失。本文介绍了如何使用 CAS(Compare and Swap)实现无锁的原子操作来解决该问题。CAS 通过比较内存值与期望值,确保更新操作的原子性,避免了线程竞争带来的数据错误。文章详细解析了 CAS 的工作机制、优势与局限性,并结合 Java 示例展示了其底层实现与实际应用,如高性能计数器、无锁栈和缓存更新策略。此外,还探讨了 CAS 可能引发的 ABA 问题及其解决方案,如版本号机制。最后,通过性能对比分析,帮助开发者根据场景合理选择并发控制方式。
218 0
|
11月前
|
XML 存储 网络协议
zk源码—2.通信协议和客户端原理
本文主要从源码层面分析了ZooKeeper如何进行序列化、Jute的底层实现原理、ZooKeeper的网络通信协议详解、客户端的核心组件和初始化过程、客户端核心组件HostProvider、客户端核心组件ClientCnxn和客户端工作原理之会话创建过程。
|
机器学习/深度学习 自然语言处理 算法
数据准备指南:10种基础特征工程方法的实战教程
在数据分析和机器学习中,从原始数据中提取有价值的信息至关重要。本文详细介绍了十种基础特征工程技术,包括数据插补、数据分箱、对数变换、数据缩放、One-Hot编码、目标编码、主成分分析(PCA)、特征聚合、TF-IDF 和文本嵌入。每种技术都有具体应用场景和实现示例,帮助读者更好地理解和应用这些方法。通过合理的特征工程,可以显著提升模型的性能和预测能力。
1176 3
数据准备指南:10种基础特征工程方法的实战教程
|
网络协议
详解VXLAN网络中报文是如何转发的?值得收藏学习!
详解VXLAN网络中报文是如何转发的?值得收藏学习!
817 0
详解VXLAN网络中报文是如何转发的?值得收藏学习!
|
安全
【守护工地安全】YOLOv8实现安全帽检测
【守护工地安全】YOLOv8实现安全帽检测
655 0
|
Ubuntu Linux Shell
【linux】PetaLinux 2024.1安装笔记
【linux】PetaLinux 2024.1安装笔记
2564 0
|
应用服务中间件 Linux nginx
向nginx发送reopen信号以重新打开日志文件
先移动日志文件 mv /usr/local/openresty/nginx/logs/access.log /usr/local/openresty/nginx/logs/access.log.20161024 发送信号重新打开日志文件 kill -USR1 $(cat /usr/local/openresty/nginx/logs/nginx.
3650 0
|
网络协议 程序员 API
[笔记] Microsoft Windows网络编程《一》WinSock简介(三)
[笔记] Microsoft Windows网络编程《一》WinSock简介(三)
755 0

热门文章

最新文章