BGP为大型网络而生,具有以下这些特性:
1.可靠性
2.稳定性
3.扩展性
4.灵活性
下面我们具体分析
可靠性:
+连接的建立:利用TCP提供可靠传输服务
+连接的保持:使用keepalive消息来维护会话的完整性
+路由选择信息的精确性:精确的路由路由信息是可靠转发的重要前提,BGP使用几种方法来提高精确性。
1.检测环路
2.使用过滤技术
3.检查下一跳可达。
4.及时撤回对等体中的本地不可达路由
稳定性(非常重要的特性):
路由稳定在一个大型网络中是十分关键的,大量路由的震荡将会对网络产生灾难性影响
1.最小宣告时间间隔(Minimal Advertisement Interval):在CISCO IOS软件中,对于EBGP会话来说是30,对于IBGP会话来说是5S (这个间隔应该是会话建立后间隔多少秒,对等体会接收宣告路由的时间)
2.路由衰减(route dampening):是抑制不稳定的一个特性。路由器可以跟踪一条路由的震荡纪录,超过罚值的路由将会受到惩罚,以至被抑制。
3.软重置(soft reconfiguration)和路由刷新(route refresh):在路由策略发生变化时,如果会话不是必须被重置,那么就会提升BGP的稳定性。(哪些策略必须被重置:1.bgp related-access-list[soft] 2.weights[soft] 3.distribution-lists[soft]
4.timer’s specification[hard]
5.administrative distance[hard]
6.route-maps[soft])BGP温和重配置和路由刷新,它们都是以一种不扰乱路由的方式来清除BGP会话,对于不重置BGP会话而改变BGP策略是十分有用的。(both inbound and outbound).outbound更有效率,inbound原理是将上游路由器传至Adj-RIB-In的路由条目数传传至内存,这无疑会消耗有限的路由器资源。而我们现在使用的SOFT软清,是温和重配置的升级版本,他与其不同之处就在于,他并不把路由条目传至内存,而是执行动态的交换,我们可以看一下实验效果。实验
4.不中断转发(NSF)或优雅启动(Graceful Restart)
如果BGP会话被重置,与会话相关的BGP路由表和IP表信息都会被清除。在新的转发数据库建立之前,有可能导致数据黑洞,这时候可以使用不中断转发(NSF)或优雅启动(Graceful Restart)特性将允许路由器利用现有的信息(从原有会话保留下来的信息)继续转发数据包。
5.也可以使用对等体组来提高收敛速度。(此时,路由器不需要为发给每个对端的每条Update消息重复地访问策略数据库。它只需要一次策略数据库,生成一个Update消息,然后将该消息的副本发给对等组中的每一个成员。就是说,只需要生成一份更新,就可以复制到整个组的对等体。收敛时间平均减少了22%,输入丢弃也显著的增加了,是由于update复制提高了路由器的update生成率的结果。通过优化,使丢弃率降低到了0,也可优化收敛时间降低至12%)
6.聚合:不仅减少通告的前缀数量而且增加BGP的稳定性。聚合后的路由不受明细路由的影响。(事实上,聚合只是帮助隐藏了不稳定性,对失效的路由本身无助)
可扩展性:
可以从两个方面来评估BGP的可扩展性:对等会话(peer session)数量和路由的数量。BGP已经证明可以支持数百个对等会话,并能很好地维护超过数十万条的路由。
全互连会限制BGP的可扩展性,路由反射和联盟是增强BGP网络的可扩展性的两个方法。
灵活性:
BGP的灵活性可以通过路径属性(1.well-known mandatory:As-Path,Next-hop,origin 2. well-known discretionary:Local Preference , Atomic Aggregate 3.optional transitive:community , aggregateor 4.optional non-transitive:MED)的数量来说明,这些属性是用来定义路由策略(1.distribution lists 2.filter-lists 3.route-maps https://www.doczj.com/doc/792012393.html,munities)以及一些描述BGP前缀特性的参数。是由于这些属性才使BGP成为一种独特的路由选择协议。(这也是今天我们要重点讨论的路径决策的一部分)。
BGP的强大
BGP掌控着Internet上几十万条路由,之所以这么强悍是因为其深谙无为而治的道理,IGP的协议都有着非常复杂的路由算法(SPF/DUAL),看上去很完美的算法反而束缚了这些协议的施展空间,BGP没有算法,有的是可以任意驾驭的规则(属性)相对于IGP而言,BGP协议的精髓在于对路由的控制,而不是学习路由。
对IGP的控制:可以network宣告直连,静态,IGP路由(默认路由不行);重分布IGP的路由
iBGP重发布进入IGP是被禁用的(默认情况下)将iBGP中的路由信息发布到EIGRP/OSPF/IS-IS这些内部网关协议中会导致自治系统内的环路的产生,不建议这么做。bgp redistribute-internal 命令可以启用这个功能,但要特别注意的是,必须使用route-map控制特定的iBGP路由重发布进入IGP。(这在等会讲同步的时候还会讲到,不只这个原因)
Synchronization
在IBGP没有普及之前,同步是“黑暗时代”的产物
B不会通告AS2的路由,除非此路由在IGP中被学到。这也是同步规则所描述的:不使用或通告通过IBGP 学习到的外部邻居的路由,除非此路由在IGP中被学习到。
这时候,需要把BGP路由注入到IGP中达到同步。IBGP禁止重分布进IGP的原因,不只因为会造成环路,而且将大量的前缀重分布进IGP,将会导致IGP处理过程“阻塞”,造成网络崩溃。现在同步默认被禁用。(有可能造成“瞬时黑洞”)
Routing Issues If BGP Not on in All Routers in Transit Path
1.b e 能不能建立BGP连接?
2.F 能不能学习到10.0.0.0网络?
3.F能不能到达A?
Split Horizon Rule
用全互联解决水平分割问题
解决水平分割问题:Full meshed,路由反射,联盟
IBGP水平分割原则B 从一个IBGP邻居学到路由时,这个路由的下一跳是接收路由器的一个接口地址时,将不会接收。IBGP路由在一个AS中传递时,下一跳不会改变。
当将IGP路由引入BGP时,那么下一跳将是本机0.0.0.0。
特例:如果IBGP邻居是用直连接口建的邻居时,我将接收。下一跳为IBGP邻居直连接口地址。
BGP PATH Attributes,)
1.ORIGIN属性6t
优先顺序]7mnb^
IGP-origin=09(R0b5
EGP-origin=12$j
INCOMPLETE-origin=3Qt(0
如果前缀通过redistribute命令被重分布到BGP中,那么它的ORIGIN属性就被设置为3;如果前缀通过network命令被注入到BGP中,那么它的origin属性就会被设置为0。事实上,由network命令发起的路由优于那些被重分布的路由。@g(X
2. AS_PATH属性BY!
等会详解此属性rv']7L
怎样设置AS号:抓路由,route-map,set as-path preprend X1mE
?沃尔夫网络CCIE实验室 -- 沃尔夫,你可信赖的学习伙伴! G(sa>
3.NEXT_HOP属性KUR$uV
下一跳要直连?BGP会执行递归查找(IP RIB)。s
但是下一跳必须可达,不可达无效。\n9n8
1.如果是EBGP对等关系;#vrp'
2.如果是IBGP对等关系8p8
3.如果是EBGP到IBGP的对等关系E
?沃尔夫网络CCIE实验室 -- 沃尔夫,你可信赖的学习伙伴! ~'[
第三方下一跳3z>=c|
从接口收到的路由更新的源地址和要发送出动的接口地址在同一网段,则保持这条路由的下一跳不变。用直连接口建邻居时会产生第三方下一跳,但当全部用环回口建邻居和作为更新源时不会产生第三方路由现象,因此出现次优路径。q8>
?沃尔夫网络CCIE实验室 -- 沃尔夫,你可信赖的学习伙伴! }7IeA}
https://www.doczj.com/doc/792012393.html,munity属性eSS}bc
三个公认社团:8VPnR
NO_EXPORT:接收到的携带该值的路由不能公布给EBGP对等体,或者如果配置了一个联xaPCGz
盟,该路由不能在联盟范围以外公布7
NO_ADVERTISE:接收到的携带该值的路由不公布给EBGP或者IBGP对等体(不传递)K
LOCAL_AS:接收到的携带该值的路由不能公布给EBGP对等体,以及在联盟内的其他自治,zz
系统的对等x PC
5.Weight,LOCAL_PRE,MED d^:y
图解?沃尔夫网络CCIE实验室 -- 沃尔夫,你可信赖的学习伙伴! 2Jw
AS-Path Attributes M#_Q-
AS_SEQUEN就是我们平时保存的前缀经过的AS的列表,为什么说他是有序的,因为AS列表以相反的顺序列出了一条前缀先后所经过的AS,最后一个AS放置在列表的开始处。(AS号的范围1-255)07:E{D AS_SET是聚合前缀所经过的AS图解jrgJS
这时AS的列表号就有可能是{456,789,123},所以说他是无序的$Kg
那这时,AS_SET中的列表号是如何计数的?z~tH
比如我现在要比较{111,222} {333,444} i和1 2 3 i的两条路径,哪条优胜?(>xlm
AS_SET中的列表,不论有多少个AS,都被计数为1"r
AS_CONFED_SEQUENCE and AS_CONFED_SET不被包含在AS_PATH属性中`
BGP RIB%,Z#e
得出的最佳路径被保存到LOC-RIB中,如果启用了multipath特性,最佳路径和所有等成本路径都将被提交给IP-RIB。fmE}
当在BGP进程中同时应用了很多优先级属性来控制路由,那么,他们的先后顺序是什么?x/|{F
进入路由器:q%
1. route-map e;\X
2. filter-list N
3. prefix-list, distribute-list H)5
路由器发布:MReFzq
1. prefix-list, distribute-list V:
2. filter-list Y?
3. route-map|N}
特别注意:prefix-list和distribute-list是互斥的,也就是说,在针对于同一个路由器的同一个方向的邻居,只能用其一pDc)
?沃尔夫网络CCIE实验室 -- 沃尔夫,你可信赖的学习伙伴! v:MyyR
Decision Process
Weight是首选的参数。Weight值最高的路径优先,本地有效。情况下,本地始发的路径32768;所有其他的路径值为0Vf( 8
LOCAL_PREF值最高优先,默认为100we$
?沃尔夫网络CCIE实验室 -- 沃尔夫,你可信赖的学习伙伴! +&
Originated route:下一跳为0.0.0.0的路由是指在本地起源。可以通过这些命令获得:default-originate(针对每个邻居配置), default-information-originate(针对每个地址簇配置),network , redistribute , aggregate-address~a{`aJ
AS_PATH:“best bestpath as-path ignore”-A n AS_SET counts as 1, no matter how many ASs are in the set.?wA -The AS_CONFED_SEQUENCE and AS_CONFED_SET are not included in the AS_PATH^X
Origin:略1{I
MED:MED值最小的路径胜出。对于多条路径,只有在AS_SEQUENCE中的第一个AS相同的情况下,才会比较MED.任何打头的AS_CONFED_SEQUENCE都将被忽略。.U1}=
A.MED如何丢失?|#sL
b.Bgp determineistric-med:不管前缀收到的顺序如何,MED的比较结果是一致的。所有路径都将基于AS_PATH编组。在每个组内,根据MED大小排序。图解.F/
c.MEDs只比较从相同邻居AS来的路径V14u
d. 如果激活了bgp always-compare-med,那么对于所有路径都将比较MED,而不考虑他们是否来自于同一AS.如果你使用了这个选项,就应该在整个AS中都这么做,以避免路由选择环路.Ew?;y
图解?沃尔夫网络CCIE实验室 -- 沃尔夫,你可信赖的学习伙伴! Ek^|D
E.‘bgp bestpath med confed’启动的话,对于所有包含AS_CONFED_SEQUENCE的路径来说才比较MED,也就是说,始发于联盟的。注意,如果一条路径包含了任何外部的自治系统,那么这条路径就不参与比较,而它的MED在联盟内部被传递时不被改变bU
Prefer an External path over an Internal path|r;!L
我们说,EBGP优于IBGP可以说是简单的根据AD的比较,但是,事实并不是这样的.大家可以回去做下实验,可以发现把IBGP的管理距离改为小于20,路由器依然会选择EBGP的路由做为最优.我个人的的理解:AD是不同协议的比较,而IBGP,EBGP同属于BGP,AD根本不会参与路由决策。所以,这条选路原则只是一样硬性的规定,不作任何比较。IG(H7
包含AS_CONFED_SEQUENCE被看作是内部路径。在路径选择中,联盟外部(Confederation External)和联盟内部路径没有差别,因为他们都被看作是内部路径。E+
Lowest IGP metric to the NEXT_HOP(
选择到下一跳最低IGP metric值的路由,这一步使得本地拓扑信息被考虑进去RMS`T
For External paths prefer the “oldest”path to minimize route-flap.{qlvj
使用‘bgp best path compare routerid’命令的原因:具有最低RID的路径没有被选为最佳路径的情况6gGu5w
图解?沃尔夫网络CCIE实验室 -- 沃尔夫,你可信赖的学习伙伴! F@
造成这个情况的原因是,来自R5的路由一定是先于R3被R1接收。如果R1已经选择R5作为路径为最佳路径的,那么即使R3的以更低的RID值到来,R1仍然会保持R5作为最佳路径。这样做,可能主要是为了保证路由稳定性。's,
There is no current best path;这指的有可能是:当邻居提供的路径down掉之后,路由就不是当下的最佳路径,此时忽略最老路由的比较。