摘要:IBGP,虽然名字上加入了I,但是我并不知道它与OSPF,ISIS等IGP protocol有什么优势。因为IBGP不像EBGP具有AS-PATH检测机制来避免环路,它需要与本AS所有的设备建立对等体(这也是一个去中心化的弊端,需要全体加入共识网络)甚至它不具
IBGP,虽然名字上加入了I,但是我并不知道它与OSPF,ISIS等IGP protocol有什么优势。因为IBGP不像EBGP具有AS-PATH检测机制来避免环路,它需要与本AS所有的设备建立对等体(这也是一个去中心化的弊端,需要全体加入共识网络)甚至它不具有自动建立邻居的功能,需要手动配置,如果需要lo建立对等体关系,那要建立很多单臂路由才可有保障。
在我的理解里,即使是多AS通信,也只需要在ASBR做EBGP即可。在AS内部建立IBGP的意义何在呢?
如果没有IBGP,在一个AS内部路由是怎么实现的?
如题主所说,可以在AS内部全网跑OSPF,或者ISIS。在边缘PE(连接其它的AS)跑EBGP,可以吗?
当然可以。
只要在每一个PE上实现双向路由redistribute。
PE的EBGP路由表 --(redistribute)--> OSPF 路由表。
OSPF 路由表--(redistribute)--> PE的EBGP路由表。
通信是没有问题。
问题来了,EBGP 路由 redistribute到OSPF时,AS-Path、Local_Preference、MED还存在吗?
不存在了。PE1 EBGP ----> OSPF -----> PE2 EBGP,由于OSPF丢失了BGP Attribute,自然PE2就无法获得PE1的AS-Path、Local_Preference、MED等Attributes。
换句话说,在AS内部最优路由的选择,则完全依赖于OSPF的Cost,而无法利用AS-Path、Local_Preference来操纵路由的优选。
亏大了。
故,需要在每个PE上与其它PE建立BGP邻居关系,双向交换PE之间的EBGP路由,以保留BGP Attributes。
由于PE位于同一个AS,故属于内部(Internal)BGP邻居,简称IBGP,以区别于外部(External)BGP,EBGP。
由于每一个PE都要与别的PE建立IBGP关系,假如有1000台PE的中大型运营商,则需要1000 *999/2 = 499500个邻居关系。
很显然这是很低效的,故需要一个RR(Route Reflector),减少IBGP邻居数量。
每个PE与RR建立IBGP邻居关系,则只需要1000个邻居关系。
可是万一RR崩溃了,整网AS就瘫痪了,怎么办?
除了以上的Primary RR,再来一个Secondary RR做冗余备份,则只需要2001个邻居关系。
在真实的BGP现网里,Primary RR、Secondary RR都不是单机,而是有多台主机组成的Cluster。故只要不是所有的主机死翘翘,那么这个RR功能就会强健地工作。
读者就很迷惑了,既然IBGP那么好,为什么还要全网OSPF/ISIS呢?
因为IBGP需要OSPF/ISIS的路由支持,否则基于TCP的IBGP就无法建立。关于这点,在上篇文章的评论回复里提到了。
读者是不是悟了?OSPF/ISIS的存在完全是为了服务于IBGP。
换句话说,如果IBGP与RR之间的通信不需要OSPF/ISIS跨网段的路由支持,完全可以让OSPF/ISIS消失掉。
PE与RR在同一个二层交换的场景,处于同一个网段,那么IBGP就可以依赖于直连(Directed)路由来通信,OSPF/ISIS就变成多余的了。
在现网BGP里,由于IBGP通常使用loopback来建立邻居关系,意味着IBGP一定是跨网段的通信,故依然需要OSPF/ISIS的路由支撑。
为何要用loopback?
只要有一个物理接口还健在,IBGP就健在,大大提高IBGP的可靠性!
作者|车小胖谈网络|公众号来源:小向科技观