查看原文
其他

不知道路由器工作原理?没关系,来这看看!看不懂你捶我 | 原力计划

CSDN云计算 2020-12-18

The following article is from CSDN Author 北海以北没有小王

作者 | 北海以北没有小王
头图 | CSDN付费下载自视觉中国
来源 | CSDN博客

路由器概述


首先我们先大致了解一下路由器的大致结构以及工作方式。

路由器体系结构


路由器体系结构如下图:
其中四个重要组成部分依次如下:

1. 接入端口

  • 将一条输入的物理链路与路由器相连接的物理层功能
  • 需要与位于人链路远端的数据链路层交互的数据链路层功能
  • 在输入端口还要完成查找功能


2. 交换结构

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

3. 输出端口

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


4. 路由选择处理器

  • 执行路由选择协议
  • 维护路由选择表以及连接的链路状态信息
  • 为路由器计算转发表
  • 执行网络管理功能


什么是路由器转发平面?


  • 一台路由器的输人端口、输出端口和交换结构共同实现了这种转发功能,并且总是用硬件实现,将这种转发功能总称为路由器转发平面
  • 如果 N 个端口结合在一块线路卡上(因为实践中常常这样做) .数据报处理流水线必须以 N 倍速率运行,这远快过软件实现的速率
  • 实现方式:转发平面硬件既能够使用厂商向己的硬件设计来实现,也能够使用购买的商用硅芯片(例如英特尔和 Broadcom 公司所出售的)来实现 。
  • 当转发平面以纳秒时间尺度运行时,路由器的控制功能(即执行路由选择协议、对上线或下线的连接链路进行响应) 在毫秒或秒时间尺度上运行 。
  • 这些路由器控制平面( router conLrol plane) 通常用软件实现并在路由选择处理器上执行(通常是一种传统的 CPU) 。


输入端口


输入端口的详细视图:


输入端口的功能:


  • 输入端口的线路端接功能与链路层处理实现了用于各个输入链路的物理层和链路层
  • 在这个地方,路由器使用转发表来查找输出端口.使得到达的分组将能经过交换结构转发到该输出端口 。

转发表的更新与使用


  • 转发表是由路由选择处理器计算和更新的,但转发表的一份影子副本通常会被存放在每个输入端口。
  • 转发表从路由选择处理器经过独立总线(例如一个 PCI总线)复制到线路卡

影子副本


  • 有了影子副本,转发决策能在每个输入端口本地做出,无须调用中央路由选择处理器,因此避免了集中式处理的瓶颈 。

快速查找算法


  • 在概念上查找表是简单的,但是在实际应用中需要在非常短(例如几纳秒)的时间内完成查询,因此除了硬件设计外还需要一些对大型转发表使用的超出简单线性搜索的技术(快速查找算法的综述能够在[ Gupta 2001 , Ru卧 Sanchez 2011 ]中找到)
  • 同时也需要对内存访问时间尤为关注
    • 嵌人式片上 DRAM
    • 更快的 SRAM (用作一种 DR灿4 缓存)内存
  • 三态内容可寻址存储器 (Tenary Contenl Aclclress Memory 1 TCAM) 也经常被用于查找

输出端口阻塞


  • 一旦分组经过查询确定了输出端口就能够发送进入交换结构
  • 在一些设计中,如果来自其他输入端口的分组正在使用该交换结构,则该分组被阻塞,需要在输入端口处排队,等待调度

输入端口的动作


  • 查找
  • 通过自己的影子副本确定分组输出端口
  • 最重要的功能
  • 出现物理层和链路层处理
  • 检查分组的版本号、检验和以及寿命字段 ,并且重写后两个字段
  • 更新用于网络管理的计数器(如接收到的 IP 数据报的数目) 。

"匹配加动作"的抽象


  • 注意到输入端口查找IP地址然后发送该分组进人交换结构( “动作” )的步骤是一种更为一般的"匹配加动作"抽象的特定情况。
  • 这种抽象执行在许多网络设备中。
    • 在链路层交换机中,除了发送帧进入交换结构去往输出端口外,还要查找链路层目的地址,并采取几个动作 。
    • 在防火墙中,肯部匹配给定准则(例如源/目的IP地址和运输层端口号的某种组合)的入分组可能被阻止转发,而防火墙是一种过滤所选择的人分组的设备 。
    • 在网络地址转换 (NAT )中,一个运输层端口号匹配某给定值的人分组,在转发(动作)前其端口号将被重写 。

交换结构


交换结构概述


  • 交换结构位于一台路由器的核心部位 。
  • 正是通过这种交换结构,分组才能实际地从一个输入端口交换(即转发)到一个输出端口中 。
  • 交换可以用许多方式完成

三种交换技术

图例

  • 经内存交换
    • 最简单、最早的路由器是传统的计算机,其间交换工作由CPU完成
    • 输入与输出端口的功能就像在传统操作系统中的1/0 设备一样 。
    • 内存从输入端口接收分组并提取首部值,将其缓存到对应的输出端口
    • 一次仅能执行一个内存读写所以一次只能转发一个分组
    • 现代经由内存交换的路由器
      • 与早期路由器的一个主要差别是,目的地址的查找和将分组存储(交换)进适当的内存存储位置是由输入线路卡来处理的 。
      • 在某些方面,经内存交换的路由器看起来很像共享内存的多处理机,用一个线路卡上的处理将分组交换(写)进适当的输出端口的内存
  • 经总线交换
    • 输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预 。
    • 交换方式
      • 让输入端口为分组预先计划一个交换机内部标签(首部) ,指示本地输出端口,使分组在总线上传送和传输到输出端口 。
      • 该分组能由所有输出端口收到,但只有与该标签匹配的端口才能保存该分组 。
      • 然后标签在输出端口被去除,因为其仅用于交换机内部来跨越总线
    • 在总线交换下,路由器中只能同时进行一个分组的转发,因为每个分组都会完全占用整个总线。
    • 但对于运行在小型局域网和企业网巾的路由器来说,通过总线交换通常是足够的 。

  • 经互联网络交换
    • 经互联网络交换是为了克服单一,共享式总线带宽限制
    • 纵横式交换机就是一种由 2N 条总线组成的互联网络,它连接 N 个输入端口与 N 个输出端口
    • 每条垂直的总线在交叉点与每条水平的总线交叉,交叉点通过交换结构控制器(其逻辑是交换结构自身的一部分)能够在任何时候开启和闭合 。
    • 当某分组到达端口 A ,需要转发到端口 Y ,交换机控制器闭合总线 A 和 Y 交叉部位的交叉点,然后端口 A 在其总线上发送该分组,该分组仅由总线 Y 安排接收 。
    • 输出端口不同的分组可以同时转发,但输出端口相同的分组还是需要等待

输出端口


输出端口处理取出存放在输出端口内存巾的分组并将其发送到输出链路上。

何处出现排队


什么是排队?


  • 在输入端口和输出端口只要进入速度大于处理速度都可能出现排队的情况。
  • 排队的位置和程度(或者在输人端口排队,或者在输出端口排队)将取决于流量负载、交换结构的相对速率和线路速率。

什么是丢包?


当输出端口出现排队状况是,排队的分组就会进入路由器的缓存空间,当缓存空间耗尽就会发生丢包

路由器缓存?


  • 该设置多少缓存空间?
    • 缓存数量 ( B ) 应当等于平均往返时延 (RTI ,比如说 250ms) 乘以链路的容量( C) 。
    • 因此,一条具有 250ms RTT 的 10Gbps 链路将需要的缓存量等于 B =RTT * C =2. 5Gb 。


  • 缓存满了怎么办?

    • 如果没有足够的内存来缓存一个人分组,那么必须做出决定:要么丢弃到达的分组(一种称为弃尾 (drop- tail)的策略) ,要么删除一个或多个己排队的分组来为新到的分组腾出空间;
    • 这些统称为AQM主动队列管理算法;
    • 随机早期检测。
      • 随机旱期检测 (Random Early Detection , RED) 算法是一种得到最广泛研究和实现的 AQM 算法 。
      • 当平均队列长度小于最小阈值min,新来的分组就被接纳进队列
      • 当平均队列长度大于最大阈值max,新来的分组就会被标记或者丢弃
      • 当长度在最大与最小中间时,就会以某种概率进行接纳或者接纳
  • 分组调度程序
    • 输出端口排队的后果就是,在输出端口上的一个分组调度程序 (packet scheduler) 必须在这些排队的分组中选出一个来发送
    • 最简单的原则:先来先服务
    • 更复杂的原则:加权公平排队(WFQ)

路由选择控制平面


  • 前面我们已经隐含地假设路由选择控制平面全部驻留并运行在路由器中的路由选择处理器上 。
  • 网络范围的路由选择控制平面因此是分布式的,即不同部分(例如路由选择算法)执行在不同的路由器上并且通过彼此发送控制报文进行交互 。
  • 新型路由器控制平面体系结构其中数据平面连同部分控制平面(例如,链路状态的本地测量/报告,转发表的安装和维护)在路由器中实现,部分控制平面能够在路由器外部实现(例如,在能够执行路由计算的集中式服务器中实现) 。
  • 一个定义良好的 API 规定了这两个部分彼此交互和通信的方式 。
  • 这些研究人员争辩说将软件控制平面与硬件数据平面(具有最少的路由器驻留控制平面)分离,能够以集中式路由选择计算代替分布式路由选择计算,从而简化路由选择,通过允许不同的用户定制的控制平面在快速的硬件数据平面上运行,能够进行网络创新.

版权声明:本文为CSDN博主「北海以北没有小王」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_45761327/article/details/106087563


推荐阅读
真香,朕在看了!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存