BGP选路原则详解,2012最新版(超级详细)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
废话部分,我肯定不是第一个总结bgp选路原则的,也不会是最后一个总结选路原则的,下面的所有总结是我整理出来以我最容易理解的方式表达的,我习惯是能用文字或
语言表达,尽量不动手做实验,有的地方只有比较特殊的top结构才会出现的情况,我懒
得做实验,我也没提top结构,就麻烦大家自己动动手设计一个呗,嘿嘿……本人水平有限难免有差错,那个哥们要是发现不对之处,请立刻提出来,我自己理解错了没关系,我不想误人子弟。
……………………………………………正文开始了…………………………………………
首先要明确一点在往下看选路原则,所有这些选路原则都是在BGP表里进行的,并不一定是选取最终的路由表中的路由条目。例如:你BGP下宣告的路由是通过IGP学到的,这条路由在BGP表里也会参与选取,并且正常情况会在第一条weight就比较出来,作为有效地的优选路由,但是本地的路由表肯定不会装下,因为任何一个IGP的默认的AD都会小于IBGP的AD值(200),如果你非要把IGP的AD值改成比IBGP大,那么恭喜你,你成功的把BGP下这条路由的引入根源给干掉了……结果不用说了,感兴趣自己试试吧。如果是非思科厂商也可能,不在这一条比较出来,而是在第三条next-hop比较出来,但是最终的装表结果一样。(如果没看懂我啰嗦的,那就往下看,看完你就明白了。)
选路知识铺垫篇:
BGP的属性:
1.well-know
(1)well-know mandatory 公认必遵的,每条BGP路由必须携带的属性并且传给其他路由必须识别
(2)well-know discretionary 公认自决,每条BGP路由可以携带也可以不携带的属性,但一旦携带必须被其他的路由器所识别的属性。
2.optional
(1)optional transitive 可选的传递的属性,即这个属性值传递到其他路由器可识别也可不识别,但必须继续传递给其他的路由器或者AS域。(会在属性的flags 中的partial bit置1)
(2)optional non-transitive 可选非传递的属性,这个属性值传递到其他路由器可识别可也不识别,如果本地路由器不识别此属性则要丢弃该路由前缀。
相关属性归类:
well-know mandatory 1.origin 2. AS-path 3.Next-hop
well-know discretionary 1.Local preference 2.atomic aggregate
optional transitive 1.aggregator munity
optional non-transitive 1.Med 2.originater-id 3.cluster-list
BGP的选路前提:路由的下一跳可达、关闭同步、路由没有被惩罚、前缀没有被
入境路由策略拒绝。
正式进入选路部分:
0..…………………………………此条被封印,过于凶残……………………………………
1.weight(越大越优先),本地有效。默认为0 ,范围(0-65,535)
注意:Weight属性是Cisco私有的,可是很多厂商也是内置该属性(但无法显示及修改),这样就保证了本地始发的路由是最优先的,因为本地始发路由的Weight为32768,从其他BGP Peer学习过来的路由的Weight为0。还有就是一点,weight是本地有效的属性,不可以传递,所以只能在in方向学路由是时修改其值,转发不会携带此属性,所以没必要修改也没法修改。最后一点,本地有效,并不代表它不能影响其他路由器的选路。
2.local-Preference(越大越优先),AS内有效。默认为100,范围
(0-4,294,967,295)
Local Preference属性只能在IBGP Peer之间传递。
(1) IBGP传来的路由信息携带locprf (默认值=100)
(2) EBGP传来的路由信息不携带locprf只,是接收路由器赋予的默认值100
如果在EBGP Peer之间收到的路由的路径属性中携带了Local Preference,则会触发Notifacation报文,造成会话中断,因为没有任何一个参数或者方法是允许ebgp之间直接传递Local Preference。
3.next-hop,0.0.0.0优于非0.0.0.0
比较下一跳,next-hop为0.0.0.0是本地始发路径,非0.0.0.0,那就是通过BGP学习来的(BGP发送或接收路由条目一定会携带next-hop,因为next-hop是well-know mandatory),理所当然的本地优于通过BGP学来的。
注意:本地始发的路径特点是next-hop为0.0.0.0,weight为32768,大家还记得学来的路由默认weight是0吧!所以呢……就是说在本地始发路由与BGP 学来的路由的比较上,在第一条weight已经决出胜负了。所以思科设备上默认情况下就不会比较到第三条{前面提到Weight属性是Cisco私有的,可是很多厂商也是内置该属性(但无法显示及修改),这样就保证了本地始发的路由是最优先的,就是说其他厂商也可能就在第一条就解决了本地始发优于学习来的路由问题,这块我又有点啰嗦了,嘿嘿……}。默认情况下只有在那些根本就不支持weight的设备上才会比较到这一条,当然如果在思科上你手动把学来的路由wight改成32768也可以比较到这条。
小注:BGP路由本地始发的三种引入方式network,redistribute,aggregate
这些方式之间是存在优先顺序的原则:network>redistribute>aggregate,但该原则是不会影响BGP路由选路,因为他们下一跳都是0.0.0.0。
4.AS-path (AS-path中AS最少的优先)