文章目录
- 路由器的结构
- 路由部分
- 分组转发部分
什么是路由器?(什么是路由器?)
路由器(英文:Router,又称路由器)是一种电信网络设备,提供路由和转发两种重要机制,可以决定数据包从源到目的地所经过的路由路径(主机到主机的传输路径)。这个过程称为路由;将数据包从路由器输入传输到适当的路由器输出(在路由器内部)称为转发。路由工作在OSI模型的第三层——网络层,比如互联网协议(IP)。
路由器的结构
路由器是有多个输入端口和多个输出端口的特殊计算机,它的任务是转发数据包。也就是说,在路由器的输入端口接收的分组将根据其目的地(即目的地网络)从路由器的适当输出端口转发到下一跳的路由器。
下一跳路由器也以这种方式处理数据包,直到数据包到达目的地。
从上图可以看出,整个路由器的结构可以分为两部分:
路由部分
分组转发部分
路由部分
路由部分也叫控制部分,其核心构造是路由处理器。
路由处理器
路由处理器的主要任务是根据所选的路由协议(RIP/OSPF)构建、更新和维护路由表。如何根据路由协议构建和更新路由表将在后面讨论。
分组转发部分
转发部分分为:
开关结构
进口
输出端
开关结构
交换结构:
交换结构是一种网络拓扑,其中网络节点通过一个或多个网络交换机(尤其是纵横制交换机)互连。因为交换结构网络将网络流量分布在多个物理链路上,所以它比广播网络(如早期的10BASE5版本的以太网)或大多数无线网络(如Wi-Fi)产生更高的总吞吐量。
交换机结构也称为交换机组织,其功能是根据转发表处理数据包,并将从输入端口进入的数据包从适当的输出端口转发出去。交换结构本身就是一种网络,但是这个网络是完全包含在路由器中的,所以交换结构可以看作是“路由器中的网络”。
实现这种交换的方式有很多种,下图是三种常见的交换方式。
通过记忆
通过公共汽车
通过互联网络
所有这三种方法都会将在输出端口I1收到的数据包转发到输出端口O2。
通过记忆
上面(a)中的示意图显示了通过存储器交换包。
与早期的路由器不同,目的地址的搜索和数据包在内存中的缓存都是在输入端口完成的。
通过公共汽车
上面(b)中的图表显示数据包是通过总线交换的。
这样,数据报通过共享总线从输入端口直接传输到适当的输出端口,而不需要路由处理器的介入。但是,由于总线是共享的,同一时间总线上只能传输一个数据包。当数据包到达输入端口时,如果发现总线繁忙,就会被阻塞,无法通过交换结构,在输入端口排队等待。因为要转发的每个数据包都必须通过每条总线,所以路由器的转发带宽受到总线效率的限制。
通过互联网络
上图中(c)的示意图显示,数据包通过交叉开关结构进行交换。这种交换结构通常被称为互连网络。
它有2N条总线,可以连接N个输入端口和N个输出端口,取决于对应的交叉节点是连接还是断开水平总线和垂直总线。
当一个输入端口接收到一个包时,它把它发送到连接到输入端口的水平总线。如果要转发的输出端口的垂直总线是idle 空,则在该节点将垂直总线与水平总线相连,然后将数据包转发到该输出端口。但是,如果垂直总线被占用,随后到达的数据包将被阻塞,必须在输入端口排队。
以及转发和路由。
转发(只涉及一台路由器)是指路由器根据转发表从合适的端口转发用户的IP数据报。
路由(涉及整个网络中的许多路由器)是根据分布式算法和从邻居路由器获得的网络拓扑的变化来动态地改变所选择的路由。
路由表(目的网络N,距离D,下一跳地址A)和转发表(下一跳地址X,对应物理地址HA)的项目和作用也不同。路由表是基于路由算法的。转发表是从路由表中导出的。
对路由信息分组(例如由路由处理器处理的RIP/OSPF分组)和数据分组(由交换结构处理)采用不同的处理方法。
在讨论路由的原理时,我们往往不区分转发表和路由表的区别。
输入端口和输出端口
在上图中,路由器的输入和输出端口有三个方框。在方框中,物理层、数据链路层和网络层的处理模块分别由1、2和3表示。
物理层
接收物理层比特。
数据链路层
数据链路层根据链路层协议接收传输数据包的帧。剥去帧头和帧尾后,数据包被发送到网络层进行处理。
网路层
如果接收到的包是用于在路由器之间交换路由信息的包(例如RIP或OSPF包等)。),它被发送到路由器路由部分的路由处理器。
如果接收到数据分组,则根据分组报头中的目的地地址搜索转发表,并且根据获得的结果,分组通过交换结构到达适当的输出端口。
输入端口对线路上收到的数据包的处理。
在数据链路层剥离帧头和帧尾后,数据包被发送到网络层的队列进行排队。当一个包在寻找转发表,接着是从这个输入端口接收的另一个包时,这个迟到的包必须在队列中等待,这会造成一定的时间延迟。
输出端口处理线路上收到的数据包。
当由交换结构传输的分组首先被缓冲时。网络层的处理模块中有一个缓冲区,实际上是一个队列。当交换结构传输的数据包速率超过输出链路的发送速率时,来不及发送的数据包必须临时存储在该队列中。数据链路层处理模块将链路层的头和尾添加到数据包中,将其交给物理层,并将其发送到外部线路。
数据包丢弃
如果路由器处理数据包的速率跟不上数据包进入队列的速率,那么队列的存储空最终会降为零,这样后面进入队列的数据包就只能因为没有存储空而被丢弃。
路由器中输入或输出队列的溢出是数据包丢失的重要原因。
“张承辉博客” 路由器是什么?(路由器是个什么玩意?) https://www.zhangchenghui.com/195048