首页 > 其他分享 >【原创】BGP中有关路由注意事项

【原创】BGP中有关路由注意事项

时间:2023-09-19 10:35:26浏览次数:37  
标签:IBGP BGP EBGP neighbor 注意事项 路由 路由器

                                                                                                                      BGP中有关路由注意事项

1、对于BGP中的路由宣告,必须要和本地路由条目中的路由保持一致么?

答:不是,只需要保证本地路由条目中的路由是宣告路由中的子网即可。比如,我们在写静态路由时ip route x.x.x.x 255.255.255.255 next-hop y.y.y.y,但是我们在进行router bgp AS之下,进行network时,可以network x.x.x.0 mask 255.255.255.0,这样的方式同样可以将要宣告的路由宣告进BGP中。

 

2、对于EBGP邻居关系的路由器学习到的EBGP路由能否被它的IBGP邻居关系的路由器学习到?

答:不可以,因为对于EBGP邻居关系的路由器来说,当它对其另一个EBGP的邻居发送路由更新时,它会自动将更新路由的下一跳变为自己,即是变成其EBGP邻居关系路由器的下一跳;而对IBGP来说,它仍然保持不变,所以对其IBGP邻居来说,它只能产生IBGP路由,但是不是最优路由,从而不能进入到路由表中(show ip route),要想解决这个问题,就必须要在其IBGP的邻居建立过程中需要配置下一跳自我,即neighbor x.x.x.x next-hop-self,这样才可以形成完整的路由。

 

3、对于从IBGP邻居关系的路由器宣告出来的IGP路由能否被EBGP关系的路由器学到?

答:不可以,如果非要学到可以进行路由重分布。

 

4、简述IBGP路由的特点。

答:这里所说的IBGP路由,指的是从EBGP邻居学习到的路由,然后被该EBGP路由器的IBGP邻居学习到的路由。它具有下一跳不变,即是该EBGP路由被IBGP路由器学习到后,它的路由下一跳仍然是EBGP路由的下一跳(下一跳不变原则),要想解决这个问题,此时它需要配置next-hop-self,将下一跳指向该IBGP邻居的EBGP路由器的neighbor地址;另外一个特点就是从EBGP学习到的路由,只能传给其IBGP邻居的就近一跳,也就是所谓的只传一跳原则,因为这是BGP路由的防环特性决定的。

 

5、如何打破BGP只传一跳原则?(如何打破BGP防环机制形成的数据黑洞?)

答:有几种方式可以打破这一BGP固有属性。具体有IBGP全互联(Full-mesh)RR(路由反射器)、RC(联邦)、MPLS(多协议标签交换)等技术可以完美解决这一数据黑洞!相关思路及配置如下:

MPLS(多协议标签交换):由于存在数据黑洞,导致数据在AS内部被丢包,而内部的路由器没有运行IBGP协议,所以无法传递从BGP远端学到的该路由,既然没有相关的BGP配置,那引入该MPLS协议,通过标签转发

逻辑拓扑如右R1(运行BGP/IGP协议)----R2(运行IGP协议)-----R3(运行IGP协议)----R4(运行BGP/IGP协议)

在R1上配置如下:

R1#configuration

R1(configuration)#ip cef(运行MPLS协议必须要开启该ip cef功能,默认是开启的),对于思科设备来说真正的转发是依赖show ip cef表来进行路由转发的

在R1连接R2的出接口上配置mpls ip回车即可

 

同理在R2、R3两端互联的接口上配置mpls ip,在R4连接R3的互联端口配置mpls ip

Mpls默认使用的是ldp邻居协议,旧版本使用的是tdp协议,若改变默认的邻居协议,可以在configuraton模式下配置mpls lab protocol ldp/tdp,另外我们配置每台路由器的ldp协议的router-id,即mpls ldp router-id loopback 0(这里一般都是用环回口作为路由器的身份标识)查看相关的邻居命令如下:

Show mpls ldp neighbor  or show tag-switching tdp neighbor

Mpls路由的标签分发表项show mpls ldp bindings 形成了mpls转发表项show mpls forwarding-table

 

C(联邦):打破IBGP只传一跳原则,用联邦也可以完美解决,逻辑拓扑如下

R0(运行BGP协议)---R1(运行BGP/IGP协议)----R2(运行IGP协议)-----R3(运行IGP协议)----R4(运行BGP/IGP协议)---R5(运行BGP协议)

配置思路即是将R1与R2配置一个小AS,将R3与R4配置成另一个AS,这二个AS从属于R1、R2、R3和R4整体大AS的内部次AS组成小AS之间的联邦。

在R1上常规配置与R0的BGP邻居后,还要加一条配置bgp confederation identifier 大AS号(若R2和R3配置该条命令和不配置该条命令会对学习到的路由属性会有些区别,但路由的学习还是没问题),这是为了告诉R2,它们是既属于大AS内部的共同小AS,同理R3和R4也一样,但是由于R2和R3的特殊性,它们是大AS内部小AS之间的IBGP邻居关系, 所以还要配置一条bgp confederaton peers 对方的小AS号(指明大AS内部BGP联邦对等体,如果有多数量peers,则直接在后面依次添加即可,形成bgp confedaraton peers x y z等),大AS内部小AS之间的BGP邻居关系我们认为是一种特殊的BGP邻居关系。联邦AS在建立BGP邻居的时候是按照EBGP的邻居来建立的,但是在传递路由和属性则是按照IBGP的特点去传递的。

 

RR(路由反射器):route-reflector做路由反射器为了防止路由黑洞,所有AS间和AS内部的路由器配置EBGP邻居和IBGP邻居的基础性配置基本是一致的。它的整体思路是区分邻居形态,然后制定形态规则,打破只传一跳原则!制定RR时,它会把BGP的路由器区分为客户和非客户(IBGP的对等体)、EBGP peers(EBGP对等体),在客户和非客户的区分中对路由传递的对象有一个要求:就是客户可以把路由传递给客户、非客户、EBGP对等体;非客户把路由传递给客户、EBGP对等体;EBGP把路由传递给客户、非客户、EBGP对等体。记住:非空非不传!RR(路由反射器)它只是定义路由的可传对象!指定则为client(客户),不指定即为非客户!这种对别的路由器进行定义的身份只有本地有意义,再次申明:RR是指定义别人的身份!!!RR在实际应用中灵活性太强,所以很多时候只要是IBGP邻居,则统统相互配置成客户Route-reflector!!!(万精友式转发),在实际大的省际网络中,一般都有两个大的RR,用于路由的传递。

逻辑拓扑如下

R0(运行BGP协议)---R1(运行IBGP)----R2(运行IBGP协议)-----R3(运行IBGP协议)----R4(运行BGP协议)

配置思路就是:对于RR反射器,BGP路由的传递遵循指定的客户和非客户,而且对于明细路由在属性上有区别!当一条路由通过带有RR技术的设备发出去的,和一个普通的BGP的路由器发出去的,带RR技术的路由器会引入路由器的两条属性,一条是originator(起源:引入某条路由的路由器),一条是cluster list(簇列表:配置RR技术的路由器)。

这二条属性的重要作用就是取代BGP只传一跳原则,并且用于防环!Originator用于防止多角成环,而cluster list主要用于防止三角成环。

 

Cluster list里面并不是RR设备的环回接口或router-id的IP地址,而是是在router bgp X之下面的bgp cluster-id X中的X。默认cluster-id等于RR设备的router-id。如果出现cluster-id一致的RR,则路由是学不到的,但BGP邻居是正常建立,它以为该路由曾经经过了自己,所以当看到带有相同的cluster-id的属性路由过来时,它会拒收,直接丢弃!!!

 

在路由反射器的实施中,如果一个RR需要将路由传递给多个peers,我们可以用一种简便集中的方式进行配置管理,以减少命令行,减少占用buffer。对相同的出站策略对等体进行定义,所有对等体组成员共同维护同一个出站策略,但可以有多个不同的入站策略。相关命令配置方式如下:

 

neighbor long peer-group

neighbor xxxx peer-group long

neighbor yyyy peer-group long

neighbor zzzz peer-group long

neighbor long remote-as AS号

neighbor long route-map XXX out

 

具体查看对等体组peer-group的命令

Show ip bgp peer-group

 

我们正常的配置方式如下:

neighbor xxxx remote-as A

neighbor xxxx update-source loopback0

neighbor xxxx route-reflector-client

 

这里面把这些类似的配置以一种对等体组的方式进行配置:

neighbor long peer-group

neighbor long remote-as A(这个配置要在neighbor XXXX/yyyy/zzzz配置之前,否则后面的配置配置不上去)

 

neighbor long update-source loopback0

neighbor long route-reflector-client

 

Neighbor xxxx peer-group long

Neighbor yyyy peer-group long

Neighbor zzzz peer-group long

上述使用对等体组的方式在运营商级别需要大量的设备进行数据转发,而RR设备作为中间设备进行路由的传递才会用到这种RR的对等体组的方式。

 

 

6、IGP路由能否凭空宣告一条不存在路由条目或学习到的路由么?

答:对于IGP(Ospf、Rip、Eigrp或IS-IS)路由如果随便network一条凭空的路由条目或学习到的路由是无效的,它只能宣告直连路由或以出接口形式的静态路由,但是对于运行BGP路由协议的路由器来说,这种network(直连、出接口静态路由或学习到的路由)方式是可以的。

(注意:在BGP中internal和local的管理距离均为200,是为了防止本地路由被flapping,即是不希望本地BGP路由替代了或冲掉了IGP的路由)

 

7、BGP中network的路由条目必须要和路由中的保持一致么?

答:不一定,只是对于是否关闭auto-summary有不同的路由学习方式(这里不再赘述,下一篇文章中我会对是否关闭auto-summary和synchonization作一个简单的说明)

                                                                             

 

 

标签:IBGP,BGP,EBGP,neighbor,注意事项,路由,路由器
From: https://www.cnblogs.com/longshao0918/p/17713952.html

相关文章

  • 路由器中继解决多年来房间信号差的问题
    最近这段时间,发现书房的WIFI网络很差,5格信号只有3格有效,联想到平时在主卧房间和卫生间上网时基本没WIFI信号,是时候要想个办法解决一下了。经过一番研究后,最终通过一台闲置的路由器解决了以上问题。首先是我在网上查到了一款小米无线信号放大器,为了了解这块产品是否好用,我打开抖音......
  • 对于Istio网络路由链路的理解
    背景最近在看Istio的网络配置,对于里面的几个组件如ingress-gateway、Gateway、VirtualService、DestinationRule和k8s原生的Service间的关系不是很清楚,这里整理以下自己的理解组件这里可能陈述不完全正确,属于个人理解ingress-gateway:本质是一个Service,仍然是k8s原有组件,在......
  • analyze和collectFirstUIP函数使用pathCs和seen注意事项
    analyze和collectFirstUIP函数都非常巧妙地使用pathCs和seen进行遍历冲突生成的传播路径注意:相关修改和借用,需要确保reason中的c0为BCP蕴含文字。 由于传播函数在处理观察时未对watches_bin的观察元对应子句做相应的文字调整处理,所以最为直接的方法是在传播阶段确保二元子句......
  • vue3版的uniapp在路由这块有好的方案吗?
    在Vue3版本的uni-app中,你可以使用VueRouter进行路由管理。VueRouter是Vue.js官方提供的路由解决方案,可以方便地实现单页面应用的路由功能。以下是一些在Vue3版的uni-app中使用VueRouter的好的方案:安装VueRouter:首先,在你的uni-app项目中安装VueRouter。可以使用npm或yarn来安......
  • [注意事项] 使用雪花算法,查询时候出现精度缺失
    主键使用雪花算法:@ApiModelProperty("主键id")@TableId(type=IdType.ASSIGN_ID)privateLongid;出现:查询时候出现精度缺失:preview回显的值造成精度缺失,response的值没有问题解决方式:将id转换为字符串的返回@JsonSerialize(using=ToStringSerializer.class)priv......
  • Vue3+vite路由配置优化(自动化导入)
    今天在维护优化公司中台项目时,发现路由的文件配置非常多非常乱,只要只中大型项目,都会进入很多的路由页面,规范一点的公司还会吧路由进行模块化导入,但是依然存在很多文件夹的和手动导入的问题。于是我想到了我之前使用vuex时进行的模块化自动导入js文件,能不能使用到自动导入.vue文件......
  • 深入探讨Spring Cloud Config的动态路由
    前言SpringCloudConfig是一个非常流行的配置中心,它可以帮助我们集中管理应用程序的配置。在使用SpringCloudConfig时,我们通常会将配置文件存储在Git或SVN等版本控制系统中,然后通过SpringCloudConfigServer将这些配置文件暴露给客户端应用程序。但是,当我们的应用程序数量增......
  • Vue学习六:路由进阶
    一、路由的封装抽离目标:将路由模块抽离出来。好处:拆分模块,易于维护。第一步:在src目录下新建一个router目录,在创建一个index.js文件,将先前main.js中的路由代码转移到index.js文件中。(这里需要使用到vue所以需将vue包导入;需修改组件路径,@符号代表绝对路径src;需将路由实例导出)index......
  • 在MySQL 5.7中使用DECLARE语句的注意事项
    在MySQL执行以下SQL报错DELIMITER//CREATEPROCEDUREgenerate_and_insert_data()BEGINDECLAREiINTDEFAULT1;DECLAREjINTDEFAULT1;DECLAREtotal_iterationsINTDEFAULT1000;WHILEi<=total_iterationsDO--创建临时表用于存储生成......
  • HIS系统部署的关键步骤与注意事项
    HIS系统部署的关键步骤与注意事项引言:近年来,随着信息技术的快速发展,医疗行业也逐渐意识到数字化转型的重要性与必要性。医院信息系统(HIS)作为医疗信息化的核心,旨在提高医疗服务的质量与效率。在引入HIS系统之前,正确而顺利地部署系统是确保系统成功运行的重要步骤。本文将介绍HIS......