本文主要简单介绍BGP的路由生成和宣告原则的部分内容
BGP路由的生成
BGP的路由生成可以用简单的一句话概念,BGP不生成路由,他只是路由的搬运工。
BGP将IGP的路由注入到BGP路由表中,并通过Update报文传递给BGP对等体。
BGP路由注入的两种方式:
1.Network(宣告)特点:精确但是需要一条一条宣告,工作量大
2.import-route(引入)特点:批量注入,工作量小,但是不精确
两种方式在BGP路由表中的表现形式如图1,
图1
i-表示IGP获得的路由即network宣告的路由
?-表示的是通过路由引入获得的路由
network宣告的路由优于引入的路由(对于BGP选路来说,这里面还有一个小规则,对于同一条路由network>import-route)
BGP路由聚合,也称BGP路由汇总
图2
手动汇总
如图2所示,AR11从AR10处获取的路由总共有4条,为了降低BGP路由表的规模,此时我们可以执行BGP的路由汇总让他们聚合在一起
执行aggregate命令即可以实现路由聚合但是我们此时观察BGP路由表如图3所示
图3
会发现,BGP的路由表里面还是有明细路由但是多了一条聚合路由,后续路由的转发则是依据这条聚合路由转发
但是我们可以发现,虽然有了聚合路由,但是那几条明细路由还是存在
我们可以使用下面这条命令来抑制明细路由,如图4所示
图4
在原先的命令后面加上detail-supressed进行对明细路由的抑制,则BGP只会向对等体去宣告聚合后的路由,明细路由将无法看到,如图5所示
图5
BGP通告原则
BGP通过Netwrok宣告,import-static路由引入,aggregate聚合方式生成BGP路由后,会通过Update报文将BGP路由传递给对等体
通告原则:
(1)只发布最优路由
(2)从EBGP对等体获取的路由,会发布给所有对等体;
(3)IBGP水平分割,从IBGP对等体获取的路由,不会发送给IBGP对等体即只传一跳-----为了防止环路
EBGP的防环依据的是AS_Path
图6
如图6所示,分别是不同的AS,在EBGP之间传递路由的时候会有一个AS_PATH的字段,靠此来实现EBGP之间的防环
每经过一个AS区域,Path就会记录经过AS的区域号,如图7所示,如果路由想要进入AS区域的区域号在Path中,则该区域拒绝该路由进入。
BGP路由的生成
BGP的路由生成可以用简单的一句话概念,BGP不生成路由,他只是路由的搬运工。
BGP将IGP的路由注入到BGP路由表中,并通过Update报文传递给BGP对等体。
BGP路由注入的两种方式:
1.Network(宣告)特点:精确但是需要一条一条宣告,工作量大
2.import-route(引入)特点:批量注入,工作量小,但是不精确
两种方式在BGP路由表中的表现形式如图1,
图1
i-表示IGP获得的路由即network宣告的路由
?-表示的是通过路由引入获得的路由
network宣告的路由优于引入的路由(对于BGP选路来说,这里面还有一个小规则,对于同一条路由network>import-route)
BGP路由聚合,也称BGP路由汇总
图2
手动汇总
如图2所示,AR11从AR10处获取的路由总共有4条,为了降低BGP路由表的规模,此时我们可以执行BGP的路由汇总让他们聚合在一起
执行aggregate命令即可以实现路由聚合但是我们此时观察BGP路由表如图3所示
图3
会发现,BGP的路由表里面还是有明细路由但是多了一条聚合路由,后续路由的转发则是依据这条聚合路由转发
但是我们可以发现,虽然有了聚合路由,但是那几条明细路由还是存在
我们可以使用下面这条命令来抑制明细路由,如图4所示
图4
在原先的命令后面加上detail-supressed进行对明细路由的抑制,则BGP只会向对等体去宣告聚合后的路由,明细路由将无法看到,如图5所示
图5
BGP通告原则
BGP通过Netwrok宣告,import-static路由引入,aggregate聚合方式生成BGP路由后,会通过Update报文将BGP路由传递给对等体
通告原则:
(1)只发布最优路由
(2)从EBGP对等体获取的路由,会发布给所有对等体;
(3)IBGP水平分割,从IBGP对等体获取的路由,不会发送给IBGP对等体即只传一跳-----为了防止环路
EBGP的防环依据的是AS_Path
图6
如图6所示,分别是不同的AS,在EBGP之间传递路由的时候会有一个AS_PATH的字段,靠此来实现EBGP之间的防环
每经过一个AS区域,Path就会记录经过AS的区域号,如图7所示,如果路由想要进入AS区域的区域号在Path中,则该区域拒绝该路由进入。