关键词:
1.1.BGP协议最佳路径选择算法
BGP是一个路径矢量路由协议,也就是说,它的工作就是在自主系统间交换路由信息,以便发现访问互联网某处数据的最有效路径。每个 BGP路由器通过邻居声名与周边的一个或多个路由器连接。一旦建立了邻居关系,这些BGP路由器之间就会相互交换路由信息。据我最近一次统计,整个互联网上有大约12.5万个路由信息,因此要配备一个强大的路由器才能将所有BGP路由信息接收下来。
1.1.1.BGP 最佳路径选择算法概述
由于整个互联网的BGP路由表有超过30万个路由,同时一个BGP路由器可能从多个来源收到多份的路由表,因此肯定会有一种方法可以比较不同的 BGP路由表,并从中选择最佳的路由方案。这种方法就是BGP 最佳路径选择算法。
可能你会注意到,Cisco BGP路由器会将应用权重(weight)作为路由表的第一标准,而其它品牌的路由器则不是这样。Cisco的官方BGP最佳路径选择算法文档中详细列明了所参考的各项标准。接下来我会列出每种标准并给出解释和范例。
默认情况下,BGP最佳路径都是基于最短自治系统(AS)的原理得出的。不过很多时候,诸如weight,localpreference以及MED这样的标准都是网络管理员自行设定的。
接下来我们就按照BGP选择最佳路径的参考顺序将这几项标准介绍一下:
n #1 Weight —权重是Cisco为本地路由器设定的自定义参数,并不随路由器更新而变化。如果指向某一IP地址的路径有多条(这很常见),那么BGP会寻找权重最高的路径。设定权重的参考因素很多,包括邻居命令, as-path 访问列表,或者路由镜像等。
n #2 Local Preference—本地出口优先级参数会告知 AS 哪条路径具有本地优先,数值越高优先级越高。默认为100。比如:
n bgp defaultlocal-preference 150
n #3 Network orAggregate —这个参数会选择本地发起的网络或聚合作为路径。将特定的路径加入路由中,会让路由更有效率,同时也节省了网络空间。更多有关聚合的信息,可以参考Cisco的文章“UnderstandingRoute Aggregation in BGP.”
n #4 Shortest AS_PATH— BGP 只有在weight, local preference和locally originated相当接近的时候才使用这个参数。
n #5 Lowest origintype —这个参数处理InteriorGateway Protocol (IGP) 协议的优先级低于 Exterior GatewayProtocol (EGP)协议。
n #6 Lowestmulti-exit discriminator (MED) —较低的 MED 值要优于较高的MED值。
n #7 eBGP over iBGP —类似于#5,BGP AS Path 更倾向 eBGP 而不是 iBGP。
n #8 Lowest IGPmetric —这个参数倾向于采用最低IGP作为BGP下一跳。
n #9 Multiple paths —这个参数决定是否要在路由表中装入多个路径。可以参考 BGP Multipath 获取更多信息。
n #10 External paths —当所有路径都为外部路径时,选择首先接收到的路径(较老的路径)。
n #11 Lowest routerID —选择来自具有最低路由器ID的BGP路由器的路径。
n #12 Minimum clusterlist —如果多个路径的originator或路由器 ID相同,选择cluster列表长度最短的路径。
n #13 Lowest neighboraddress —这是指最低邻居地址传来的路径。
1.1.2.案例分析
1.1.2.1. 拓扑图
上图为BGP协议最佳路径选择算法的验证拓扑。
1.1.2.2. 验证方法:
l 跟踪1.1.1.0/24验证第7条
l 跟踪3.3.3.0/24验证第10,11,13条
l 路由过滤跟踪3.3.3.0/24验证第6条(影响邻居最佳路由选择)
l 跟踪33.33.33.0/24验证第5条,并在此基础上验证第3条
l 跟踪33.33.33.0/24验证第4条
l 跟踪1.1.1.0/24验证第1,2条
若要完成此实验需满足两个重要条件:1.已经同步或者同步已经关闭,2.下一跳可达。
1.1.3.验证第十三条,最低的邻居IP地址:
在R1,R6间建立两个邻接关系,然后在R1上观察网络3.3.3.0/24使用那一条路径作为下一跳。
实验输出
R1#show ip bgp BGP table version is 2, local router ID is 1.1.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path *> 3.3.3.3/24 16.16.16.6 0 65236 i * 61.61.61.6 0 65236 i |
1.1.4.验证第十一条,比较较小的邻居的RouterID
在R3上观察1.1.1.0/24的路由,优选从R2过来的那条路径
实验输出
R3#show ip bgp BGP table version is 2, local router ID is 3.3.3.3 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path * i 1.1.1.0/24 36.36.36.6 0 100 0 65101 i *>i 23.23.23.2 0 100 0 65101 i |
1.1.5.验证第十条,EBGP优选the oldestone
通过在R2上输入命令cle ip bgp * ,重置R1,R2的邻接关系,然后在R1的路由表中观察到关于网络3.3.3.0/24的下一跳的变化情况
实施策略前输出
R1#show ip route bgp Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route + - replicated route, % - next hop override
Gateway of last resort is not set
3.0.0.0/24 is subnetted, 1 subnets B 3.3.3.0 [20/0] via 12.12.12.2, 00:00:46 |
实施策略后输出
R1#show ip route bgp Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route + - replicated route, % - next hop override
Gateway of last resort is not set
3.0.0.0/24 is subnetted, 1 subnets B 3.3.3.0 [20/0] via 16.16.16.6, 00:00:05 |
1.1.6.验证第九条,maximum-paths负载分担
在R1开启命令maximum-paths 2,应该在R1的路由表中看到关于网络3.3.3.0/24有两个下一跳,实现了负载分担。
配置如下
router bgp 1 bgp router-id 1.1.1.1 maximum-paths 2 |
实验输出
R1#show ip route bgp Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route + - replicated route, % - next hop override
Gateway of last resort is not set
3.0.0.0/24 is subnetted, 1 subnets B 3.3.3.0 [20/0] via 16.16.16.6, 00:00:05 [20/0] via 12.12.12.2, 00:00:05 |
1.1.7.验证第八条,lowestIGP metric
在R3观察1.1.1.0/24的路由,通过在R2上修改R2,R3间链路的带宽,从而影响EIGRP的metric。
配置如下
int s0/1 bandwidth 100 |
实验输出
R3#show ip bgp 1.1.1.0 255.255.255.0 BGP routing table entry for 1.1.1.0/24, version 5 Paths: (2 available, no best path) Not advertised to any peer Refresh Epoch 2 65101 12.12.12.1 (inaccessible) from 23.23.23.2 (2.2.2.2) Origin IGP, metric 0, localpref 100, valid, internal rx pathid: 0, tx pathid: 0 Refresh Epoch 2 65101 16.16.16.1 (inaccessible) from 36.36.36.6 (6.6.6.6) best Origin IGP, metric 0, localpref 100, valid, internal rx pathid: 0, tx pathid: 0 |
1.1.8.验证第七条,EBGP VsIBGP
在R2,R6间建立IBGP邻接关系,然后在R6上观察网络1.1.1.0/24的两个来源:
从R1来的是EBGP,从R2来的是IBGP
实验输出
R6#show ip bgp BGP table version is 3, local router ID is 6.6.6.6 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path * i 1.1.1.0/24 12.12.12.1 0 100 0 65101 i *> 16.16.16.1 0 0 65101 i |
1.1.9.验证第六条,MED
在R2,R6上分别修改关于网络3.3.3.0/24的med值,然后在R1上观察。
试验配置
R2 router bgp 236 bgp router-id 2.2.2.2 neighbor 12.12.12.1 route-map Net3 out ! route-map Net3 permit 10 match ip address 3 set metric 20 route-map Net3 permit 20 ! access-list 3 permit 3.3.3.0 0.0.0.255 |
R6 router bgp 236 bgp router-id 6.6.6.6 neighbor 16.16.16.1 route-map Net3 out ! route-map Net3 permit 10 match ip address 3 set metric 60 route-map Net3 permit 20 ! access-list 3 permit 3.3.3.0 0.0.0.255 |
实验输出
R1#show ip bgp BGP table version is 6, local router ID is 1.1.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path *> 3.3.3.0/24 12.12.12.2 20 0 65236 i * 16.16.16.6 60 0 65236 i |
1.1.10. 验证第五条,locally originated
在R3上观察26.26.26.0/24的网络
网络26.26.26.0/24在R6被重分发直连进入BGP表;在R2上被network进入BGP表
试验配置
R6 router bgp 236 bgp router-id 6.6.6.6 redistribute connected route-map S02 ! route-map S02 permit 10 match interface Serial0/2 |
R2 router bgp 236 bgp router-id 2.2.2.2 network 26.26.26.0 mask 255.255.255.0 |
实验输出
R3#show ip bgp BGP table version is 15, local router ID is 3.3.3.3 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path *>i 26.26.26.0/24 23.23.23.2 0 100 0 i * i 36.36.36.6 0 100 0 ? |
1.1.11. 验证第四条,Prefer shortest AS path.
在R3观察1.1.1.0/24的路由,R3应该可以收到分别从R2,R6的两条路由。
在R2上加route-map,利用as-pathprepend修改从R1过来的路由1.1.1.0/24的AS-path的长度
实验配置
R2 router bgp 236 neighbor 12.12.12.1 route-map Net1 in ! route-map Net1 permit 10 match ip address 1 set as-path prepend 1 set as-path prepend last-as 2 ! route-map Net1 permit 20 ! access-list 1 permit 1.1.1.0 0.0.0.255 |
实验输出
R3#show ip bgp BGP table version is 7, local router ID is 3.3.3.3 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path *> i 1.1.1.0/24 23.23.23.2 0 100 0 1 65101 65101 65101 i |
1.1.12. 验证第三条,是否起源于local router
在路由器R3观察网络1.1.1.0/24的两个来源:一个从IBGP学到,一个是本地network进来的
在R3上面多加一个环回接口1.1.1.3/24,或者在R2和R1运行EIGRP,R3通过EIGRP从R2学到R1在EIGRP中宣告的1.1.1./0的路由。
实验输出
R3#show ip bgp BGP table version is 6, local router ID is 3.3.3.3 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path *> 1.1.1.0/24 0.0.0.0 0 32768 i |
1.1.13. 验证第二条,本地优先级
配置之前后showip bgp(tracerout 1.1.1.1)观察1.1.1.0/24路由
通过在R2上修改1.1.1.0/24的路由的本地优先级,从而影响R3的路由选择,将R3到网络1.1.1.0/24的下一跳由原来的36.36.36.6 修改为23.23.23.2
实验配置
R2 router bgp 236 bgp router-id 6.6.6.6 neighbor 23.23.23.3 route-map Net1 out access-list 1 permit 1.1.1.0 0.0.0.255 ! route-map Net1 permit 10 match ip address 1 set local-preference 200 ! route-map Net1 permit 20 |
实验输出
R3#show ip bgp BGP table version is 7, local router ID is 3.3.3.3 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path *>i 1.1.1.0/24 23.23.23.2 0 200 0 1 65101 65101 65101 i |
1.1.14. 验证第一条,weight
配置前后观察R3上1.1.1.0/24的路由
实验配置
R3 router bgp 236 neighbor 36.36.36.6 route-map Net1 in route-map Net1 permit 10 match ip address 1 set weight 5 ! route-map Net1 permit 20 ! access-list 1 permit 1.1.1.0 0.0.0.255 |
实验输出
R3#show ip bgp BGP table version is 7, local router ID is 3.3.3.3 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path *>i 1.1.1.0/24 23.23.23.2 0 200 5 1 65101 65101 65101 i |
本文出自 “黑客的眼睛” 博客,转载请与作者联系!
bgp-17配置bgp负载均衡
...均衡,同一源IP地址,同一目标IP地址的一组数据被称为一个流,当网络中有两条等价的路径时,基于流的负载均衡规定,同一条流的流量只会在一条链路上被传输。因此,我们需要将默认基于流的负载均衡,强制指定为基于包... 查看详情
bgp项目实验案例(基于华为设备)
一:BGP概述1:自治系统自治系统是由同一个技术管理机构管理、使用同一选录策略的一组路由器的集合。2:动态路由的分类(1)按自治系统分类IGP:自治系统内部路由协议,包括RIP、OSPF、ISIS、EIGRPEGP:自治系统之间的路由协... 查看详情
bgp-13配置bgp多路径发布
JUNIPER文档里面对add-path的解释: “BGPpeersadvertiseroutestoeachotherinupdatemessages.BGPstoresitsroutesintheJunosOSroutingtable(inet.0).Foreachprefixintheroutingtable, 查看详情
图的应用——拓扑排序算法
拓扑排序在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的有限关系,这样的有向图为顶点表示活动的网,我们成为AOV网(ActivityOnVertexNetwork)。AOV网中的弧表示活动之间存在的某种制约关系,且不能存在回路... 查看详情
[从今天开始修炼数据结构]无环图的应用——拓扑排序和关键路径算法(代码片段)
...示活动的网,成为AOV网(ActiveOnVertexNetwork) ※若在一个具有n个顶点的有向图G= (V,E)中,V中的顶点序列v1,v2,……,vn满足若从顶点vi到vj有一条路径,则在顶点序列中,顶点vi必然在vj之前。则我们称这样的顶点序列... 查看详情
bgp是什么?bgp用于哪些地方?
...AS内路由的流量称为内部BGP或iBGP。更常见的是,BGP用于将一个AS连接到其他自治系统,然后将其称为外部BGP或eBGP。BGP用于在不同的主机网关,Internet或自治系统之间传输数据和信息。BGP是路径向量协议(PVP),它维护到不同主机... 查看详情
bgp常用属性介绍(代码片段)
...这些路由通过不同的方式,则Origin属性是决定最优路径的一个因素,用于标明路由的起源?Origin的3种属性:①i表明BGP路由通过network命令注入②e表明BGP路由是从EGP学来的,EGP协议在现网中很难见到,但可以通过路由策略将路由的O... 查看详情
如何用分组方法计算2层对象之间的拓扑?
...的入度为0,因此可以采取如下办法:步骤1:从图中选择一个入度为0的点且输出之步骤2:从图中删除该节点及其所有出边(即与之相邻的所有点入度-1)反复执行这两个步骤,直至所有节点都输出,即整个拓扑排序完成;或者直... 查看详情
数据结构(拓扑排序和关键路径)(代码片段)
拓扑排序拓扑序列: 设G=(V,E)是一个具有n个顶点的有向图,V中顶点序列V1,V2,......,Vn满足若从顶点Vi到Vj有一条路径,则在顶点序列中顶点Vi必须在顶点Vj之前。则称这样的顶点序列为一个拓扑序列拓扑排序 对一个无... 查看详情
bgp与ebgp
...无类别---传递的路由信息携带子网掩码路径矢量距离矢量一个AS为一跳一个路由器为一跳 不是算法概念,仅将IGP协议算好的路由信息传递出去,仅完 查看详情
bgp工作原理(5)
...文经过BGP输入策略引擎路由过滤或修改属性;路由器执行路径选择算法,来为每一条前缀确定最佳路径;2、Loc-RIB 存放经过输入策略引擎、路径选择处理过的路由得出的最佳路径被存储到本地BGPRIB中,然后将loc-RIB的路由... 查看详情
一个拓扑全搞定--一个拓扑搞定ospf的5种lsa类型
1.1. OSPF五种LSA类型1.1.1.实验目的查看所有路由器的数据库和路由表,深入了解OSPF的LSA类型和OSPF路由条目实验拓扑650)this.width=650;"src="https://s5.51cto.com/wyfs02/M00/06/63/wKiom1m3gl6gsR7QAAEKeFvH5s0145.jpg"title="2.jpg"alt="wKio 查看详情
ospf&bgp
...发表的。 二)最短路径算法SPF:由Dijkstra提出,将每一个路由器作为根(ROOT)来计算其到每一个目的地路由器的距离,每一个路由器根据一个统一的链路状态数据库会计算出全网的拓扑结构图,这个拓扑结构图在全网范围内是... 查看详情
bgp路径属性(4)
参考技术ABGP的路径属性描述了BGP路由的路径信息,是每个Update数据包的一部分;一、BGP路径属性可分成4大类:1、公认必遵 BGP路由器必须识别这类属性,Update报文必须携带这类属性;如果收到的更新报文中缺少... 查看详情
路由表与转发表:
...发表的结构应当使查找过程最优化,路由表则需要对网络拓扑变化的计算最优化路由表总是由软件实现的,而转发表可由硬件实现BGP(路径向量选择协议):寻找一条能够到达目的网络且比较好的路由,使用TCPRIP与OSPF:相同点:都... 查看详情
拓扑排序和关键路径算法
拓扑排序
1.拓扑排序的先决条件: 图必须是一个无环有向图。序列必须满足的条件: (1)每个顶点出现且只出现一次。 (2)若存在一条从顶点A到顶点B的路径,那么在序列中顶点A出现在顶点B的前... 查看详情
stp理论03-拓扑算法
...根端口的配置消息和根端口的路径开销,为每个端口计算一个指定端口配置消息:a、根桥ID替换为根端口的配置消息的根桥ID;b、根路径开销替换为根端口配置消息的根路径开销加上根端口对应的路径开销;c、发送者BID替换为... 查看详情