• 浅谈路由器基本结构与工作原理


    目录

    一、结构

    1.1 输入端口

    1.2 交换结构

    1.3 输出端口

    1.4 路由选择处理器

    二、输入端口处理和基于目的地转发

    三、交换

    四、输出端口处理

    五、何时出现排队

    5.1 输入排队

    5.2 输出排队


    一、结构

            下图是一个通用路由器体系结构的总体试图视图,其主要由输入端口、交换结构、输出端口和路由选择处理器四个组件构成。

    1.1 输入端口

            输入端口(input port)执行几项重要功能。它在路由器中执行终结入物理链路的物理层功能(输入端口中最左侧的方框),它还要与位于入链路远端的数据链路层交互来执行数据链路层功能(中间的方框),也许更为重要的是,在输入端口还要执行查找的功能(最右侧的方框)。正是在这里,通过在查询转发表决定路由器的输出端口,到达的分组通过路由器的交换结构转发到输出线口。控制分组(如携带路由选择协议信息的分组)从输入端口转发到路由选择处理器。注意这里的"端口"一词,指的是路由器的物理输入和输出接口,这完全不同于与网络应用程序和套接字相关联的软件端口。在实践中,一台路由器所支持的端口数量范围较大,从企业路由器具有数量相对少的端口,到位于某ISP边缘的路由器具有数以百计10Gbps端口(其中入线路的数量趋于最大)。

    1.2 交换结构

            交换结构将路由器的输人端口连接到它的输出端口。这种交换结构完全包含在路由器之中,即它是一个网络路由器中的网络!

    1.3 输出端口

            输出端口存储从交换结构接收的分组,并通过执行必要的链路层和物理层功能在输出链路上传输这些分组。当一条链路是双向的时(即承载两个方向的流量),输出端口通常与该链路的输入端口成对出现在同一线路卡上。

    1.4 路由选择处理器

            路由选择处理器执行控制平面功能。在传统的路由器中,它执行路由选择协议,维护路由选择表与关联链路状态信息,并为该路由器计算转发表。在SDN路由器中,路由选择处理器(在其他活动中)负责与远程控制器通信,目的是接收由远程控制器计算的转发表项,并在该路由器的输入端口安装这些表项。路由选择处理器还执行网络管理功能。

    二、输入端口处理和基于目的地转发

             输入端口的线路端接功能与链路层处理实现了用于各个输入链路的物理层和链路层。在输入端口中执行的查找对于路由器运行是至关重要的。正是在这个地方,路由器使用转发表来查找输出端口,使得到达的分组能经过交换结构转发到该输出端口。转发表是由路由选择处理器计算和更新的(使用路由选择协议与其他网络路由器中的路由选择处理器进行交互),或者转发表接收来自远程SDN 控制器的内容。转发表从路由选择处理器经过独立总线(例如一个PCI总线)复制到线路卡,使用在每个输入端口的影子副本,转发决策能在每个输入端口本地做出,无须基于每个分组调用集中式路由选择处理器,因此避免了集中式处理的瓶颈。

            假设转发表已经存在,在概念上讲查表是简单的,硬件逻辑只搜索转发表查找匹配字段。但是在吉比特速率下,这种查找必须在纳秒级执行。因此,不仅必须要用硬件执行查找, 而且需要对大型查找表使用超出线性搜索的技术。同时必须对内存访问时间给与特别关注,这导致用嵌入式片上DRAM和更快的SRAM(用作一种DRAM缓存)内存来设计。实践中也经常使用三态内容可寻址存储器(TCAM)来查找。

            一旦通过查表找到了某个分组的输出端口,则该分组就能够发送进入交换结构。在某些设计中,如果来自其他输入端口的分组正在使用该交换结构,一个分组可能会在进入交换结构时被暂时阻塞。因此,一个被阻塞的分组必须在输入端口处排队,并等待稍后被及时调度以通过交换结构。

    三、交换

            交换结构位于一台路由器的核心部位,因为正是通过这种交换结构,分组才能实际地从一个端口交换(转发)到一个输出端口。常见的交换方式如下:

    • 经内存交换
    • 经总线交换
    • 经互联网络交换

            关于路由器的交换结构详细内容,可以阅读:

    浅谈路由器交换结构icon-default.png?t=N7T8https://ztzhang.blog.csdn.net/article/details/136078726?spm=1001.2014.3001.5502

    四、输出端口处理

            与输入端口类似。

    五、何时出现排队

            在输入端口和输出端口处都可以形成分组队列。排队的位置和程度(或者在输入端口排队,或者在输出端口排队)将取决于流量负载、交换结构的相对速率和线路速率。我们现在更为详细一点考虑这些队列,因为随着这些队列的增长,路由器的缓存空间最终将会耗尽,并且当无内存可用于存储到达的分组时将会出现丢包(packet loss)。我们说有时候会说:分组"在网络中丢失"或"被路由器丢弃"。正是在一台路由器的这些队列中,这些分组被实际丢弃或丢失。

            假定输入线路速度与输出线路速度(传输速率)是相同的,均为Rline (单位为每秒分组数),并且有N个输入端口和N个输出端口。为进一步简化讨论,假设所有分组具有相同的固定长度,分组以同步的方式到达输入端口。这就是说,在任何链路发送分组的时间等于在任何链路接收分组的时间,在这样的时间间隔内,在一个输入链路上能够到达0个或1个分组。定义交换结构传送速率Rswitch 为从输入端口到输出端口能够移动分组的速率。如果Rswitch Rline 快N倍,则在输入端口处仅会出现微不足道的排队。这是因为即使在最坏情况下,所有N条输入线路都在接收分组,并且所有的分组将被转发到相同的输出端口,每批N个分组(每个输入端口一个分组)也能够在下一批到达前通过交换结构。

    5.1 输入排队

            如果交换结构不能快得(相对于输入线路速度而言)使所有到达分组无时延地通过它传送,会发生什么情况呢?在这种情况下,在输入端口也将出现分组排队,因为到达的分组必须加入输入端口队列中,以等待通过交换结构传送到输出端口。为了举例说明这种排队的重要后果,考虑纵横式交换结构,并假定:①所有链路速度相同;②一个分组能够以一条输入链路接收一个分组所用的相同的时间量,从任意一个输入端口传送到给定的输出端口;③分组按照FIFO方式,从一指定输入队列移动到要求的输出队列中。只要其输出端口,多个分组可以被并行传送。然而,如果位于两个输入队列前端的两个分组是发往 同一输出队列的,则其中的一个分组将被阻塞,并必须在输入队列中等待,因为交换结构每一次只能传送一个分组到指定端口。

    5.2 输出排队

            我们接下来考虑在交换机的输出端口是否会出现排队。再次假定RswitchRline 快N倍,并且到达N个输入端口的分组,其目的地是相同的输出端口。在这种情况下,在向输出链路发送一个分组的时间内,将有N个新分组到达该输出端口(N 个输入端口每个都到达1个)。因为输出端口在一个单位时间(该分组的传输时间) 内仅能传输一个分组,这N个到达分组必须排队(等待)经输出链路传输。在正好传输 N 个分组(这些分组是前面正在排队的)之一的时间中,可能又到达N个分组,等等。所以,分组队列能够在输出端口形成,即使交换结构比端口线路速率快N倍。最终,排队的分组数量能够变得足够大,耗尽输出端口的可用内存。

            当没有足够的内存来缓存一个入分组时,就必须做出决定:要么丢弃到达的分组(采用一种称为弃尾(drop-tail) 的策略),要么删除一个或多个已排队的分组为新来的分组腾出空间。在某些情况下,在缓存填满之前便丢弃一个分组(或在其首部加上标记)的做法是有利的,这可以向发送方提供一个拥塞信号。已经提出和分析了许多分组去弃与标记策略,这些策略统称为主动队列管理(Active Queue Manage ment,AQM)算法。随机早期检测(Random Early Detection, RED)算法是得到最广泛研究和实现的AQM 算法之一。

  • 相关阅读:
    【机器学习笔记】【决策树】【回归树】
    ZGC在三色指针中的应用
    Android 下的usb框架及功能点
    Gradle介绍2-进阶(Task、插件及部署等)
    安卓原生项目工程结构说明
    21天打卡挑战学习MySQL——《Docker容器安装》第三周 第七篇
    数学建模学习笔记(8):图论最短路径问题
    NFT是什么?
    APISpace 静态活体检测API
    习题2.18
  • 原文地址:https://blog.csdn.net/apple_53311083/article/details/136709904