ISP路由器上是不是拥有Internet中所有路由条目?

答案是否定的!

为了解释“否定”这两个字,却需要很多文字。

一条神奇的路由

使用Windows操作系统的读者,可以在CLI命令行里敲入命令“Route print”,会呈现主机的路由表,一定会有这条神奇的路由:

0.0.0.0/0

这条神奇的路由,称之为默认路由、缺省路由。Internet上千万万条路由可以高度抽象成这条神奇路由0.0.0.0/0,所以即使主机上没有Internet路由表,访问Internet却一点问题没有。

如果没有发现这条神奇的路由,访问Internet一定有问题,各位不妨试试看去掉这条神奇的路由,还能访问互联网吗?

各位在互联网上冲浪浪的朋友,要由衷地感谢这条神奇的路由!

Internet上有没有不需要“0.0.0.0/0”的设备?

有,运营商核心路由器PE(Provider Edge),PE路由器通过BGP路由协议,与其它运营商交换全球路由表。

由于PE路由器知晓到达世界任何地方的路由,所以PE路由器是没有0.0.0.0/0的。

下一个问题,运营商的路由器是否都需要运行BGP路由协议?都需要全球路由表?

运营商还有更多的路由器,称之为P(Provider)路由器,并没有运行BGP协议,也没有全球路由表。

为什么P路由器不跑BGP协议?

(1)  跑BGP协议,需要路由器具有强大的CPU计算能力,同时具有超大的内存用于记录、保存全球庞大的路由表,目前只有高端路由器才能胜任该项任务,这是一笔庞大的开支。

(2)  因为没有必要,P路由器只要学习到运营商内部的路由表,再加上0.0.0.0/0路由,通过这条神奇的路由,就可以找到通向Internet的PE路由器,而PE路由器是知道如何世界任何角落的。

(3)  只要P、PE路由器运行IGP路由协议,如OSPF/ISIS,就可以完成(2)的描述。

来验证一下,以上的讲述有没有问题:

PE1接收一个目的IP =8.8.8.8的IP报文,查询路由表需要发给PE2,那PE1如何到达PE2呢?需要先把IP报文发给P1路由器,IP报文到达P1路由器。

现在该P1路由表来决策了,由于P1没有全球路由表,只好使用0.0.0.0/0来路由IP报文了。

很不幸的是,P1的0.0.0.0/0的下一跳是PE1,于是又把IP报文扔给PE1。

看,环路了吧?

如果P1路由器没有0.0.0.0/0,可以避免环路吗?

可以,但是没有8.8.8.8的路由,无法转发该IP报文,同样会被丢掉!

如何能克服以上困难?

最好的方案就是,P1路由器在收到IP报文时,避免查询自己的路由表,而使用标签转发。IP报文携带的标签,指示P1路由器将IP报文发给PE2。

标签哪里来?

通过在PE1、P、PE2上运行LDP(Label DistributionProtocol), 事先为各个PE生成分发标签,这项技术就是MPLS

通过MPLS技术,可以避免P路由器没有全球路由表而可能造成的路由环路、次优路径转发,同时还可以被用来运载客户公司的私有IP报文,这个就是三层的MPLS VPN技术。

原文链接:https://mp.weixin.qq.com/s?__biz=MzIxNTM3NDE2Nw==&mid=2247483851&idx=1&sn=9b4677dfb8193d33c1ba336d3819d304&chksm=979801f3a0ef88e51f4068d0eca87b93d94cdf335973357fb260919691e1f86f41b9927b9517#rd

原文地址:https://www.cnblogs.com/a3192048/p/12241273.html