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