返回 登录
0

浅谈TCP/IP协议栈(五)路由分类和路由优先级

附上博客链接,欢迎大家一起来学习与交流!
转眼间就到了八月份,日子过得可真快,当初三月份开博客时,目标是一周一篇,现在看来这个目标还没有达成,还需要继续努力,言归正传,上一章介绍了路由的分类和优先级,这一章我们将更为深入地介绍路由,主要聚焦两张表项:路由表和FIB表。
上一节提出了路由的概念,并且为大家介绍了路由的分类以及如何选择合适的路由进行转发,还是要强调一句话,网络层中最主要的概念就是路由和转发,而路由器作为网络传输的载体,其最核心的功能也是路由和转发,至于怎么路由,怎么转发,会随着组网的复杂程度而不同,也可以是一座城市的网络,甚至可能是一个国家,一个大洲的网络,现在我们就来介绍路由器上存储的最为重要的两张表项——路由表和FIB表。
先来介绍一下两张表的基础概念:
路由表时用来将各种路由协议发现的路由保存起来,根据来源不同,路由表中的路由通常可以分为以下三类:
链路层协议发现的路由(也叫作接口路由或直连路由);
由网络管理员手工配置的静态路由;
动态路由协议发现的路由。
这三类路由我们在上一节已经介绍过了,这里就不再赘述了。

FIB表(Forwarding Information Base)中每条转发表项都指明到达某网段或主机的报文应该通过路由器的哪个物理接口或逻辑口发送,然后就可到达该路径的下一个路由器,或者不再经过别的路由器而传送到直接相连的网络中的目的主机。

可以看到路由表和FIB表分别储存着网络传输中的两大关键点:路由功能和转发功能,二者之间关系密切,共同负责将报文按照最适合路径进行转发,下面我们就来看看这两张表项是如何工作的吧。。

先看路由器上的路由表的工作核心:
每台路由器都保存着一张本地核心路由表,同时各个路由协议也维护着自己的路由表。
协议路由表中存放着该协议发现的路由信息。
路由协议可以引入并发布其他协议生成的路由。例如在路由器上运行OSPF(Opne Shortest Path First)协议,需要使用OSPF协议通告直连路由,静态路由或IS-IS路由时,要将这些路由引入到OSPF协议的路由表中。
本地核心路由表用来保存协议路由和决策优选路由,并负责把优选路由下发到FIB,FIB进行知道转发。这张路由表依据各种路由协议的优先级和度量值来选取路由。

在路由器上,我们可以通过输入命令查看路由表,其具体内容如下所示:
图片描述
可以看到,路由表根据目的地址,存储相应的路由类型,优先级数值,下一跳地址以及出接口,这些都是我们上一节讲路由是提到过的,每当有报文进入时,我们会从报文中封装的IP地址,通过查询路由表,找到其最为合适的下一跳地址,并确定其出接口。

同样的,我们也可以在路由器上查询相应的FIB表,如下所示:
图片描述
可以看到,FIB表箱存储的内容和路由表相似,但又是对路由表的一种补充,具体补充的是如何转发这一条报文,根据目的地址,确定下一跳,再确定耗时以及路由类型,最重要的当然还是出接口信息。在路由表选择出路由后,路由表会将激活路由下发到FIB表中。当报文到达路由器时,会通过查找FIB表进行转发。FIB表的匹配遵循最长匹配原则。查找FIB表是,报文的目的地址和FIB表中的各表项的掩码进行按位“逻辑与”,得到的地址符合FIB表项中的网络地址则匹配。最终选择一个最长匹配的FIB表项进行转发报文。
举个例子:一个目的地址为8.1.2.1的报文进入路由器,查找对应的FIB表,首先,目的地址8.1.2.1与FIB表中各表项的掩码“0,8,16”作逻辑与运算,得到下面的网段地址:
0.0.0.0 8.0.0.0 8.1.0.0。这三个结果可以匹配到FIB表中对应的三个表项的匹配长度分别是0bit、8bit和16bit,最终,路由器会选择最长匹配8.1.0.0进行转发,也就是从接口GigabitEthernet2/0/0转发这条目的地址为9.1.2.1的报文。

好了,对于路由表和FIB表的介绍暂时告一段落,我想大家已经对网络层的转发有了基础的认识,下一节,我们开始介绍网络中的几种常见的协议,敬请期待!、

评论