【计算机网络】路由器的工作原理

news2024/12/22 22:03:07

文章目录

  • 输入端口处理和基于目的地转发
  • 交换结构
  • 输出端口处理
  • 排队问题
  • 参考资料

image.png
路由器的四个组件

  1. 输入端口(input port):执行物理层功能(input port 左边方框、output port 右边方框)、数据链路层功能(input/output port 中间方框)、查找功能(input port右边方框)
  2. 交换结构:将路由器的输入端口连接到它的输岀端口
  3. 输出端口:存储从交换结构接收的分组,并通过执行必要的链路层和物理层功能在输出链路上传输这些分组
  4. 路由选择处理器:执行控制平面功能。在传统路由中执行路由选择协议,在SDN路由器中与远程控制器通信

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

image.png
输入端口的线路端接功能与链路层处理实现了用于各个输入链路的物理层和链路层
input port的查找转发功能所依据的转发表是来自路由选择处理器
路由选择处理器将转发表复制到线路卡,使得router能够在本地做出转发决策,而不必基于每个分组调用路由选择处理器,避免了集中式处理

一个基于目的地转发的路由表简单实现:
image.png

  1. 路由器用分组目的地址的前缀(prefix)与该表中的表项进行匹配
  2. 为了处理转发表中多项匹配当前目的地址的情况,这里使用最长前缀匹配规则(longest prefix matching rule)

从硬件来说,为了实现足够高速的查找,使用特殊的内存,比如三态内容可寻址存储器(Tenary Content Address Memory, TCAM)来查找

交换结构

image.png
经内存交换
在CPU (路由选择处理器)的直接控制下完成
分组到达input port,向路由器发起中断,分组被复制到处理器内存中,计算output port,再将该分组复制到output port中

经总线交换
输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预

纵横式交换
并行转发多个分组
非阻塞的(nonblocking):只要没有其他分组当前被转发到该输出端口,转发到输出端口的分组将不会被到达输出端口的分组阻塞

输出端口处理

image.png

排队问题

在输入端口和输出端口处都可以形成分组队列,当router的缓存空间耗尽时,就会出现丢包(packet loss)现象
input排队
交换结构不能快得(相对于输入线路速度而言)使所有到达分组无时延地通过它传送时,在输入端口将岀现分组排队
使用纵横式交换结构进行说明
image.png
这里在输入队列前端的两个分组(带深色阴影)要发往同一个右上角输出端口,出现了线路前部(HOL)阻塞

output排队
假定 R s w i t c h R_{switch} Rswitch R l i n e R_{line} Rline快N倍,并且到达N个输入端口的每个端口的分组,其目的地是相同的输出端口,在这样的情况下,output port即会出现排队情况

参考资料

  1. James F.Kurose&Keith W.Ross Computer Networking A Top-Down Approach(7th ed) 中文版

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

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

相关文章

帮你快速解锁忘记密码手机的十个工具

将手机解锁到任时候都会让人感觉呼吸新鲜空气。这就像摆脱无形的锁链一样,让您有权选择并避免那些讨厌的限制。但如何解锁手机呢?这就是解锁软件发挥作用的地方。这些方便的工具可以帮助您摆脱束缚并打开一个充满可能性的世界。 解锁手机的合法性 现在&…

【C++代码】爬楼梯,不同路径,整数拆分,不同搜索树,动态规划--代码随想录

动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推…

YOLOv7-QAT量化部署

目录 前言一、QAT量化浅析二、YOLOv7模型训练1. 项目的克隆和必要的环境依赖1.1 项目的克隆1.2 项目代码结构整体介绍1.3 环境安装 2. 数据集和预训练权重的准备2.1 数据集2.2 预训练权重准备 3. 训练模型3.1 修改模型配置文件3.2 修改数据配置文件3.3 训练模型3.4 mAP测试 三、…

NetSuite数据备份办法

本周有同学问有啥办法可以实现NetSuite的数据备份?这是个常见问题,今天总结一下。 我们认为可以选择的技术路线有下面几个: 从技术可行性、数据可利用角度,毫无疑问我们将推荐第三种办法。所以,今朝就介绍一下。 Ana…

UE5使用Dash插件实现程序化地形场景制作

目录 0 dash下载后激活 1 初步使用 2 导入bridge的资产路径 3 练习成果 4 参考链接 0 dash下载后激活 1 初步使用 Dash插件点击蓝色的A,可以使用。 通过输入不同提示命令,来激活不同的功能。 2 导入bridge的资产路径 这里需要注意是UAsserts…

解决找不到vcruntime140.dll,无法继续执行代码方法

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“找不到vcruntime140.dll”。这个错误通常发生在运行某些程序或游戏时,它会导致程序无法正常启动或运行。那么,找不到vcruntime140.dll,无法继续执行代码…

【大数据Hive】hive 表数据优化使用详解

目录 一、前言 二、hive 常用数据存储格式 2.1 文件格式-TextFile 2.1.1 操作演示 2.2 文件格式 - SequenceFile 2.2.1 操作演示 2.3 文件格式 -Parquet 2.3.1 Parquet简介 2.3.2 操作演示 2.4 文件格式-ORC 2.4.1 ORC介绍 2.4.2 操作演示 三、hive 存储数据压缩优…

椭圆曲线的参数(二)

一、椭圆曲线的参数 1.1 背景 假设一条椭圆曲线方程为 y^2 =x^3+ax+b确定这条椭圆曲线方程参数是p,a,b,G,n,h,除了参数a,b ,其他参数的意义 p为质数,(mod p)运算G为基点n为点G的阶h是椭圆曲线上所有点的个数m与n相除的商的整数部分1.2 方程(y^2 =x^3+x+6,P=11) 椭圆曲线…

基于springboot,vue校园社团管理系统

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plus 本系…

信息系统项目管理师教程 第四版【第6章-项目管理概论-思维导图】

信息系统项目管理师教程 第四版【第6章-项目管理概论-思维导图】 课本里章节里所有蓝色字体的思维导图

Linux 网络驱动实验(PHY芯片LAN8720)

目录 嵌入式网络简介嵌入式下的网络硬件接口 网络驱动是linux 里面驱动三巨头之一,linux 下的网络功能非常强大,嵌入式linux 中也常 常用到网络功能。前面我们已经讲过了字符设备驱动和块设备驱动,本章我们就来学习一下 linux 里面的网络设备…

【音视频|PCM】PCM格式详解

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

【队列的顺序表示,链式表示】

文章目录 队列的表示和实现相关术语队列的表示链队的表示链队的定义链队的初始化销毁链队列 链队列的入队出栈 队列的表示和实现 相关术语 队列(Queue)是仅在表尾进行插入操作,在表头进行删除操作的线性表。表尾即an端,称为队尾…

分布式锁其实很简单,6行代码教你实现redis分布式锁

一、前言 分布式锁是一种用于协调分布式系统中多个节点之间对共享资源进行访问控制的机制。它可以确保在分布式环境下,同一时间只有一个节点能够获取到锁,并且其他节点需要等待释放锁后才能获取。 以下是使用分布式锁的几个常见场景和原因:…

ChatGPT 驱动软件开发:AI 在软件研发全流程中的革新与实践

目录 内容简介作者简介专家推荐读者对象目录直播预告 计算机技术的发展和互联网的普及,使信息处理和传输变得更加高效,极大地改变了金融、商业、教育、娱乐等领域的运作方式。数据分析、人工智能和云计算等新兴技术,也在不断地影响和改变着各…

misc学习(4)Traffic(流量分析)-

感悟:回想起自己学的计算机网络和网络协议分析,有所感悟:计算机网络好比将一群人区分开来(局域网),为了能够使得不同部分的人能够沟通(wireshark中的数据包),就设置了网络…

高级深入--day43

通过Fiddler进行手机抓包 通过Fiddler抓包工具,可以抓取手机的网络通信,但前提是手机和电脑处于同一局域网内(WI-FI或热点),然后进行以下设置: 用Fiddler对Android应用进行抓包 打开Fiddler设置 在Conne…

DIANA算法c++实现

第一步对具有最大直径的簇中每个点计算平均相异度找出最大的点放入splinter group&#xff0c;其余放在放入splinter group 第二步 在old party里找出到splinter group中点的最近距离 < 到old party中点的最近距离的点&#xff0c;并将该点加入splinter group 重复第二步的…

共用体开发案例

有若干个人员的数据,其中有学生和教师。学生的数据中包括:姓名、号码性别、职业、班级。教师的数据包括:姓名、号码、性别、职业、职务。要求用同一个表格来处理。 #include <stdio.h>struct Person {char name[32];int age;char zhiYe;char addr[32];union {int class;…

Ubuntu系统编译调试QGIS源码保姆级教程

在之前的文章中&#xff0c;我详细介绍了怎么在Windows下编译QGIS源码&#xff0c;也得到了不错的反馈。但是不足的是Windows下只能编译QGIS的Release模式和RelWithDebInfo模式&#xff0c;想要分析源码&#xff0c;“断点调试”肯定是少不了的&#xff0c;但是这两种模式虽然也…