BGP作为边界网关协议,通常只存在于AS边界路由器,但一个AS内部(终端用户所属AS)的路由器想要通往AS外部的网络,而且AS有多台边界路由器,它如何知道去往哪个边界路由器(或者去哪个路径最优)?默认静态不可以,可以让AS内部路由器开启iBGP,但AS内部路由器并没有能力维护AS外部大量路由条目啊?百思不得其解,大佬能不能解答一下。。。。
无论是运营商网络如电信、联通、移动,还是大型企业网络Google、Apple、Tesla,凡是运行BGP路由协议的网络,路由器基本上就三个角色:
PE, Provider Edge Router ,即题主的AS边界路由器。P, Provider Router,即题主的AS内部路由器。CE,Customer Router,客户前端路由器。能直连P路由器有哪些角色?
只能是PE、P。
能直连PE路由器有哪些角色?
可以是PE、P、CE。
所以,题主所谓的P路由器,是不能直接连接CE路由器的。
如果管理员执意要将P路由器直连一台CE路由器,会发生什么?
那么这台P路由器就不再是P路由器,而是一台PE路由器了。
PE路由器和P路由器最大的区别是什么?
PE路由器需要运行BGP协议,需要有完整的互联网全球路由表(Global Routing Table)。此外,还需要运行OSPF/ISIS路由协议,需要有本AS网络的路由表。
P路由器无需运行BGP协议,只要运行OSPF/ISIS路由协议,只需要有本AS网络的路由表即可。
所有用户流量(user-traffic)的源头(起飞)/目的地(降落)都发生在CE路由器上。
假设用户流量在CE1路由器上起飞,并直连进入PE1。PE1不仅拥有内部的路由表,还拥有完整的互联网路由表,所以可以依据路由表进行最优化转发。
4种情况
1.流量可能直接从PE1离开,进入与自己直连的CE2,这不是小菜一碟吗?
2.流量可能直接从PE1离开,到达本AS网络其它PE路由器,假设为PE2路由器。由于PE2也拥有完整路由表,继续转发而已。
3.流量可能直接从PE1离开,到达其它运行商(不同的AS)的PE路由器。
4.流量可能直接从PE1离开,到达本AS网络P路由器,假设为P1路由器。
加亮的4是题主最关心的问题,既然P1路由器不运行BGP,只拥有本地AS网络的路由表以及0.0.0.0/0,那么用户的流量都会matched到0.0.0.0/0,无法进行最优转发,对吗?
运营商是如何克服问题4的呢?
使用标签转发,MPLS标签转发。
再回到PE1身上,当PE1发现,用户流量需要流经本AS网络,且最后的出口是本AS网络的PEx。查询PEx的IP地址与MPLS标签,得到PEx的MPLS的标签。
将PEx的MPLS的标签值黏在用户IP报文的首部,然后发出去了。
P1路由器接收到有PEx的MPLS的标签的IP报文,不会查询路由器,而是直接查MPLS标签与端口的映射表。成功查询之后得到出接口,然后将携带PEx的MPLS的标签的IP报文从该接口流出,还会将TTL-1,并update checksum。
可能在到达PEx路由器还会有其它的P路由器,这个不是很重要。重要的是AS网络每一个路由器PE/P都有PEx的标签与出接口的映射表。
经过1次或N次的击鼓传花的接力游戏,流量最终到达PEx,并最终离开PEx进入其它AS网络。
记住一点,携带PEx的MPLS标签的IP报文在到达PEx之前MPLS标签值一直是变化的,每个PE/P分配的标签是不同的。。
整个过程,无需所有的内部P路由器知晓互联网路由表,只需要拥有本AS网络的路由即可。因为只有P路由器拥有本AS网络的所有路由表,其中包括PE路由器的路由表,才能创建标签与出接口的映射表。
最后再强调一点,在真实的网络里,P路由器是核心路由器,不是CE路由器能物理触及的。以上的LDP标签或者MPLS TE标签都可以完成。如果这台P路由器执意要直连CE,那么就跑BGP。
为何AS网络里需要P的存在?
主要是为了提供更多的接口使得PE完成互联,仅此而已。
作者|车小胖谈网络|公众号