计算机网络——24路由器组成

路由器组成

路由器的结构概况

高层面(非常简化的)通用路由器体系架构

  • 路由:运行路由选择算法/协议 (RIP, OSPF, BGP) - 生成 路由表
  • 转发:从输入到输出链路交换数据报 - 根据路由表进行分组的转发

在这里插入图片描述

输入端口功能

在这里插入图片描述

分布式交换

  • 根据数据报(网络层分组)头部的信息如:目的地址,在输入端口内存中的转发表中查找合适的输出端口(匹配+行动)
  • 基于目标的转发:仅仅依赖于IP数据报的目标IP地址(传统方法)
  • 通用转发:基于头部字段的任意集合进行转发

功能如下:

  • 物理层:链路上的数字信号(比如电信号、光信号等)转换成bit(有的是bit,有的是word)
  • 数据链路层:将转换成的bit分成帧(判断哪里是帧头,哪里是帧尾),检查有无出错,判断帧的目标Mac和网卡的Mac是否一致(判断是否接受这个帧),然后取出帧中的数据部分(也就是IP的分组,数据链路层将IP的分组包装成帧了)
  • 数据链路层将IP分组交给网络层实体,网络层实体在链路当中排队,排到队头的按照路由表交给合适的端口输出
  • 传统的IP分组是根据分组头部的目标ip,根据路由表来转发
  • 如果是SDN,则会查头部的多个信息,匹配相应流表的字段,按照流标的操作

输入端口缓存

  • 交换机构的速率小于输入端口的汇聚速率时, 在输入端口可能要排队
    • 排队延迟和由于输入缓存溢出造成丢失
  • Head-of-the-Line (HOL) blocking: 排在队头的数据报 阻止了队列中其他数据报向前移动

在这里插入图片描述

交换结构

  • 将分组从输入缓冲区传输到合适的输出端口
  • 交换速率:分组可以按照该速率从输入传输到输 出
    • 运行速度经常是输入/输出链路速率的若干倍 (因为输入端口和输出端口有多个)
    • N 个输入端口:交换机构的交换速度是输入线路速度的N倍比较理 想,才不会成为瓶颈

三种典型的交换机构

在这里插入图片描述

通过内存交换

第一代路由器

  • 在CPU直接控制下的交换,采用传统的计算机(通过计算机的软件来实现)
  • 分组被拷贝到系统内存,CPU从分组的头部提取出目标地址,查找转发表,找到对应的输出端口,拷贝到输出端口
  • 分组要过系统总线两次(input→memory,memory→output),因此系统总线成为了速率的瓶颈(转发速率被内存的带宽限制)
  • 一次只能转发一个分组

在这里插入图片描述

通过总线交换

  • 数据报通过共享总线,从输入端转发到输出端口
  • 分组加上输出端口的地址被送往总线,分组通过bus的时候所有的输出分组都能够读到,如果是本输出端口的地址就拿到
  • 总线竞争: 交换速度受限于总线带宽
  • 1次处理一个分组,分组只经过一次bus
  • 1 Gbps bus, Cisco 1900; 32 Gbps bus, Cisco 5600;
  • 对于接 入或企业级路由器,速度足够( 但不适合区域或骨干网络)

在这里插入图片描述

通过互联网络(crossbar等)的交换

  • 同时并发转发多个分组,克服总线带宽限制
  • Banyan(榕树〉网络,crossbar(纵横)和其它的互联网络被开发,将多个处理器连接成多处理器
  • 当分组从端口A到达,转给端口Y;控制器短接相应的两个总线
  • 高级设计:将数据报分片为固定长度的信元,通过交换网络交换
  • Cisco12000:以60Gbps的交换速率通过互联网络
    在这里插入图片描述

输出端口

在这里插入图片描述

  • 当数据报从交换机构的到达速度比传输速率快就需要输出端口缓存(数据报(分组)可能会被丢弃,由于拥塞,缓冲区没有空间)
  • 调度规则选择排队的数据报进行传输

输出端口排队

在这里插入图片描述

  • 假设交换速率 R s w i t c h R_{switch} Rswitch R l i n e R_{line} Rline的N倍(N:输入端口的数量)
  • 当多个输入端口同时向输出端口发送时,缓冲该分组(当通 过交换网络到达的速率超过输出速率则缓存)
  • 排队带来延迟,由于输出端口缓存溢出则丢弃数据报

调度机制

  • 调度: 选择下一个要通过链路传输的分组
FIFO (first in first out) scheduling
  • 按照分组到来的次序发送
  • 丢弃策略: 如果分组到达一个满的队列,哪个分组将会 被抛弃?
    • tail drop: 丢弃刚到达的分组
    • priority: 根据优先权丢失/移除分组(分组是有优先权的,比如有VIP)
    • random: 随机地丢弃/移除

在这里插入图片描述

优先权

优先权调度:发送最高优先权的分组

  • 多类,不同类别有不同的 优先权
    • 类别可能依赖于标记或者其 他的头部字段, e.g. IP source/dest, port numbers, ds,etc.
    • 先传高优先级的队列中的分 组,除非没有
    • 高(低)优先权中的分组传 输次序:FIFO

在这里插入图片描述

Round Robin (RR) scheduling
  • 多类
  • 循环扫描不同类型的队列, 发送完一类的一个分组 ,再发送下一个类的一个分组,循环所有类

在这里插入图片描述

Weighted Fair Queuing (WFQ)
  • 一般化的Round Robin
  • 在一段时间内,每个队列得到的服务时间是: W i W_i Wi /(XIGMA( W i W_i Wi )) *t ,和权重成正比
  • 每个类在每一个循环中获得不同权重的服务量
  • 现实例子

在这里插入图片描述

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

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

相关文章

AI大模型与小模型之间的“脱胎”与“反哺”(第四篇)

76. **动态领域适应网络(Dynamic Domain Adaptation Networks, DDANs)**: 创建能动态调整自身参数以适应新行业特性的网络结构,使得AI大模型能在不完全重新训练的情况下快速适应新的业务场景和环境变化。 77. **元学习中的元策略优…

MySQL--优化(索引)

MySQL–优化(SQL语句执行慢,如何分析) 定位慢查询SQL执行计划索引 存储引擎索引底层数据结构聚簇和非聚簇索引索引创建原则索引失效场景 SQL优化经验 索引 索引(index)是帮助 MySQL 高效获取数据的数据结构&#xff…

大语言模型在科技研发与创新中的角色在快速变化

在技术研发与创新中,比如在软件开发、编程工具、科技论文撰写等方面,大语言模型可以辅助工程师和技术专家进行快速的知识检索、代码生成、技术文档编写等工作。在当今的软件工程和研发领域,尤其是随着大语言模型技术的快速发展,它…

【码银送书第十三期】《ChatGPT原理与架构》

OpenAI 在 2022 年 11 月推出了人工智能聊天应用—ChatGPT。它具有广泛的应用场景,在多项专业和学术基准测试中表现出的智力水平,不仅接近甚至有时超越了人类的平均水平。这使得 ChatGPT 在推出之初就受到广大用户的欢迎,被科技界誉为人工智能…

在Mac上安装nginx+rtmp 本地服务器

需要使用终端命令,如果没有Homebrew,要安装Homebrew,执行: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 一、安装Nginx 1、先clone Nginx项目到本地: brew tap de…

20240305-2-海量数据处理常用技术概述

海量数据处理常用技术概述 如今互联网产生的数据量已经达到PB级别,如何在数据量不断增大的情况下,依然保证快速的检索或者更新数据,是我们面临的问题。 所谓海量数据处理,是指基于海量数据的存储、处理和操作等。因为数据量太大无…

js SheetJS 合并表格导出到同一个excel中

最近有个需求,我在一个页面显示了4个表格, 然后合并导出到excel文件中 四个表,四个sheet,一个excel文件 最后导出时这样: 实现: 1,页面有个导出的checkbox,勾选则导出,不勾选不处理 2,在一个函数中,集中处理四个表数据获取,并将结果返回出来 //获取数据后返回为…

bun 单元测试

bun test Bun 附带了一个快速、内置、兼容 Jest 的测试运行程序。测试使用 Bun 运行时执行,并支持以下功能。 TypeScript 和 JSX生命周期 hooks快照测试UI 和 DOM 测试使用 --watch 的监视模式使用 --preload 预加载脚本 Bun 旨在与 Jest 兼容,但并非所…

Linux搭建SFTP服务器

案例:搭建SFTP服务器 SFTP(SSH文件传输协议) SFTP(SSH文件传输协议)是一种安全的文件传输协议,用于在计算机之间传输文件。它基于SSH(安全外壳协议)的子系统,提供了加密的…

1908_Arm Cortex-M3的实现

1908_Arm Cortex-M3的实现 全部学习汇总: g_arm_cores: ARM内核的学习笔记 (gitee.com) 这是第一次看一份这样的手册,之前的MCU编程基本上就是专注于软件接口方面。而OS等方面的一些功能基本上都是用了现成的解决方案,因此也就没有过多的关注…

git合并多次提交

简介 Git是一个分布式版本控制系统,它允许开发人员在不同的分支上进行并行开发,并将这些分支合并到主分支或其他分支中。在开发过程中,我们经常会创建多个commit来记录每次的代码变更。有时候我们希望将这些连续的commit合并为一个更有意义的…

CSS实现选中卡片样式操作

图一默认自动选中&#xff0c;并且不可取消选中&#xff0c;当选择其他卡片才可点击下一步 在 “ src/assets ” 路径下存放 save.png&#xff0c;代表选中的状态 <div class"cards"><ul class"container"><li v-for"image in image…

【前端系列】vue

这里写目录标题 一、Vue简介1.1 主流前端框架/库简介 二、下载和安装Vue2.1 下载2.2 安装完成后&#xff0c;检查2.3创建全局安装目录和缓存日志目录2.4 为了下载包快速&#xff0c;改源为淘宝镜像2.5 查看npm配置修改是否成功 三、配置环境变量环境变量—用户变量—选中Path—…

Vue+SpringBoot打造实验报告管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 实验管理模块2.2 实验实例模块2.3 实验批阅模块2.4 实验咨询模块 三、系统展示四、核心代码4.1 查询实验4.2 新增实验咨询4.3 回复实验咨询4.4 新增实验实例4.5 查询实验实例 五、免责说明 一、摘要 1.1 项目介绍 基于…

【学习笔记】卫星基础知识

一、什么是卫星以及它如何工作&#xff1f; 通信卫星是一种人造卫星&#xff0c;通过使用转发器在源和接收器之间中继和放大无线电电信信号。卫星的工作原理是接收从地球发送的无线电信号并将无线电信号重新发送回地球。卫星使用从大型太阳能电池阵列收集的太阳能&#xff0c;…

HTML标签分类,web微信开发者工具

第一个阶段&#xff0c;开发环境和工具准备 浏览器 &#xff08;Google&#xff0c;FireFox&#xff0c;…&#xff09;下载&#xff0c;安装前端开发工具vscode&#xff0c;下载、安装 node、npm、webpack、webpack-cli、cnpm&#xff0c;配置前端开发环境下载、配置PHP和MyS…

Centos安装Jenkins

1、更新系统 &#xff08;1&#xff09;更新下系统 sudo yum -y update 安装用于下载java 17二进制文件的wget命令行工具 sudo yum -y install wget vim 2、卸载centos自带的jdk 由于我们安装的版本比较高&#xff0c;需要jdk17&#xff0c;卸载centos自带的jdk。用 下面的…

【vue/组件封装】封装一个带条件筛选的搜索框组件(多组条件思路、可多选)详细流程

引入&#xff1a;实现一个带有筛选功能的搜索框&#xff0c;封装成组件&#xff1b; 搜索框长这样子&#xff1a; 点击右侧筛选图标后弹出层&#xff0c;长这样子&#xff1a; 实际应用中有多组筛选条件&#xff0c;这里为了举栗子就展示一组&#xff1b; 预览&#xff1a;…

07-prometheus的自定义监控-pushgateway工具组件

一、概述 pushgateway用于自定义监控节点、节点中服务的工具&#xff0c;用户可以通过自定义的命令获取数据&#xff0c;并将数据推送给pushgateway中&#xff1b; prometheus服务&#xff0c;从pushgateway中获取监控数据&#xff1b; 二、部署pushgateway 我们可以“随便”找…

Pytorch学习 day03(Tensorboard、Transforms)

Tensorboard Tensorboard能够可视化loss的变化过程&#xff0c;便于我们查看模型的训练状态&#xff0c;也能查看模型当前的输入和输出结果 在Pycharm中&#xff0c;可以通过按住ctrl&#xff0c;并左键点击某个库来进入源文件查看该库的使用方法SummaryWriter是用来向log_dir…