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

作者 | 北海以北没有小王

头图 | 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 训练自己的语音识别系统,这波操作稳了!

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

真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RuoYi-Cloud 部署篇_03(windows环境 mysql版本)

文章目录一、软件启动1. redis2. nacos3. myqsl二、微服务启动2.1. 认证授权中心启动2.2. 若依网关启动2.3. 系统模块启动2.4. 定时任务模块启动2.5. 监控中心启动2.6. 代码生成模块启动2.7. 前端启动三、测试验证3.1. 系统模块3.2. 定时任务3.3. 代码生成3.4. sentinel控制台3…

闲鱼推荐,让智能计算从云走向端

关键词: 智能推荐、特征工程、特征处理。 术语解释: 机器学习(Machine Learning):是关于在计算机上从数据中产生“模型”(model)的算法;数据集(Data Set):一组记录的集…

mybatis plus实现多表分页条件查询

文章目录前言一、二、如何实现1 配置mybatis plus分页插件2.准备三张表2.1 学生表2.2 老师表2.3 老师和学生Vo表3. 编写SQL语句4. 编写mapper层5. service层6.controller层演示效果【补充】 XML 自定义分页总结前言 没啥可说的 一、 没啥可说的 二、如何实现 1 配置mybatis pl…

神仙在双11晚上,都干了些啥?

11月,阿里巴巴西溪园区夜凉如水,双11作战室内,却有人身着短袖衬衫,只见她屏住呼吸,握紧微微出汗的手心,静静立于数字大屏前,等待今年最重要的一个数据。 距离双11结束,还有1分钟。 …

nginx(windows环境安装)

介绍 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。 文章…

“编程能力差的程序员,90%输在了这点上!”谷歌AI专家:都是瞎努力!

我见过市面上很多的 Python和人工智能的教程和书籍,他们大都这样讲的:先从 Python 人工智能的发展历史开始,介绍的基本语法规则,Python 的 list, dict, tuple 等数据结构,然后再介绍机器学习、深度学习的常用框架等等&…

阿里巴巴的云原生应用开源探索与实践

导读:从拥抱开源、贡献开源、自主开源,到赋能开源,开源已升级为阿里技术战略之一,且正为开发者源源不断地输送切实可见的价值。云原生是阿里开源的重要领域,短短几年,以 K8s 为核心的云原生开源生态迅猛发展…

RuoYi-Vue 部署 Linux环境 若依前后端分离项目(war 包+nginx版本)

文章目录一、软件安装部署1. 安装jdk2. mysql8安装部署3. redis安装4. nginx 安装部署5. Tomcat10 下载和配置 Linux 环境6. 克隆项目二、后端项目2.1. 修改数据库连接2.2. 修改Redis连接信息2.3. 文件路径2.4. 日志存储路径调整2.5. 修改war打包2.6. 编译打包三、前端项目3.1.…

技术直播:讲一个Python编写监控程序的小故事

今年疫情“黑天鹅”事件改变了大家的生活。相信大家都经历过,每天早晨起床第一件事,就是查看数据。这些数据不仅仅是人们对活着的渴望,也是在建立对战胜疫情的决心。那么技术人怎么能通过自己所学的去进行数据监控呢?今天CSDN邀请…

高精地图中地面标识识别技术历程与实践

导读:本文将主要介绍高德在高精地图地面标识识别上的技术演进,这些技术手段在不同时期服务了高精地图产线需求,为高德地图构建高精度地图提供了基础的技术保证。 1.面标识识别 地面标识识别,指在地图道路中识别出各种类型的地面…

RuoYi-Cloud 部署篇_04(windows环境 mysql+nginx版本)

文章目录一、nginx 操作流程1. nginx 安装启动2. nginx 配置3. nginx 重新启动二、前端项目编译2.1. 前端编译打包2.2. 静态复制迁移三、后端项目启动2.1. 我启动了6个服务2.2. 测试验证一、nginx 操作流程 1. nginx 安装启动 nginx(windows环境安装) …

从P4到P9, 在马云家写代码到双11前端PM

阿里妹导读:今年的双11已经是阿里资深前端技术专家舒文来阿里的第11年,从应届生到双11前端PM,他一路升级打怪,实现了岗位上从P4到P9的晋升。这第11届双11顺利结束之际,他把在阿里这些年的成长经历做一个总结和分享&…

在Java虚拟机上班是一种怎样的体验?

来源 | 编程技术宇宙责编| Carol封图 | CSDN 下载自视觉中国本文用知乎体的风格简单介绍了JVM中几个内置线程的工作,希望对大家学习JVM有一点帮助。匿名用户JVM老鸟228 人赞同了该回答利益相关,匿了!JVM公司里面线程众多,派系林立…

微服务架构四大金刚利器

概述 互联网应用发展到今天,从单体应用架构到SOA以及今天的微服务,随着微服务化的不断升级进化,服务和服务之间的稳定性变得越来越重要,分布式系统之所以复杂,主要原因是分布式系统需要考虑到网络的延时和不可靠&…

RuoYi-Cloud 部署篇_01(linux环境 Oracle +nginx版本)

文章目录一、基础准备1. 技术选型2. 源码克隆3. 安装依赖4. 安装oracle5. 安装启动Mysql6. 安装启动Redis7. 创建数据库,执行 SQL脚本文件二、安装与配置 nacos2.1. 下载nacos2.2. 安装 nacos2.3. nacos持久化配置2.4. 执行脚本文件2.5. nacos连接 mysql 配置信息2.…

当60亿次攻击来袭,人机联合打了一场漂亮的防御战

云是大规模体量下各种小概率事件常态化的一个复杂场,云上的攻防对抗是攻击者和防御者在这张复杂场上的博弈与演化。大规模的环境之中充斥着各种各样转瞬即逝的信息,对于威胁,没有什么是比「大规模」和「转瞬即逝」还更好的隐匿与庇护。任何一…

RuoYi-Cloud 部署篇_02(linux环境 Oracle +nginx版本)

文章目录一、模块配置修改1. ruoyi-gateway-dev.yml2. ruoyi-auth-dev.yml3. ruoyi-system-dev.yml4. ruoyi-gen-dev.yml5. ruoyi-job-dev.yml6. ruoyi-file-dev.yml二、后端配置预启动2.1. 部署资料整合2.2. 模块端口划分2.3. 组件端口划分2.4. 服务脚本编写2.5. 前端编译生产…

一个多业务、多状态、多操作的交易链路?闲鱼架构这样演进

前言 双十一刚刚结束,成交额2684亿震惊全世界,每秒订单峰值达54.4W笔。在闲鱼2000万DAU,交易数额同样增长迅速的今天,我们如何保障交易链路的稳定与快速支撑业务?这篇文章从客户端开发的角度,介绍闲鱼交易…

RuoYi-Cloud 部署篇_03(linux环境 Oracle +nginx版本)

请参考RuoYi-Cloud 分布式部署_03(linux环境 Mysqlnginxredis版本)

没想到 Google 排名第一的编程语言,为什么会这么火?

没想到吧,Python 又拿第一了! 在 Google 公布的编程语言流行指数中,Python 依旧是全球范围内最受欢迎的技术语言!01为什么 Python 会这么火?核心还是因为企业需要用它!因为其易用、逻辑简单并拥有海量扩展包…