白话计算机网络之网络层(二)路由器工作原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_18870127/article/details/87516463

在了解了网络层的功能和服务之后 ,将注意力转移到网络层的转发功能上来,因为这个功能是数据报网络的一个重要的问题,转发功能也就是说从一台路由器的入链路传送到合适的出链路,转发问题最常见的就是编址和最长前缀匹配问题,这些问题慢慢的将在后面的介绍。首先了解下路由器的结构。

  1.路由器的结构

大致的结构入上图所示,接下来详细的了解每个部分的功能以及结构。

1.输入端口

如上图所示,输入端口的线路端接功能与链路层处理实现了用于各个输入链路的物理层和链路层。在输入端口中,执行的查找功能是非常重要的,路由器使用转发表来查找,使得到达的分组能够经过交换结构到达输出端口,转发功能的实现离不开这里输入端口的查找功能,转发表是由路由选择处理器进行计算和更新的,转发表通常会存储一份副本在每个输入端口,转发表从路由选择器经过独立的总线,如PCI总线。

假设转发表存在,该理论上来说,查找是简单的,可以仅搜索转发的最常的前缀进行匹配,而在Gbit的速率下处理时间需要在纳秒级别,所以软件技术达不到,尽可能的从硬件出发,而且也需要在硬件的层面上完成使用超出简单线型搜索的技术,因此,一般为了对内存访问时间的照顾,采用嵌入式片上的DRAM和更快的SRAM来设计内存。

一旦通过查找找到输出端口,这个分组就可以送入交换结构,如果来自其它输入端口的分组正在使用该交换结构,一个分组可能在进入交换结构时被阻塞,因此必须等待排队,等待被调度通过交换结构。除了查找外还需要完成以下动作:必须对数据分组进行在链路层和物理层上的处理;必须检验分组的版本号检验和和寿命字段,并且重写后两个字段;必须更新用于网络管理的计数器。

2.交换机构

交换结构为路由器的核心部分,正因为有了这个交换结构,才使得分组能够正确到达对应的输出端口,其交换方式主要有三种:

(1)经内存的交换

    最简单的,最早的路由器是传统的计算机,在两种端口之间的交换实在CPU的直接控制下完成,输入输出就像传统的I/O设备一样,一个分组到达一个输入端口是,端口通过中断的方式向路由器发出信号,于是该分组的内容从输入端口复制到处理器内存中,选择处理器提取首部中的目的地址,在转发表中找出适合的输出端口,并将这个分组复制到输出端口的缓存中,这种交换方式不能同时交换转发两个分组,即便是两个分组有不同的端口号,因为经过共享系统的总线一次只能执行一个读或者是写,通过内存交换和早期的交换不同的地方在于目的地址的查找和分组交换进入适当的内存位置是由输入线路卡来决定的,看起来像是共享内存的多处理机。

(2) 经总线的交换

这种方式下,输入端口一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预,通常按照以下过程进行:让输入端口为分组预先计划一个交换机内部标签,只是本地输出端口,使得分组在总线上传送和输出到端口,该分组能够有所有输出端口收到, 但是只有与该标签匹配的端口才能保存这个分组,然后标签在输出端口被去除,因为其仅用于交换机内部来跨越总线,如果多个分组同时到达,每个位于不同输出端口,除了一个分组外,其它的分组必须等待,因为同样的,一次只能有一个分组跨越总线,所以路由器的交换带宽受到总线速率的限制。

(3) 经互联网络交换

    克服单一的,共享式总线带宽限制的一种方法是使用一个复杂 的网络,例如过去的多处理器计算机体系中用来互联多个处理器的网络,纵横式交换机是一种2N条总线组成的互联网络,连接了N个输入端口和N个输出端口,每条水平的总线和垂直的总线形成的交叉点为交换结构控制器,能够在任何时候开闭,因此与前面的两种不同,这种纵横式的网络能够并行转发多个分组,如果分组来自两个不同的输入端口的分组的目的地址为同一个输出端口,则其中一个分组必须等待,因为某个时刻只能有一个分组经过总线。更为复杂的互联网络使用多级交换元素,方便于来自不同输入端口的分组通过交换结构同时朝着相同的输出端口前行。

3.输出端口

输出端口为处理取出存放在输出端口内存中的分组并将其发送到输出连路上,这包括选择和取出排队的分组进行传输,执行所需要的链路层和物理层的传输功能。

刚才一直再说排队问题,那么到底是什么原因,或者是排队是个什么样的过程呢,到底在哪里出现了排队呢?

从上面三种结构比较来看,在输入端口和输出端口都比较容易形成分组队列,排队的程度和位置将取决于流量负载、交换结构的相对速率和线速率,因为随着时间的增长,如果路由器中的内存后耗尽,分组再次到达时将会出现丢包现象,丢包现象与这些路由器中的队列的状态有很大关系,这些不能在内存中保留的分组将会被丢弃。

所以当输出端口排队时,需要一个分组调度程序,例如先来先服务的调度(FCFS),加权公平排队(WFQ),WFQ的规则为在具有排队等待传输的分组的不同端到端连接之间公平的共享输出连路,分组调度程序在提供服务质量保证方面起到关键作用。

如果没有足够的内存来储存分组,那么必须做出决定,要么丢弃到达的分组,这个策略称为弃尾,要么将已经排队的队列中删除一个或者多个为新来的分组腾出空间,某些情况下,在缓存填满前便丢弃一个标记好的分组,这样可以向发送方提供一个拥塞信号,这些策略称为主动队列管理。

   随机早期检测算法是一种得到最广泛研究和实现的主动队列管理算法,在这个算法中,输出队列维护着一个加权平均值,如果平均队列的长度小于最小阈值,则分组到达时被接纳放入缓存;如果大于最大的阈值时,那么这个分组将被标记或者是被丢弃,若在最大值和最小值之间时,则分组以某种概率被标记或者是被丢弃,概率一般是平均长度,最大最小阈值的某种函数。

若假如交换结构相对于输入线速度而言不够快时,则也可能在输入端口出现排队队列,因为到达的分组必须加入输入端口队列中,等待通过交换结构到达输出端口。考虑第三种纵横式交换机的情况,假设所有链路的速度相同,一个分组能够以一条链路接收一个分组所用的时间相同,从任意一个输入端口传送到指定的输出端口;并且分组按照FCFS的调度方式,只要其输出端口不同多个分组可以并行传送,然而如果谓语两个输入队列前段的两个分组是发给同一个输出队列的,那么其中一个被阻塞,且分组必须在队列中等待,因为交换结构一次只能传送一个分组到指定的某个输出端口,所以此时会出现排队的情况。这种情况叫做交换机中的线路前部阻塞,即在一个输入队列中,由于被线路前部的另一个分组所阻塞,排队的分组必须等待通过交换结构发送。

4. 软件部分:路由选择控制平面

之前的分析是假设路由选择控制平面全部驻留并且运行在路由器中的路由选择处理器上,网络范围的路由选择控制平面是分布式的,即不同的部分执行不同的,如路由选择算法,执行在不同的路由器上并通过彼此发送控制报文进行交互,路由器和交换机中硬件数据平面和软件控制平面绑在一起放入封闭的平台中。

猜你喜欢

转载自blog.csdn.net/qq_18870127/article/details/87516463