HCNP Routing&Switching之BGP路由属性和优选规则
前文我们了解了BGP防环机制和路由聚合相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15458110.html;今天我们来聊一聊BGP路由属性和选路规则相关话题;
BGP路由属性
先来看一看BGP路由表
提示:BGP路由表主要显示了BGP路由,其中主要由路由状态代码,目标网络地址,下一跳,med属性值,本地优先级,路由首选值,以及路由的AS_path和起源属性组成;状态代码中,星号(*)表示该路由可用,如果没有星号,表示该路由不可用,一般情况不可用的BGP主要有下一跳地址不可达,即没有去往下一跳的路由;其次还有可能是对应路由已经在IGP路由里学习到了,因为IGP路由的优先级要比BGP高,所以在ip路由表里存在的就是IGP路由,而对于BGP来说,就不可用(因为有IGP路由更优);大于号(>)表示最优路由,即当一个网络有多个下一跳时,首选的路由;d表示,抑制,惩罚;即对应路由有惩罚机制;BGP路由是有惩罚机制的,如果一条路由不稳定,一会好,一会不好,此时对应路由就可能被惩罚(如果开启了惩罚机制);即惩罚一段时间不可用,等惩罚时间过去以后,对应路由才会从抑制状态变为可用;s表示抑制,即该路由不被通告给其他邻居;只存在本地bgp路由表中;起源属性(Origin),i表示本地宣告,即network宣告的路由;?表示导入外部路由,即引入宣告的路由;e表示从egp学习到的(BGP前身,目前已被淘汰);起源属性优先级是本地宣告大于引入 宣告;
BGP路由属性分类
提示:BGP路由属性主要从公认属性和可选属性分类,其中公认属性中又分必选和可选;可选属性中有分可过渡和非过渡;公认必遵表示所有BGP都可以识别的属性,并且是必须存在Update消息中的;比如起源属性,as_path,下一跳这些属性就是所有BGP路由器在更新消息中必须要有的属性;换句话说这些属性是不可省略,必须存在;公认任意就是指所有bgp路由器都可以识别,当不要求必须存在update消息中,即这些属性可以存在,也可以不存在,取决对应路由的需求,不是必须强制要求存在update消息中;比如本地优先级,自动聚合;可选过渡是指不被所有BGP路由器识别,如果无法识别,对应属性是可以正常传递给邻居的;比如手动聚合,团体属性;可选非过渡是指不能被所有BGP路由器识别,如果不能识别,则对应属性丢弃(只是对应路由的对应属性丢弃,并不是对应路由被丢弃);比如med,med就类似ospf里的开销,这个属性在bgp里是私有属性,所以不是被所有BGP路由器识别(华为是med,思科是metric,但两者作用都是一样的);
BGP路由属性图解
1、PrefVal:优选值,数字越大越优先;默认0;私有属性,主要作用是定义本地路由的优先级,作用范围只限于本地有限,不传递给邻居;
提示:当去往同一网络有多个下一跳时,我们可以通过调整很优选值来影响去往对应网络的路由;如上所示,我们希望RTA去往RTD经过RTC,那么我们可以将RTA去往RTC的首选值调大;
2、Origin:起源属性,主要用来描述对应BGP路由的产生方式;
提示:起源属性优先级顺序是,本地通过network宣告的路由,要优于引入宣告的路由;
3、AS_Path:AS路径,主要用来描述BGP路由在传输的路径中所经历的AS的列表;该属性会在EBGP传递时更新(即传递给EBGP邻居时,会在对应路由更新中加上自己所在AS的号码),同时AS_Path这个属性也是EBGP防环的一个属性,即丢弃AS_Path属性中包含本端as号的路由;该属性是数量越少越优先(一个as我们可以理解为RIP里的跳数,经过多跳数越小,对应路由就越优);as_path除了能够防止as间环路,同时它也可以用作路由过滤,比如as_path filter;
提示:如上图所示,针对as100去往RTA,如果从RTA--->RTB--->RTD--->AS100,那么对于AS100收到的路由更新中对应AS_path的值为65201,65223,65101;如果从RTA--->---RTC--->AS100,对应as100收到RTA的路由更新中as_path的值为65330,65101,相对于上面的路由,对应AS_Path的长度要略小,所以as100去往RTA会经过RTC到达RTA,而不会走经过RTD,RTB在到达RTA;
4、Next Hop下一跳,主要用来描述对应去往目标网络的下一跳属性 ,即发出路由更新的路由器(更新源);
提示:如上所示,RTD发布路由更新,对应下一跳就会是本地出接口ip地址(如果是物理口建立邻居),而对应IBGP类型邻居,默认更新不会更改更新源,即RTC收到RTD的路由更新,对应下一跳还是RTD,即RTC向EBGP发送对应路由更新,其下一跳不会更改为RTC,而还是RTD;对于RTB收到RTC的路由更新,因为RTB和RTA是EBGP邻居,所以RTB收到RTC的路由更新以后,会把对应的下一跳修改为自己,然后再传递出去;同样的道理,RTA收到RTB的路由更新,因为RTA和RTF或RTE是IBGP邻居,所以RTA收到RTB的路由更新以后,向邻居传播时,它不会更改更新源,即下一跳地址还是会是RTB;所以我们在RTF看到去往8.0.0.0/24的路由里,对应下一跳属性会是RTB的接口地址;
5、Local-Preference:本地优先级,该属性值在IBGP邻居传递,数字越大越优先,默认是100;主要用于控制流量怎样流出AS,即对出站路由的控制;
提示:如上图所示,对于RTD要想去往RTA的路由,我们可以在RTC或RTB上更改本地优先级属性来影响RTD去往RTA的路由路径;如果我们想要让RTD的流量经过RTC到达RTA,那么我可以在RTC上将对应本地优先级属性调大,从而达到影响as65101的出站路由;
6、MED:Multi-Exit-DISC,该属性类似IGP里的度量值(cost),主要用于区别到达同一邻居AS的多条入口链路;数字越小越优先;该属性仅在相邻的两个AS之间传递,收到此属性的AS不会在通告给任何其他第三方AS;该属性常用语控制流量怎样进入AS,即控制AS入站路由;
提示:如上图所示,我们想要控制AS65330的入站路由,我们可以在RTB和RTC上修改med的值,如果我们希望AS65101和AS65330之间的流量走RTB,我们可以将RTC的med调大,或者降低RTB的med值,从而让RTA学习到的路由对应下一跳为RTB;默认情况下,不允许对比来自不同AS邻居的路由信息中的med值,除非能够确认不同AS采用了同样的IGP路由选择方式,我们可以使用命令compare-different-as-med来比较不同AS邻居的MED值;如下所示
提示:针对192.10.0.0/16这个网络来说,它从as500和as600发送的MED不会被as700作为选路对比条件;因为med只会被来自同一AS到达多个相邻邻居入站路由对比条件;像这种不同AS是不被采用;当然如果能够确定AS500和as600都是使用相同的IGP路由协议(比如都是用ospf作为IGP路由协议)和路由选择方式(路由策略等),那么我们也可以使用命令compare-different-as-med来对比来自不同AS中med的值;
BGP路由优选规则
BGP选路规则分三种情况
1、如果该路由到达目的地的路由是唯一的,则直接优选;
2、如果达到同一目的地的多条路由,优选优先级最高的,即比较优先级,优先级最高被优选;
3、如果达到统一目的地的且具有相同优先级的多条路由时,则使用如下更细的原则比较
提示:BGP路由优选的首要条件是对应路由的下一跳必须可达,即只会在BGP路由表中对应路由有星号的路由上进行优选;满足下一跳可达的前提下,首先优选首选值(Preference_Value)最高的路由(该属性为私有属性,仅在本地有效,一般不长修改来影响路由选路);如果首选值一样,则对比本地优先级(Local_Preference),本地优先级最高的路由被优选;如果本地优先级一样,则比较聚合方式,聚合方式是手动聚合大于自动聚合,大于本地network宣告,大于引入宣告,大于从邻居学习到的路由;如果聚合方式一样,则比较AS_Path长度,AS_Path最短的路由被优选(这里的AS_Path最短是指经过的as数量最少,并非as号码长度);如果AS_Path长度一样,则比较起源属性,起源属性优先级是本地宣告大于引入宣告;如果起源属性也一样,则比较来自同一AS的路由,优选MED最小的路由;如果MED也一样,则比对邻居类型,邻居类型优选顺序是EBGP类型邻居大于IBGP类型邻居;如果邻居类型也一样,则优选AS内部IGP的开销最小的路由;即比较去往对应下一跳的开销;去往对应下一跳开销小的路由被优选;如果去往对应下一跳的开销一样,则比较cluster_list,优选cluster_list最短的路由,如果cluster_list长度一样,则优选orginator_Id最小的路由;cluster_list和orginator_id这个是路由反射器中的属性,目前不特别介绍;如果上述属性都一样,则比较router-id,优选router-id最小的路由器发布的路由;如果router-id也一样,则优选ip地址最小的邻居学习到的路由;
从上面的BGP路由优选规则来说,BGP不管怎样它都会选出一条最优的路由来,在BGP里没有等价路由;默认情况下BGP是不允许有等价路由的,即等价路由的功能是关闭的;当然如果在满足上述前9条的前提下,我们可以视为对应路由为等价路由;我们可以使用命令开启BGP等价路由功能;
BGP聚合方式对选路的影响
提示:默认情况下,如果手动聚合和自动聚合开启了,对同一网络路由的聚合如果不是一样,则手动聚合和自动聚合不冲突;如果自动聚合和手动聚合,聚合后的路由一模一样,则手动聚合优先级高于自动聚合;如上图所示在RTB上开启了自动聚合,同时也手动聚合200.0.0.0/24;此时手动聚合和自动聚合后的路由一模一样,则优先通告手动聚合后的路由,对于自动聚合的路由不会通告给任何邻居;
邻居类型对BGP选路的影响
提示:如上图所示,对于RTA来说,它从RTC通过EBGP学习到达200.0.0.0/24网络,同时也从RTB通过IBGP学习到达200.0.0.0/24的路由;此时RTA会优选通过EBGP邻居类型学习到的200.0.0.0/24的路由;原因很简单,因为RTB和RTA是IBGP邻居;即在同一AS内;那么对于同一AS内的路由器来说,路由更新只传递一跳,如果RTB从内部其他路由器学习到200.0.0.0/24的路由,此时是不会发送给RTA的;所以RTB能够学习到达200.0.0.0/24网络的路由,肯定是从其他AS学习过来的;这样一来,RTA从其他as直接学习到达200.0.0.0/24网络的路由,肯定优于RTB从其他AS学习到达200.0.0.0/24网络路由后,再次传递给RTA;所以BGP选路原则中对于同一目标网络来说,从EBGP邻居学习到的路由要优于从IBGP邻居学习到的路由;
AS内部IGP开销对BGP选路的影响
提示:如上图所示,针对200.0.0.0/24网络来说,RTA通过BGP能够学习到达200.0.0.0/24网络的下一跳有两个;在其他条件都一样的情况下,此时内部asIGP的开销是可以作为BGP选路的一个评判标准;如图RTA如果走RTB,则对应链锯的带宽为50M,而走RTC则对应链路带宽为100M;很明显走RTC的链路更优;所以在其他条件都一样的情况下,对比去往对应下一跳的开销就作为选路的标准;即as内部IGP开销越小,对应链锯就更优,对应的BGP路由也就更优;
Router-ID与IP地址对BGP选路的影响
提示:如上图所示,如果在优选值,本地优先级,聚合方式,as_path,起源属性,med以及内部IGP开销对比都一样的情况下;此时会对比对应路由的router-id;即发送对应路由的路由更新路由器id,router-id最小被优选;如图,对于RTA去往200.0.0.0/24的路由来说,在RTA的BGP路由表中会有三个下一跳,一个是RTC,两个为RTB(RTB和RTA建立两个邻居,所以对应下一跳也会有两个);首先在三个下一跳中对比router-id,router-id小者被优选;所以RTC不会被优选(router-id大于RTB);但对于RTA来说,下一跳为12网段和21网段的router-id都是同一路由器,所以router-id一样;此时比较ip地址,ip地址最小的被优选;所以对于RTA去往200.0.0.0/24网络的的最优路由是下一跳为10.1.12.2,而非10.1.21.2;原因就是10.1.12.2小于10.1.21.2;
HCNP Routing&Switching之BGP路由属性和优选规则的更多相关文章
- HCNP Routing&Switching之BGP路由控制
前文我们了解了BGP的路由属性和优选规则相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15489497.html:今天我们来聊一聊BGP路由控制相关话 ...
- HCNP Routing&Switching之BGP路由过滤和AS-Path-Filter
前文我们聊了下通过修改BGP路由属性来影响路由,从而达到控制BGP路由的目的:回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15495585.html:今天我们 ...
- HCNP Routing&Switching之BGP团体属性和团体属性过滤器
前文我们了解了BGP的路由过滤已经as-path过滤器的使用相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15542559.html:今天我们来聊一聊 ...
- HCNP Routing&Switching之BGP路由宣告
前文我们了解了BGP报文结构.类型以及邻居状态相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15422924.html:今天我们来聊一聊BGP路由宣告 ...
- HCNP Routing&Switching之BGP防环机制和路由聚合
前文我们了解了BGP路由宣告相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15440860.html:今天我们来聊一聊BGP防环机制和路由聚合相关话题 ...
- HCNP Routing&Switching之BGP基础
前文我们了解了路由注入带来的问题以及解决方案相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15362604.html:今天我们来学习下新的路由协议BG ...
- HCNP Routing&Switching之BGP报文结构、类型和状态
前文我们了解了BGP的邻居建立条件.优化以及BGP认证相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15395723.html:今天我们来聊一聊BGP ...
- HCNP Routing&Switching之IS-IS路由聚合和认证
前文我们了解了IS-IS路由渗透和开销相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15302382.html:今天我们来聊一聊IS-IS路由聚合和认 ...
- HCNP Routing&Switching之BGP邻居建立条件、优化和认证
前文我们了解了BGP相关概念.AS相关概念以及BGP邻居类型.基础配置等,相关回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15370838.html:今天我们 ...
随机推荐
- json包中的Marshal&Unmarshal 文档译本
Marshal func Marshal(v interface{})([]byte, error) Marshal returns the JSON encoding of v. Marshal返回 ...
- [源码解析] 深度学习分布式训练框架 horovod (20) --- Elastic Training Operator
[源码解析] 深度学习分布式训练框架 horovod (20) --- Elastic Training Operator 目录 [源码解析] 深度学习分布式训练框架 horovod (20) --- ...
- 集合Collection ----List集合
Collection集合体系的特点: set系列集合:添加的元素是 无序,不重复,无索引的 ----HashSet: 无序,不重复,无索引 ----LinkedHashSet: 有序,不重复,无索引 ...
- JScript.net
参考网址一.JScript帮助指南 http://doc.51windows.net/jscript5/?url=/jscript5/dir.htm 参考网址二.以下网址列出的类,可以尝试一下,会有意 ...
- YbtOJ#903-染色方案【拉格朗日插值,NTT,分治】
正题 题目链接:https://www.ybtoj.com.cn/contest/115/problem/3 题目大意 两个长度为\(n+1\)的序列\(a,b\) \(a_i\)表示涂了\(i\)个 ...
- Batch Normalization和Layer Normalization
Batch Normalization:对一个mini batch的样本,经过一个nueron(或filter)后生成的feature map中的所有point进行归一化.(纵向归一化) Layer ...
- Go语言之结构体与方法
一.结构体 结构体是一系列属性的集合(类似于 Python 中的类) 1.结构体的定义与使用 // 定义 type Person struct { Name string Age int Sex st ...
- cadvisor+prometheus+alertmanager+grafana完成容器化监控告警(一)
一.概况 1.拓扑图 2.名词解释 Grafana 可视化监控容器运行情况 Prometheus: 开源系统监视和警报工具包 Alertmanager 一个独立的组件,负责接收并处理来自Prometh ...
- 函数式编程 —— 将 JS 方法函数化
前言 JS 调用方法的风格为 obj.method(...),例如 str.indexOf(...),arr.slice(...).但有时出于某些目的,我们不希望这种风格.例如 Node.js 的源码 ...
- Serverless 如何在阿里巴巴实现规模化落地?
作者 | 赵庆杰(卢令) 来源 | Serverless 公众号 一.Serverless 规模化落地集团的成果 2020 年,我们在 Serverless 底层基建上做了非常大的升级,比如计算升级到 ...