网络层的分组转发设备是路由器。
路由器是一个具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。
从路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。路由器实现了路由选择和分组转发的功能。
典型路由器的结构如图所示。
从图中可以看出,整个路由器结构可划分为两个部分:路由选择和分组转发。
当分组到达路由器时,先由物理层、数据链路层、网络层三个模块对分组进行处理:
物理层进行比特的接收;
数据链路层解析数据帧并读取收发MAC地址;
网络层处理分组并解析分组头部控制信息。
根据收发双方的IP地址查找转发表,将分组转发到相应的输出端口,这就是路由器的分组转发过程。在这个过程中,由于CPU、输出端口等资源限制,数据分组有时需要在内存中排队等待处理。
在分组转发过程中,关键在于转发表,因为其中存储了转发的关键信息。而转发表又是由路由表产生的。那么,路由表的关键信息又是如何产生的?由于关键信息中目的地址和转发端口的匹配本质上是路径的选择,所以路由表的信息主要为源主机到目的主机的最优路径的确定。这就需要路由器具有收集网络拓扑信息并计算最优路径的功能,也就是路由器的路由选择功能。
路由和转发这两个功能的区别
路由是路径的确定、路由表的产生;而转发则是根据目的地址去查路由表确定输出端口的过程。路由是转发的前提,转发则是路由的使用
。
路由算法可分为两大类
非自适应算法和自适应算法。非自适应算法(Nonadaptive Algorithm)不会根据即时的网络拓扑、流量来调整路由策略,而是预先计算好路径,在每台路由器配置好路由表,这个过程有时又称为静态路由(Static Routing)。静态路由不能应对网络拓扑的故障和突变,但在路由选择清楚的条件下非常有用。如图所示,不管分组的目的地是哪里,企业网络通往外网的数据都要经过边界路由器,路径非常明确,此时用静态路由最合适。
与此相反,自适应算法(Adaptive Algorithm)根据网络拓扑结构、流量状态的变化调整路由决策,所以又称为动态路由(Dynamic Routing)
。动态路由算法需要每隔一段时间收集网络状态变化的信息作为调整路由决策的依据。这个时间间隔可能是固定的,例如,路由信息(Route Information Protocol,RIP)每隔30s更新一次路由信息;时间间隔也有可能是不定时的,例如,OSPF(OpenShortest Path First)协议是在有拓扑变化事件发生时才更新路由信息。网络状态变化信息有可能来自于本地拓扑的变化,也有可能来自于邻居路由器(如RIP协议),还有可能来自于所有路由器(如OSPF协议),不同算法可能做出不同的选择。不同的算法对路径优化的度量取舍也不同,例如,RIP协议是跳数、OSPF协议是带宽,还有些协议用预计的时延。
ps
forwarding为何翻译成分组转发?