本文转载自中心文档
一年一度的双11网购盛典就要到了,不少商家推出了保价双11的活动。作为剁手党的我立刻开启了买买买模式,一小波包裹已在途中。我每天都怀着迫切的心情刷几遍物流信息,盼望着各快递站点加速收发,尽早将包裹送到我手中。其实,在支撑我们网购的Internet网络中,也有收发数据包的快递站点——路由器。
什么是路由器
路由器是连接两个或多个网络的硬件设备,工作在TCP/IP协议的网络层,在网络间扮演网关的角色。路由器的一个作用是连通Internet中各局域网、广域网,另一个作用是选择数据包的最佳传送线路。
想要深入了解路由器,要从路由器的内部结构讲起了。
路由器由输入接口、输出接口、交换结构、路由选择处理器四个部分组成。执行两个最重要的基本功能:路由功能和交换(转发)功能。相应的路由器内部整体也分为路由选择和分组转发两个部分。
路由表:可以是管理员手工配置的,也可以通过动态路由协议自动学习形成,通常由路由协议和路由管理模块维护,包括IP地址/IP子网、下一跳、路由优先级、度量值等信息。
转发表:是基于路由表生成的,路由器实际转发时使用转发表,包括IP地址/IP子网和下一跳/出接口信息。
路由器根据IP数据包的目的网段地址查找路由表决定转发路径,路由表记载着路由器所知的所有网段的路由信息。路由信息中包含要到达此目的网段需要将IP数据包转发至哪一个下一跳相邻设备地址。而转发表记载着由哪个接口发出。转发表中每条转发项都指明分组到某个网段或者某个主机应该通过路由器的哪个物理接口发送,然后就可以到达该路径的下一个路由器,或者不再经过别的路由器而传送到直接相连的网络中的目的主机。
有了路由表和转发表,就好比快递站点根据包裹目的地查到了下一步要将包裹送到哪一个站点,由谁来负责发出。这样本站点的工作就可以顺利完成了。
值得一提的是,路由表被存放在路由器的RAM上,这就意味着路由器如果要维护的路由信息较多时,必须有足够的RAM,并且路由器重新启动后原来的路由信息都会消失。
路由器如何传送数据呢
数据包在网络上的传送就好像是快递公司运送包裹一样,通过多个快递站点的收发最终将包裹送到客户手中。类似的,每一个路由器只负责本站数据包通过最佳路径转发,通过多个路由器一站一站的收发将数据包通过最佳路径转发到目的地。
(如果实施路由策略,数据包不一定选择最佳路径)
每个路由器都有多个输入接口和多个输出接口,它的输入接口收到数据包后去除数据链路层封装,交给网络层处理。网络层首先检查报文是否是送给本机的,如果是,去掉网络层封装,送给上层协议处理。如果不是,则根据报文的目的地址将报文交给相应输出接口的数据链路层,封装接口对应的链路层协议后,将报文发送给下一个路由器。下一个路由器也重复此动作,直至传给路径上最后的路由器,再由其将数据包送交目的主机。
怎样实现数据包的最佳传送呢
讲到这里我们发现,怎样实现“最佳路径”是个关键,别急,路由器是有自己的选路原则的。快来一起了解下吧。
我们先从了解IP数据包开始。IP数据包结构如下:
IP数据包中的目的IP地址是IP数据包的重要字段,路由器会根据数据包中的目的IP地址查找路由表,决定数据包的转发方向。
路由器在决定数据包转发路径的时候会依次按照三大规则来选择路由,以确保实现“最佳路径”。
01最长匹配原则
最长匹配原则就是在路由查找时,使用路由表中到达同一目的地的子网掩码最长的路由。如下所示,去往20.1.1.1的数据包在路由表中同时有3条路由可以为此数据包进行转发,分别是20.0.0.0、20.1.0.0和20.1.1.0。由于它们依次匹配到了网段的前8位、16位、24位,根据最长匹配原则,去往20.1.1.1的数据包会用20.1.1.0的路由条目进行转发,也就是从接口gei_0/1/0/3进行转发。
02 路由优先级
一台路由器上可以同时运行多个路由协议。不同的路由协议都根据自己的标准来选择路由,有的采用下一跳次数、有的采用带宽,并且每个路由协议都把自己认为是最好的路由送到路由表中。这样到达一个同样的目的地址,可能由多条分别由不同路由协议学习来的路由,路由器必须选择其中的一条路由加入到路由表中。由于这些路由的子网掩码相同,最长匹配原则已无法用来挑选路由,路由器应该如何做呢?这时该路由优先级上场了。
路由器上的不同的路由协议默认有自己的路由优先级,数值小的优先级高。当我们有到达同一个目的地址的多条路由时,可以根据优先级的大小,选择优先级数值最小的作为最优路由,同时将这条路由写进路由表中。
在上图中,一台路由器上同时运行两个路由协议:RIP(优先级120)和OSPF(优先级110)。RIP与OSPF协议都发现并计算出了到达同一条网络20.0.0.0/16的最佳路径,但由于选路算法不同选择了不同的路径。由于OSPF具有比RIP高的路由优先级(数值较小),所以路由器将OSPF学到的这条路由加入到路由表中。
03 Metric值
在路由器中,路由协议会学习到所有可能的路由,当同一个路由协议学习到的路由不止一条时,路由优先级就不管用了,路由器该如何处理呢?这时轮到Metric值出场了。路由协议根据选路算法赋予每一跳一个metric值,每条路由的metric值等于路径上每一跳metric值的和。比较各条路由的metric值,选择metric值最小的路由为最佳路由。
例如,R1到R4有三条路由:R1-R2-R4、R1-R4和R1-R3-R4,R1-R2-R4路由的metric值为20(10+10),其他两条路由的metric值为30,路由器会优先选择R1-R2-R4作为最佳路由。
讲完路由,我们再来谈谈转发。传统的IP转发表已不能满足电信骨干网的高速转发需求,为了提升转发效率,路由器采用MPLS技术,在路由表的基础上生成MPLS标签转发表,MPLS为每个IP数据包提供一个标签,与IP数据包一起封装到新的MPLS数据包,标签决定IP数据包的传输路径以及优先顺序。通过MPLS标签转发数据,路由器只需读取数据包中的MPLS标签,无需读取每个IP数据包中的IP地址信息,因此数据包的转发速度大大提升。
5G网络正在如火如荼地建设,网络中的数据量也会越来越大。路由器将会与SR、SDN等技术结合,提供更为简捷、高效的数据传送。
注:本公众号允许其他公众号或网络平台进行转载,但任何形式的转载需注明“文章转载自SDNLAB公众号”相关字样