通常路由聚合是要把尽可能大的地址空间放到尽可能少的地址前缀表中,但是在在聚合过程往往会失去路由选择的精准性。
例如:AS100前缀172.16.1.0/24,AS400前缀172.16.2.0/24。当AS200向AS100通告时,AS200的边界路由器R4和R5把地址汇总,即172.16.0.0/16。因为是聚合路由,R1在去往172.16.1.0/24时可能会从R3流出,那么如果更好地控制流量使其从R2流出呢?
答案:条件注入部署在R2和R3上。
条件注入是指当聚合路由存在时,创建更详细的路由,这个更详细的路由被注入到本地的BGP RIP表中,以便为本地AS更优的路由选择。
**思路:**当R2 BGP路由表中出现了172.16.0.0/16 bgp 路由,并且下一跳的路由更新源为R4的时候,在本地BGP RIP表中创建一个172.16.1.0/24。另外设置no-export防止这个路由泄漏回去。
关键命令 bgp inject-map route-map name exist-map route-map name [copy-attributes]
R2配置(R3类似):
router bgp 100
bgp inject-map AS200-specific exist-map AS200-aggregate
neighbor 192.168.12.1 remot-as 100
neighbor 192.168.12.1 send-community
neighbor 192.168.23.3 remot-as 100
neighbor 192.168.23.3 send-community
neighbor 192.168.24.4 remot-as 200
neighbor 192.168.24.4 send-community
ip bgp-community new-format
ip prefix-list AS200-R4 seq 5 permit 192.168.24.4/32/*R4路由器地址
ip prefix-list Aggregate seq 5 permit 172.16.0.0/16/*做类的汇总条目的前缀列表
ip prefix-list Specific seq 5 permit 172.16.1.0/24/*做明细条目的前缀列表
route-map AS200-specfic permit 10/*做路由图AS200-specfic并匹配所有
set ip address prefix-list Specific/*设置ip地址为Specific的前缀条目
set community 100:200 no-export/*设置团体属性为no-export(不宣告给下一跳as以外的其他as)
route-map AS200-aggregate permit 10/*做路由图AS200-aggregate
match ip address prefix-list Aggregate/*匹配Aggregate前缀的路由条目
match ip route-source AS200-R4/*匹配路由源是AS200-R4的邻居学到的路由条目