路由器(英语:Router,又称路径器)是一种电讯网络设备,提供路由与转送两种重要机制,可以决定数据包从来源端到目的端所经过的路由路径(host到host之间的传...
路由器(英语:Router,又称路径器)是一种电讯网络设备,提供路由与转送两种重要机制,可以决定数据包从来源端到目的端所经过的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。路由工作在OSI模型的第三层 即网络层,例如网际协议(IP)。
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳的路由器。
下一跳的路由器也按照这种方法处理分组,直到该分组到达终点为止。
由上图可以看出,整个路由器的结构可划分为2个部分:
路由选择部分也叫做控制部分,其核心构建是路由选择处理机。
路由选择处理机
路由选择处理机的主要任务是根据所选定的路由选择协议(RIP/OSPF),构造、更新、维护路由表。关于怎样根据路由选择协议构造和更新路由表,我们将在后面讨论。
分组转发部分分为:
交换结构
交换结构(switching fabric):
Switched Fabric or switching fabric is a network topology in which network nodes interconnect via one or more network switches (particularly crossbar switches). Because a switched fabric network spreads network traffic across multiple physical links, it yields higher total throughput than broadcast networks, such as the early 10BASE5 version of Ethernet, or most wireless networks such as Wi-Fi.
交换结构又称为交换组织,它的作用就是根据转发表(forwarding table)对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。交换结构本身就是一种网络,但这种网络完全包含在路由器中,因此交换结构又可看成是;在路由器中的网络;。
实现这样的交换有多种方法,下图给出了三种常见的交换方法。
这三种方法都是将输出端口I1收到的分组转发到输出端口O2。
通过存储器
上图中(a)的示意图表示分组通过存储器进行交换。
与早期路由器的区别就是,目的地址的查找与分组在存储器中的缓存都是在输入端口中进行的。
通过总线
上图中(b)的示意图表示分组通过总线进行交换。
采用这种方式时,数据报从输入端口通过共享的总线直接传送到合适的输出端口,而不需要路由选择处理机的干预。但是,由于总线是共享的,因此在同一时间只能有一个分组在总线上传送。当分组到达输入端口时若发现总线忙,则被阻塞而不能通过交换结构,并在输入端口排队等待。因为每一个要转发的分组都要通过每一条总线,因此路由器的转发带宽就受总线效率的限制。
通过互连网络
上图中(c)的示意图表示分组通过纵横交换结构进行交换。这种交换结构常称为互连网络。
它有2N条总线,可以使N个输入端口和N个输出端口相连接,这取决于相应的交叉节点是使水平总线和垂直总线接通还是断开。
当输入端口收到一个分组时,就将它发送到与该输入端口相连的水平总线上。若通向所要转发的输出端口的垂直总线是空闲的,则在这个结点将垂直总线与水平总线接通,然后将该分组转发到这个输出端口。但若该垂直总线已被占用,则后到达的分组就被阻塞,必须在输入端口排队。
转发和路由选择的区别
转发(forwarding)(只涉及一个路由器) 就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
路由选择(routing)(涉及整个网络的很多路由器)则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。
路由表(目的网络N,距离d,下一跳地址A)和转发表(下一跳地址X,对应物理地址HA)的项目内容和完成的功能也不相同。路由表是根据路由选择算法得出的。而转发表是从路由表得出的。
对路由交换信息分组(如RIP/OSPF分组,由路由选择处理机来处理)和数据分组(由交换结构来处理)也是采取不同的处理方式。
在讨论路由选择的原理时,往往不去区分转发表和路由表的区别。
输入端口和输出端口
在上图中,路由器的输入和输出端口里面都各有三个方框,用方框中的1,2和3分别表示物理层,数据链路层和网络层的处理模块。
物理层
物理层进行比特的接收。
数据链路层
数据链路层按照链路层协议接收传送分组的帧。在把帧的首部和尾部都剥去后,分组就被送入网络层进行处理。
网络层
若接收到的分组是路由器之间交换路由信息的分组(如 RIP 或 OSPF 分组等),则把这种分组送交到路由器的路由选择部分中的路由选择处理机。
若接收到的是数据分组,则按照分组首部中的目的地址查找转发表,根据得出的结果,分组就经过交换结构到达合适的输出端口。
输入端口对线路上收到分组的处理
数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中进行排队等待处理。当一个分组正在查找转发表,后面又跟着从这个输入端口收到的另一个分组,这个后到的分组就必须在队列中等待,这会产生一定的时延。
输出端口对线路上收到分组的处理
当交换结构传送过来的分组先进行缓存。在网络层的处理模块中设有一个缓冲区,实际上它就是一个队列。当交换结构传送过来的分组的速率超过输出链路的发送速率时,来不及发送的分组就必须暂时存放在这个队列中。数据链路层处理模块将分组加上链路层的首部和尾部,交给物理层后发送到外部线路。
分组丢弃
若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。
路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。