一)、管理距离和后门路由
distancebgpexternalinternallocal修改EBGPIBGPlocalbgp的AD从而对选路产生影响;
在两个AS间可以存在一条单独链路交换相互间的数据量,但并不通告给其他AS,此时对于这条链路两端路由器可以加入network192.1.12.2backdoor即可,称为"后门路由":backdoor属性是使router优选从IGP学过来的路由而不是优选从IBGP邻居学过来的路由,因为缺省情况下EBGP邻居的AD为20,会始终优先选择,而不会选择其他AD的IGP路由协议传过来的路由。
后门路由用于一些特殊的情况将IGP路由的优先级调高于EBGP,下面看一种比较特殊的情况
例如如上拓扑结构,BB2中的199.172.0.0网段,通过重分布进入OSPF路由。在R5和R3上将会学到来自R4的IGP路由,同时R5做为R4的IBGP邻居将会学到一条IBGP的路由,由于IBGP路由管理距离大,在R5上对于选路没有影响,但对于R3而言,它将学到一条来自R5的EBGP路由,同时收到R4的IGP路由,此时,R3将把199.172.0.0的下一跳定义为R5,此时就产生了环路了。解决此问题的方法就是在R5和R3上的neighbor后挂接backdoor参数:neiip-addressbackdoor
产生这种现象的原因无非是BGP学习条目时候next-hop属性,默认的下一跳规则如下,自己产生的路由的下一跳为0.0.0.0,收到来自EBGP路由将下一跳改为EBGP对端的IP,对IBGP通告时不修改下一跳的值。但是可以通过next-hop-self修改此规则,将对IBGP也通告下一跳地址为自己。另可以采用next-hop-unchanged,防止收到EBGP路由后,修改下一跳的值,例如如上环路问题,也可通过在R5和R4上宣告Next-hop-unchanged来解决对于下一跳属性,还可以使用route-map来更改。
二)、条件路由注入
Bgpinject-maproutemap-nameexist-maproutemap-name[copy-attributes]
对于如上的拓扑结构,AS100遵循***出口原则,即172.16.1.0走R2->R4172.16.2.0走R3->R5
有如下配置方法:
1.MED,在AS200上设置MED,使AS100识别
2.AS-PathPrepend,R4通告给R2的2.0路由,加长AS-path,同理R5
3.使用条件路由注入
首先左边as300,有更为细化的172.16.1.0/24的路由
那么,在as100内收到172.16.0.0/16的路由,正常可能不是走r2-4的***路径,可能是从r3-5ebgp走的
那么条件路由注入(bgpinject-maproute-mapnameexist-maproute-mapname)的含义就是:
当r2bgp表中出现了172.16.0.0/16bgp路由,并且下一跳的路由更新源为192.168.24.4(r4)的时候,强行插入一个172.16.1.0/24的更为细化的bgp路由进入你的as100IBGP
这样,你的r1的ibgp路由选择就会发生变化,他会从r2r3同时受到172.16.0.0/16和172.16.1.0/24,但是根据路由的最长匹配原则,他会选择r2宣告的172.16.1.0/24去往as300。配置如下:
R2:
routerbgp100
bgpinject-mapAS200-specificexist-mapAS200-aggregate/*调用路由图
neighbor192.168.12.1remot-as100
nei192.168.12.1send-community
nei192.168.23.3remot-as100
nei192.168.23.3send-community
nei192.168.24.4remot-as200
nei192.168.24.4send-community
ipbgp-communitynex-format/*支持BGP新的团体属性格式
ipprefix-listAS200-R4permit192.168.24.4/32/*做路由器接口地址的前缀列表
ippreAggregatepre172.16.0.0/16/*做类的汇总条目的前缀列表
ippreSpecificper172.16.1.0/24/*做明细条目的前缀列表
route-mapAS200-specficper10/*做路由图AS200-specfic并匹配所有
setipaddpreSpecific/*设置ip地址为Specific的前缀条目
setcommunity100:200no-export/*设置团体属性为no-export(不宣告给下一跳as以外的其他as)
route-mapAS200-aggregateper10/*做路由图AS200-aggregate
matipaddpreAggregate/*匹配Aggregate前缀的路由条目
matiproute-sourceAS200-R4/*匹配路由源是AS200-R4的邻居学到的路由条目
总体调用过程理解为:匹配第二个路由图所匹配的条目(172.16.0.0/16和192.168.24.4/32),将其设置成***个路由图的属性(172.16.1.0/24并且no-export)
达到的效果就是:当r2bgp表中出现了172.16.0.0/16bgp路由,并且下一跳的路由更新源为192.168.24.4(r4)的时候,强行插入一个172.16.1.0/24的更为细化的bgp路由进入你的as100IBGP
这样,你的r1的ibgp路由选择就会发生变化,他会从r2r3同时受到172.16.0.0/16和172.16.1.0/24,但是根据路由的最长匹配原则,他会选择r2宣告的172.16.1.0/24去往as300
关于试验,偶没做出来效果,网络搜索也没查证到相关试验资料,有高手路过看到跪求指点。
三)、local_as属性:
如果AS8的路由器Day将进行迁移,假设为Day和Night合并为AS9,而不修改AS141~AS143的路由器(他们依旧认为Day属于AS8),这种迁移需要加入一个loca-as参数,即将Day的BGP进程改为9后,对指向的邻居做如下修改:neighbor192.1.12.2remot-as200
neighbor192.1.12.2local-as8
但是8上的AS-Path将会为89…..在做As_path过滤时需要添加这个local-as可以在local-as后加入no-prepend参数修改这个属性。
R6--R2--R4连接,R6为BGP6,R2为BGP12,R4为BGP345,将R2迁移至BGP6内,以下配置:
R2(config)#norouterb12
R2(config)#routerb6
R2(config-router)#bro2.2.2.2
R2(config-router)#noau
R2(config-router)#nosy
R2(config-router)#nei192.1.24.4remot345
R2(config-router)#nei192.1.26.6remot6
*Mar102:25:01.939:%BGP-3-NOTIFICATION:receivedfromneighbor192.1.24.42/2(peerinwrongAS)2bytes0006
R2(config-router)#nei192.1.24.4local-as?
<1-65535>ASnumberusedaslocalAS
<cr>
R2(config-router)#nei192.1.24.4local-as12
查看BGP邻居建立情况:
R2#showipbsu
NeighborVASMsgRcvdMsgSentTblVerInQOutQUp/DownState/PfxRcd
1.1.1.141200000neverIdle
192.1.24.443458710000:02:140
192.1.26.64688000neverActive
可以发现,没有配置nei192.1.24.4local-as12前,R4上关于R2的邻居关系还是BGP12的EBGP邻居,但是R2已经改变了BGP的AS号,所以邻居关系报错,(peerinwrongAS)
配置nei192.1.24.4local-as12之后,R2就成功的过渡到AS6内,在AS6内成功的与R4建立邻居关系。
【编辑推荐】