计算机网络(二十三):路由器工作原理

主要是网络层的转发功能,即实际将分组从一台路由器的入链路传送到适当的出链路。
在这里插入图片描述
输入端口:将一条输入的物理链路与路由器相连接的物理层功能;与位于人链路远端的数据链路层交互的数据链路层功能;通过查询转发表决定路由器的输出端口,到达的分组通过路由器的交换结构将转发到输出端口的查找功能;控制分组(如携带路由选择协议信息的分组)从输人端口转发到路由选择处理器
交换结构:交换结构将路由器的输入端口与输出端口相连接。这种交换结构完全包含在路由器中,即它是一个网络路由器中的网络。
输出端口:存储从交换结构接收的分组,并通过执行必要的链路层和物理层功能在输入链路上传输这些分组。当一条链路是双向的(即承载两个方向的流量)时,输出端口通常是与该链路的输入端口在同一线路卡(一个包含一个或多个输入端口的印刷电路,它与交换结构相连)上成对出现的
路由选择处理器:路由选择处理器执行路由选择协议,维护路由选择表以及连接的链路状态信息,并为路由器计算转发表。它还执行网络管理功能。
简单地讲,输入输出端口就是接口,交换结构是芯片,路由选择处理器是运行在芯片上的选择代码。
一台路由器的输入端口、输出端口和交换结构共同实现了转发功能,并且总是用硬件实现。这些转发功能有时总称为路由器转发平面。
当转发平面以纳秒时间尺度运行时,路由器的控制功能(即执行路由选择协议、对上线或下线的连接链路进行响应,以及执行管理功能),在毫秒或秒时间尺度上运行。这些路由器控制平面通常用软件实现并在路由选择处理器上执行。
简单地讲,通过路由选择器建立路径,并产生转发表,然后在输入端口中根据转发表选择相对应的输出端口,在交换结构中根据产生的转发表进行硬件的搭建,依靠硬件可以在极短的时间内实现传输

1、输入端口:

在这里插入图片描述
输入端口的线路端接功能与链路层处理实现了用于各个输入链路的物理层和链路层。
在输入端口,路由器使用转发表来查找输出端口.使得到达的分组将能经过交换结构转发到该输出端口。转发表是由路由选择处理器计算和更新的,但转发表的一份副本通常会被存放在每个输入端口。转发表从路由选择处理器经过独立总线(例如一个PCI总线)复制到线路卡。有了副本,转发决策能在每个输入端口本地做出,无须调用中央路由选择处理器,因此避免了集中式处理的瓶颈。
当转发表存在的时候,我们只是搜索转发表查找最长前缀匹配(O(n)),但由于这种查找需要在纳秒级执行。因此,不仅必须要用硬件(非软件代码算法,而是硬件实现)执行查找,并且需要对大型转发表使用超出简单线性搜索的技术,即快速查找算法。
同时,内存访问时间必须足够短,由此导致用嵌入式的DRAM和更快的SRAM内存来设计。三态内容可寻址存储器TCAM也被用来查找。使用一个TCAM,一个32比特IP地址被放入内存,TCAM在基本常数时间内返回对该地址的转发表项的内容。
通过输入端口的查找功能(在转发表副本中查找)可以确定某分组的输出端口,此时该分组就能发送进入交换结构(交换结构负责连接输入端口和相对应的输出端口,将分组按照转发表指定的地址进行转发)。如果来自其他输入端口的分组当前正在使用该交换结构,一个分组可能会在进入交换结构时被暂时阻塞。因此,一个被阻塞的分组必须要在输入端口处排队,并等待稍后被及时调度以通过交换结构。
总的来说,输入端口有以下操作:
①、查找输出端口(转发表副本)
②、出现链路层和物理层处理
③、检查分组的版本号、检验和以及寿命字段,并重写检验和以及寿命字段
④、更新用于网络管理的计数器(如接收到的IP数据报的数目,避免攻击)

2、交换结构

通过交换结构,分组从一个输入端口交换(转发)到另一个输出端口。有很多种实现方式,如内存、纵横式、总线。
在这里插入图片描述

①、内存:

最简单、最早的路由器是传统的计算机,在输入端口与输出端口之间的交换是在 CPU (路由选择处理器)的直接控制下完成的。输入与输出端口的功能就像在传统操作系统中的I/O设备一样。一个分组到达一个输入端口时,该端口会先通过巾断方式向路由选择处理器发出信号,于是,该分组从输入端口处被复制到处理器内存中。路由选择处理器则从其首部中提取目的地址,在转发表中找出适当的输出端口,并将该分组复制到输出端口的缓存中。
简单地讲,就是根据输入端口从转发表得到的输出端口号,直接写到对应输出端口的缓存中
假定内存每秒可读写n个分组,则转发吞吐量必小于n/2(读取+写入)。而且不能同时转发两个分组,即便他们有不同的端口号,因为经过共享系统总线一次仅能执行一个内存读/写。

②、总线:

输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预。输入端口为分组预先计划一个交换机内部标签(首部),指示本地输出端口,使分组在总线上传送和传输到输出端口。该分组能由所有输出端口收到,但只有与该标签匹配的端口才能保存该分组。然后标签在输出端口被去除,因为其仅用于交换机内部来跨越总线。
简单地讲就是加上一个标签(如输出端口号),然后向总线发送分组,此时所有输出端口都接收到,但只有与标签相匹配的输出端口才开放缓存进行存储
如果多个分组同时到达路由器,每个位于不同的输出端口,除了一个分组外所有其他分组必须等待,因为一次只有一个分组能够跨越总线。因为每个分组必须跨过单一总线.故路由器的交换带宽受总线速率的限制。

③、纵横式(互联网络):

纵横式交换机就是一种由2N条总线组成的互联网络,它连接N个输入端口与N个输出端口。每条垂直的总线在交叉点与每条水平的总线交叉,交叉点通过交换结构控制器(其逻辑是交换结构自身的一部分)能够在任何时候开启和闭合。当某分组到达端口A,需要转发到端口Y,交换机控制器闭合总线A和Y交叉部位的交叉点,然后端口A在其总线上发送该分组,该分组仅由总线Y安排接收。
简单地讲,就是多条总线的交叉,虽然不再需要标签,但需要一个总线开关控制的过程
纵横式网络能够并行转发多个分组 然而,如果来自两个不同输入端口的两个分组其目的地为相同的输出端口,则一个分组必须在输入端等待,因为在某个时刻经给定总线仅有一个分组能够发送。

3、输出端口:

在这里插入图片描述
输出端口处理取出存放在输出端口内存巾的分组并将其发送到输出链路上 这包括选择和取出排队的分组进行传输,执行所需的链路层和物理层传输功能。
简单地讲,就是一个寄存器加一个输出线路

4、排队问题:

在输入端口和输出端口处都能够形成分组队列,排队的位置和程度(或者在输人端口排队,或者在输出端口排队)将取决于流量负载、交换结构的相对速率和线路速率。随着这些队列的增长,路由器的缓存空间将最终会耗尽,并且当元内存可用于存储到达的分组时将会出现丢包。
假定输入线路速度与输出线路速度是相同的,均为每秒Rin个分组,有N个输入端口N个输出端口.假设所有分组具有相同的固定长度,分组以同步的方式到达输入端口。即在任何链路发送分组的时间等于在任何链路接收分组的时间,在这样的时间间隔内,在一个输入链路上能够到达0个或1个分组。定义交换结构传送速率Rw为从输人端口到输出端口能够移动分组的速率。如果Rw比Rin块N倍,则在输入端口处很难会出现排队。这是因为即使在最坏情况下,即所有N条输入线路都在接收分组,并且所有的分组将被转发到相同的输出端口,每批N个分组(每个输入端口一个分组)能够在下一批到达前通过交换结构处理完毕。
即当处理速度是输入速度端口个数(输入=输出)的时候,最坏情况就是同一时间所有输入端口都接受到了一个分组,并且这个分组想要发送给同一个输出端口。此时只要能够在下一个输入端口的分组到来前,将这些分组给到相应的输出端口,就不会在输入端口发生排队。
但是在输出端口处会,在最坏情况下,在向输出链路发送一个分组的时间内,将有N个分组到达该输出端口。因为输出端口在一个单位时间(分组传输时间)内只能发送一个分组,这N个到达的分组必须排队(等待)传输到输出链路上。于是,又有N个分组可能在它只能发送已排队的N个分组中的一个的时间内到达。这种情况会不断持续下去 最终,排队的分组数量会增长得很快,足以耗尽输出端口的可用内存,在这样的情况下分组被丢弃。
在这里插入图片描述
即由于交换的速率超过了输出端口能够发送的速率,导致输出端口会发生排队,最终导致丢包。在时刻 每个人端输入端口都到达了一个分组,每个分组都是发往最上侧的输出端口。假定线路速度相同,交换以三倍快的线路速度进行操作,一个时间单位以后(即接收或发送一个分组所需的时间),所有三个初始分组都被传送到输出端口,并排队等待传输 在下一个时间单位中,这三个分组中的一个将通过输出链路发送出去。在这个例子中,又有两个新分组已到达交换机的人端;这些分组之一要发往最上侧的输出端口
缓存数量(B)应当等于平均往返时延(RTT,比如说250ms)乘以链路的容量©。因此,一条具有250ms RTT的10Gbps链路将需要的缓存量等于=RTT
C=2.5Gb
输出端口排队的后果就是,在输出端口上的一个分组调度程序必须在这些排队的分组中选出一个来发送。这种选择可能是根据简单的原则来定,如先来先服务(FCFS)调度,或者更复杂的调度规则,如加权公平排队(WFQ)。WFQ规则是在具有排队等待传输的分组的不同端到端连接之间公平地共享输出链路。分组调度程序在提供服务质量保证方面起着关键作用。
如果没有足够的内存来缓存一个人分组,那么必须做出决定:要么丢弃到达的分组(弃尾),要么删除一个或多个己排队的分组来为新到的分组腾出空间。
在某些情况下,经常会在缓存填满前便丢弃(或在首部加标记)一个分组,以便向发送方提供一个拥塞信号。已经提出和分析了许多分组丢弃与标记策略,这些策略统称为主动队列管理AQM算法。随机早期检测RED算法是一种得到最广泛研究和实现的AQM算法。在RED算法中,为输出队列长度维护着一个加权平均值。如果平均队列长度小于最小阔值min,则当一个分组到达时,该分组被接纳进队列。相反,如果队列满或平均队列长度大于最大阔值max,则当一个分组到达时,该分组被标记或丢弃。最后,如果一个分组到达,发现平均队列长度在[min,max]之间时,则该分组以某种概率被标记或丢弃,该概率一般是平均队列长度、min、max的某种函数。
个人理解,输出端口的排队基本上是不可避免的,所以问题就是如何处理排队问题和减轻排队问题。处理排队问题的方法要么是丢弃到达的分组,要么删除已经在队列中的分组。于是便有了主动队列管理算法,并且最出名的就是随机早期检测RED算法。就是有一个上下限,低于下限时可以直接加入队列,高于上限时丢弃到达的分组或者标记,当在上下限之间时,将会有一定概率标记或丢弃分组。这个概率随着队列长度的变化而变化
如果交换结构不能快得(相对于输人线路速度而言)使所有到达分组无时延地通过它传送,则在输人端门也将出现分组排队,因为到达的分组必须加入输入端口队列中,以等待通过交换结构传送到输出端口。
在这里插入图片描述
线路前部HOL阻塞,即在一个输人队列中排队的分组必须等待通过交换结构发送(即使输出端口是空闲的) ,因为它被位于线路前部的另一个分组所阻塞。如果交换结构不能快得(相对于输人线路速度而言)使所有到达分组无时延地通过它传送,则在输人端门也将出现分组排队,因为到达的分组必须加入输入端口队列中,以等待通过交换结构传送到输出端口。
简单地讲,就是输入端口争夺输出端口,而交换结构的交换速率较低,导致在下一批分组到来前,当前输入端口的分组没有完全通过交换结构,有剩余,此时输入端口就会产生等待队列

5、路由选择控制平面

网络范围的路由选择控制平面因此是分布式的,即不同部分(例如路由选择算法)执行在不同的路由器上并且通过彼此发送控制报文进行交互。

猜你喜欢

转载自blog.csdn.net/qq_40851744/article/details/107095325