【网络通信基础与实践第五讲】由浅入深了解路由器的结构设计

news2024/11/29 3:47:06

我们要实现网络互连,需要一个设备,这个设备可以实现将数据从一个端口转发到另外一个端口,从而实现信息的交换,这个设备就是路由器。

知道了路由器的功能需求,我们就要设计对应的结构来满足这样的需求从而实现相应的功能。

我们已经知道了路由器最核心的功能是交换,也就是N输入如何交换到N输出的问题,我们用下面这个图来表示:

1a5a727b19b74fcea9c3ba1772c3b9d4.png

我们现在的任务就是如何设计中间的交换单元的结构来实现成本较低的同时实现较高的交换效率,换句话说如何走线将输入和输出进行连接。

首先我们从最朴素的思想出发,最简单的思维就是将输入和输出一对一连接起来,如下图所示:

d3747cedf959446c9e88232225446f3d.png

 这种连接方式虽然连接效率高,但是由于走线的根数太多了,因此成本较高。

与之相对的另一种极端就是只需要一根总线,将所有的输入和输出都接到这根总线上,如下图所示:

79f882d02b084ed3bcb3663ff0563458.png

这种走线方式虽然成本由N根线减少为了一根线,但是吞吐量大大降低。

因此我们要追求一种简单高效的设计方法,力求做到吞吐量和成本之间的tradeoff。

为此聪明的工程师们通过不断地trail and error,终于找到了如下网格式布局解决了布线问题。

0ac334c7ce4e4a5cbad106dfae53a2b7.png

通过观察这样的网络可知,对于N个输入和N个输出而言,对应的线的数目为2N,对应的节点数目为N²。这种布局方式称为cross bar,名如其形,交错的条条。

而在实际的元器件设计中如何实现节点的设计也是要兼顾易实现性和成本,我们对于电信号而言,需要使用电路器件实现节点的控制作用,我们最先想到的是开关,但是开关的话体积较大而且不易于控制,因此我们寻求性能更加优秀的器件,于是我们想到了数电设计中的与门。

我们知道与门是同1则1,其余为0,因此通过在节点处放置与门就可实现对于输入信号的选择和控制。

但是随着我们对于传输数据的体量和速度的要求,电信号作为载体传输信息已经不能满足要求,然后光纤通信应运而生,顾名思义光纤通信的载体为光信号,光信号的传输数据量和带宽速度均优于电信号,而且几乎没有衰减。

那么我们上述的cross bar的模型能否在光信号的传输中应用呢?答案是当然可以,因为我们只是载体不一样,但是目标和结构都是一致的,因此模型是可以套用的,但是到了具体设计层面就要有些差异,很自然的想到,在电信号的视角下我们采用与门来实现节点的功能,那么在光信号的视角下我们采用什么呢?

类比与门的功能,试想一下什么东西可以使光信号实现变向,如果大家小时候够淘气,一定有过这样的经历,在一个阳光明媚的午后拿一面镜子在屋内阳光穿过的地方反射太阳光,所以嘛最简单的就是镜子!而通过控制镜子的不同的偏转角度可以实现控制光信号是通过还是偏转90度,但是镜子存在在比如震动的或者其他情况下偏转角度会发生变换,这样会对光信号的传输造成影响,因此我们寻求一种更加稳定优质的材料。

这个时候们物理学家们研究了一种很好的环形结构,这种结构可以实现选择性的让光信号通过还是反射,相对于镜子的结构更加稳定,于是我们通过在节点处放置微环就可以实现对于光信号的控制。

即使环状结构解决了我们光信号传输的问题,但是工程师们永远追求着性能和成本的极致,N²个节点,可不可以不用N²个环?经过不断地优化尝试提出了更少的环结构,但是利用环来控制存在着不同的输入到输出过程中线路重叠的情况,这就代表着传输冲突。这种思想可能只能适应于特定的领域,从广泛应用的角度减少环的同时还是存在着一定的传输错误的风险。

至此我们已经搞定了路由器的交换单元部分,接下来就要设计输入单元和输出单元。

对于输入和输出而言,在正式发送数据之前,输出端首先向输出端发送一个“我要向你发送数据了你可以接受吗?”的请求,如果输出端空闲则向输入端返回一个确认,输入端接受了这个确认之后才正式开始发送数据。

而如果输出端正忙,则此时输入端不能向输出端发送数据,这时已经到输入段的输入端就要先在输入端的缓存等一下,那么面对如此多的缓存数据,如何设计输入端的缓存才能使数据发送最可靠高效?

我们首先最朴素的思想就是一个输入支路对应的就是一条主路呗,但是我们试想生活中交通驾驶的例子,在一个T型路口有直行和右转两个方向,此时想要直行的车位于红灯前,其后是想要右转的车,这时因为处于同一车道,后车必须要等前车直行之后才可以右转。

类比到我们输入缓存的结构,红灯代表输出端正忙,输入数据需要进行排队等待,如果所有的数据都处于一个通道中就会出现我目前排在最前面的分组A想要到达的输出端口是1,因为1忙所以输入等待,但是这个分组A就阻塞了后边的分组传输,如果A后边的分组B想要到达的是输出端口2,而恰好此时输出端口2是空闲,如果没有A分组的阻塞B分组本可以转发的,这样就大大降低了效率。

如果解决呢?我们再从T型路口的例子,如何避免前车堵了我,提前变道呗!对于输入缓存而言,我们解决的办法就是有N个输出端口则在一路输入中设置N个通道,这样数据进来通过路由计算知道要达到的端口号之后,就在对应的通道对号入列,这样一个通道内都是想去同一个输出端口的分组,大家一荣俱荣一损俱损,不存在谁耽误谁的情况。

而对于缓存是放在输入端还是输出端呢?两种形式都可以。放在输出端的情况下,对于k路输入,如果每一路的输入速率为v pk/s,那么交换单元的处理速率就要到达kv pk/s,那么每一路输出端缓存的处理速率就要对应的是kv pk/s。这就对缓存的容量与处理速率提出了较高的要求。而如果对于输入端缓存,则对于其的要求只是v pk/s。

这样的话,一个简单的路由器就做好了,主要的结构如下所示:

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

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

相关文章

【数据结构笔记】图Graph

目录 物理结构 邻接矩阵 矩阵压缩 关联矩阵 邻接表 邻接多重表 图搜索 广度优先搜索BFS 边分类 连通域分解 无权最短路径 深度优先搜索DFS 边分类 双连通分量 优先级优先搜索PFS 单源最短路径问题 Dijkstra算法 Bellman-Ford算法 所有结点对最短路径问题 Fl…

Python语言核心12个必知语法细节

1. 变量和数据类型 Python是动态类型的,变量不需要声明类型。 python复制代码 a 10 # 整数 b 3.14 # 浮点数 c "Hello" # 字符串 d [1, 2, 3] # 列表 2. 条件语句 使用if, elif, else进行条件判断。 python复制代码 x 10 if x > 5: print(&q…

获取首日涨停封盘后第二次交易日上涨/下跌的概率

有许多投资者喜欢在股票涨停封盘后,跟进买入。普通股民会认为一个能在今日涨停封盘的股票,证明其上市公司正有十分重大的利好信息,只需要跟进购买便可以获取短期利益。 我们用数据来看一下在当日涨停封盘后,第二次交易日是上涨还…

JavaWeb——Vue:打包部署(Nginx、目录介绍、部署及启动、访问 )

目录 打包 部署 Nginx 目录介绍 部署及启动 访问 前端 Vue 项目的最后一步是打包部署。在当前前后端分离的开发模式中,前端开发人员开发前端代码,后端开发人员开发后端代码。最终要将开发及测试完毕的前端 Vue 代码和后端代码分开部署在对应的服…

pulsar mq 单体验证demo, docker启动pulsar mq验证生产者消费者命令

1. 进入pulsar # 进入容器 docker exec -it xxx /bin/bash # 进入脚本 cd bin 2. 消费命令: ./pulsar-client consume my-topic -s "fist-subscription" 3. 新增一个创建,重复上述操作,进入bin文件夹,输入生产者命令…

JavaSE——集合9:Map接口实现类—HashTable

目录 一、HashTable基本介绍 二、HashTable底层源码解析 1.初始化数组长度为11,临界值为8(0.75*11),加载因子是0.75 2.对存放的值进行自动装箱 3.执行put方法 4.计算key的hash值 5.计算索引值,放入table数组中 6.插入重复的key会被替…

VMware安装Ubuntu虚拟系统

1、准备工作 1)下载并安装好VMware虚拟软件; 2)下载Ubuntu系统镜像文件。建议下载LTS长期支持版本,下载地址: Ubuntu系统下载 | Ubuntu 2、安装Ubuntux系统 2.1、新建虚拟机 打开VMware软件,在右侧“…

住房公积金 计算器-java方法

计算了一下房贷压力,以全额公积金贷款为例,贷款四十万,等额本金方式还款,房贷利率为2.85%,基本情况就是如下: 还款总额达到 提前还款的好处 按三十年计算,如果第一年借用亲朋好友的钱&#x…

无mac通过iOS Dev Center生成打包证书完整流程

很多人第一次使用uniapp打包ios APP应用的时候,都会遇到一个问题,就是如何生成打包证书。 看了uniapp官网的教程,教程上看到是在iOS Dev Center上创建证书,但是过程中却要求我们使用macOS系统来创建csr文件和p12文件。但是我们没…

【ChatGLM4系列】入门介绍以及API调用

目录 前言一、ChatGLM41-1、模型介绍1-2、关键概念1-3、场景示例1-4、模型概览 二、快速开始2-1、安装2-2、Demo案例2-3、请求参数2-4、异步调用 三、模型工具3-1、通用Web搜索3-2、函数调用3-3、增强检索3-4、文件问答 总结 前言 GLM 全名 General Language Model &#xff0c…

数据可视化-使用python制作词云图(附代码)

想象一下,当你写完一篇日记或者一篇文章后,想要知道里面哪些词语出现得最多。这时候,词云图就能派上用场了。它会统计出文章里每个词语出现的次数,然后把这些词语以不同大小的字体展示出来,出现次数越多的词语&#xf…

免费打工人必备工具箱

下载地址:https://pan.quark.cn/s/356d7f201d7a 图片处理工具 格式转换:轻松转换图片格式,满足不同需求。 ICO转换:将图片转换为ICO格式,适用于图标设计。 图片压缩:无损压缩图片,减小文件大小…

Oracle中解决select into值集为空的报错情况

先看为空的情况 procedure test is n number; begin select 1 into n from CUX_2_OM_RELEASE_LIMIT_V cov where cov.Customer_Idnull; end; CUX_2_OM_RELEASE_LIMIT_V中没有id是空的,因此返回的结果一定是空集 运行结果: 有时候我…

Excel使用技巧:筛选2组数据;条件格式突出显示数据

Excel的正确用法: Excel是个数据库,不要随意合并单元格。 数据输入的时候一定要按照行列输入,中间不要留空,不然就没有关联。 筛选2组数据 相信大家已经知道如何筛选1组数据,有时候我们需要同时筛选2组数据。有2步&…

探秘盒子浮动,破解高度塌陷与文字环绕难题,清除浮动成关键!

目录 一、浮动 1、为什么使用浮动? 2、浮动的概念 3、语法 4、浮动的特性 (3)浮动的元素会具有行内块元素的特性 5、浮动元素经常和标准流父级搭配使用 6、浮层的弊端 (1)高度塌陷 (2)…

无人机之声学识别技术篇

一、声学识别技术的原理 无人机在飞行过程中,其电机工作、旋翼震动以及气流扰动等都会产生一定程度的噪声。这些噪声具有独特的声学特征,如频率范围、时域和频域特性等,可以用于无人机的检测与识别。声学识别技术主要通过以下步骤实现&#x…

浙大数据结构:11-散列2 Hashing

这道题主要是小细节要把握&#xff0c;实际难度不大 机翻 1、条件准备 表大小&#xff0c;输入数据数 #include <iostream> #include<vector> #include<cmath> using namespace std; #define endl \nint Size,n;2、主函数 先输入数据&#xff0c;用ispr…

目前web浏览器播放rtsp视频流,h5播放rtmp监控方案比较,代码测试

在web上实现播放rtsp/rtmp视频流&#xff0c;由于浏览器不 能自定义协议&#xff0c;不能直接播放&#xff0c;市面上充满各种方案&#xff0c;鱼龙混杂&#xff0c;主要方案有两种&#xff1a; 1&#xff0c;浏览器插件方案&#xff0c;vlc浏览器控件&#xff08;已过期&…

远翔原厂芯片设计开发软件:降压恒流共阳极无频闪调光芯片FP7126/7127/7128,舞台灯磁吸轨道灯智能家居应用方案

FP7126 FP7127 FP7128是平均电流模式控制的 LED 驱动 IC&#xff0c;具有稳定输出恒流的能力&#xff0c;优秀的负载调整率与高精度的电流控制。不用额外增加外部补偿元件&#xff0c;简化 PCB 板设计。FP7126 FP7127 FP7128可接受 PWM 数位调光&#xff0c;建议调光频率 0.1kH…

事务使用方法

为什么需要事务&#xff1a; 示例&#xff1a; 银行转账问题 假定资金从账户A转到账户B&#xff0c;至少需要两步 账户A的资金减少 然后账户B的资金相应增加。 示例 假定张三的账户有1000元&#xff0c;李四账户有1元 UPDATE bank set moneymoney-500 WHERE name张三; UPDA…