作者 | 北海以北没有小王

头图 | 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

推荐阅读
  • 大数据Spark:利用电影观看记录数据,进行电影推荐| 原力计划

  • 我!程序猿!被银行套路了!

  • 数据科学产业中哪些架构最热门?本文为你盘点了 5 款!

  • 陆奇:疫情下的创业者,最不能缺这两大能力

  • 滴滴技术总监受贿 1000 万,列入招聘黑名单,互联网大厂反腐有多强?

  • 用 Python 训练自己的语音识别系统,这波操作稳了!

  • 区块链如何解决食品安全问题?

真香,朕在看了!

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

  1. 路由及路由器工作原理深入解析2:路由原理

    日志"路由及路由器工作原理深入解析1"http://user.qzone.qq.com/2756567163/blog/1438322342介绍了"为什么要使用路由器&q ...

  2. 网络知识入门,路由器工作原理(十)

    路由器工作原理       路由器的转发的工作原理和交换机类似,也是通过查表判断包转发的目标.不过在具体的操作过程上,路由器和交换机是有区别的.因为路由器是基于 IP 设计的,而交换机是基于以太网设计 ...

  3. 路由及路由器工作原理深入解析3:路由与port

        日志"路由及路由器工作原理深入解析1"http://user.qzone.qq.com/2756567163/blog/1438322342介绍了"为什么要使用路 ...

  4. 网络设备网卡、中继器、集线器、网桥、交换机、路由器工作原理

    [b]网络设备网卡.中继器.集线器.网桥.交换机.路由器工作原理[/b] [b]网卡[/b] 1.工作在物理层(进行数据接收和发送) [b]中继器[/b] 1.工作在物理层,用来复原网络中的信号并重新 ...

  5. 路由器工作原理及配置实验

    一.路由器工作原理 路由器根据路由表转发数据,并选择最优路径 :若路由表中没有路由,可手动设置静态路由. 路由器工作在OSI模型三层(网络层),收到数据包后根据OSI模型层层将数据包拆开,到网络层后根 ...

  6. 交换机与路由器工作原理

    前言 这篇博客的主要目的是为了聊一下路由器和交换机,以及它们各自的工作原理和对应的两张表. 交换机 1.简单介绍交换机 这里的交换机主要讲的是 二层交换机.它工作在OSI七层模型中的第二层,也就是数据 ...

  7. 路由及路由器工作原理深入解析1:概述

    前言: 现在从事的嵌入式产品设计,很多都是基于TCP/IP的,要求研发的设备能够接入广域网进行远程设置和访问,这就涉及到了路由的工作原理和路由器的使用.包括家庭中用到的ADSL.无线路由器以及在工业现 ...

  8. 交换机与路由器技术:远程管理交换机和路由器工作原理、路由器转发数据包的封装过程

    目录 一.通过远程管理方式连接交换机 1.teInet是应用层协议基于传输层TCP,默认端口号:23 2.ssh是应用层协议基于传输层TCP默认端口号:22 3.思路 3.1.telnet 3.2.s ...

  9. 计算机路由器工作原理,路由器工作原理

    导读:路由器是工作在OSI参考模型的网络层,它的主要作用就是为数据包选择最佳路由路径,最终送达目的地,那么路由器工作原理是怎样的呢?下面为大家讲解.本文引用地址:http://www.eepw.com ...

最新文章

  1. 一分钟详解VS中快速生成dll和lib方法
  2. 未来,机器人帮你盖房子
  3. postman全局变量操作
  4. 整理了7道Python函数的练习题,希望对你学习函数有帮助
  5. step4 . day3 目录访问函数
  6. P6773-[NOI2020]命运【线段树合并,树形dp】
  7. Linux文件IO-例会笔记总结
  8. #error This file requires compiler and library support for the ISO C++ 2011 standard
  9. Netty 5用户指南
  10. cannot resolve method ‘println(java.lang.String)
  11. 工作流实现自定义表单
  12. 三.VirtualBox中安装Centos7.5.1804
  13. 实数系的基本定理_初中数学:重点公式定理集合,中学生应该看一看
  14. 虫师乙醇自动化测试培训第三期
  15. python中show函数_Pycharm(Python)下imshow函数显示问题的解决方法
  16. MATLAB错误使用 surf (第 71 行) X、Y、Z 和 C 不能是复数。解决办法。
  17. 《算法竞赛入门经典》(第2版) 习题3-6 纵横字谜的答案
  18. 广东电信公话200专用话机话务动态分析系统的构建
  19. BOS金蝶云星空二开常用接口插件
  20. 二进制十进制互换代码实现

热门文章

  1. 32 块大小_详解Linux文件系统的完整结构--引导块、超级块、GDT等
  2. js输出100以内的质数_Python 计数质数
  3. python爬虫的技能_关于 Python 爬虫可能涉及到的技能点
  4. php 命名空间实现的原理,php命名空间实现的理解
  5. catalog java,Java Connection getCatalog()方法与示例
  6. 今天看到导师给我的批注哭了...
  7. 5位院士谈科研瓶颈:必须“逼着自己在精神上愿意吃苦”
  8. 诺奖得主涉非法实验,其合作者被曝虐待众多病人,被协会除名
  9. 她是法国数学界的“花木兰”,高斯的“救命恩人”
  10. Unity OnTriggerEnter不调用