不知道路由器工做原理?不要紧,来这看看!看不懂你捶我 | 原力计划

做者 | 北海以北没有小王php

头图 | CSDN付费下载自视觉中国程序员

来源 | CSDN博客算法

路由器概述
后端

首先咱们先大体了解一下路由器的大体结构以及工做方式。缓存

路由器体系结构服务器

路由器体系结构以下图:网络

其中四个重要组成部分依次以下:dom

1. 接入端口分布式

  • 将一条输入的物理链路与路由器相链接的物理层功能ide

  • 须要与位于人链路远端的数据链路层交互的数据链路层功能

  • 在输入端口还要完成查找功能

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

【End】

CSDN 618程序员购物日:显示器、键盘、蓝牙耳机、扫地机器人、任天堂游戏机、AirPods Pro等超多IT人的心仪好物,全场超低价出售,让1亿程序员买到爽!

更多精彩推荐

☞华机房生存指南
☞算法鼻祖高德纳,82 岁仍在写《计算机程序设计的艺术》
☞程序员晒端午福利,网友:看了你的福利我想摔手机
☞如何成为一名黑客?
☞发送0.55 ETH花费近260万美圆!这笔神秘交易引起大猜测
☞京东姚霆:推理能力,正是多模态技术将来亟需突破的瓶颈!
你点的每一个“在看”,我都认真当成了喜欢