浅谈路由器交换结构

一、路由器技术概述

        路由器(Router)是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。它能够理解不同的协议,例如某个局域网使用的以太网协议,因特网使用的TCP/IP协议。

        其功能主要可以划分成两点:路由和转发。        

        路由指的是分组从源端到目的端的过程中,确定端到端路径的过程;转发指的是路由器输⼊端的数据包移送⾄适当的路由器输出端的过程(在路由器内部进⾏)。

        其中路由部分由cpu和内存完成,属于控制平面;转发的部分由硬件处理芯片(交换结构)完成,属于数据平面。

二、交换结构

        交换结构是路由器的核心组件。作用是根据FID表(转发表)对分组进行处理将某个输入端口进入的分组从个合适的输出端转发出去。交换结构本身就是络(一种NoC,片上网络),但这种络完全包含在路由器中,因此交换结构可看成是”在路由器中的网络”。

        至今路由器的发展已经演化出了三种交换方式,分别是:

  • 通过存储器进行交互
  • 通过总线进行交换
  • 通过内部交换网络进行交换 表示分组通过纵横交换结构进行交换

2.1 通过存储器进行交换

       这种方式主要的工作原理是CPU负责运行预设的路由协议,同时读取线路卡(Linecard)中的数据,处理后通过写入新线路卡(Linecard)的方式完成转发。

        这种方式常见于第一代路由器,这一类的路由器具有共享总线背板,采用集中式的共享CPU和缓存的方式,完成数据包的转发判决(软件)。其主要的功能都是通过软件进行实现,结构简单。其特点是能够集中处理,但是吞吐率受限,原因在于CPU既要运行路由协议,又负责数据包的处理和转发,存在严重的处理瓶颈。

2.2 通过总线进行交换

        通过总线进行交换与之前提到的通过内存进行交换最大的区别在于,这种方式把CPU的权限和功能下放到了各个Linecard之中。以此技术为代表的有第二代路由器和第三代路由器。

        其中第二代路由器把转发表从路由器的处理器下发至接口线卡缓存,一次查表多次路由,接种类多,配置灵活。该体系结构的路由器主要是数据在第次到达时生成转发表,然后将转发表从路由处理器下发到接线卡缓存,次查表多次路由,这样的方式在定程度上释放了路由处理器(CPU)使得其有限次参与路由的转发,但是在路由状况不断变化的环境中,IP路由表的改变会使得转发无效,线卡缓存需要不断从路由处理器中同步转发表,性能优势会受到很限制(对总线的性能要求较高)。这样的发展方式就类似于计算机在演进过程中,缓存cache的诞生,通过把一部分需要频繁使用的数据进行单独缓存,可以有效提高系统的工作效率。

        第三代路由器通过提高Linecard的处理能力,同时将路由计算的处理器从路由转发中解放出来 ,把处理的任务下发到各个Linecard上。这种主板和从板的分布式结构大大提高了系统的整体性能,使得第二代路由器每块线卡(从板)是拥有自己的处理器、内存和如果网卡的独立子系统,在本地线卡进行存储和转发判断,主板基本上不参与路由转发操作,主要负责整个系统的管理操作和路由计算等任务,并把用于转发判决的转发表发布到各个从板上,共享总线的容量直接限制了路由器的吞吐率,成为系统无法避免的瓶颈。

2.3 通过内部交换网络进行交换 表示分组通过纵横交换结构进行交换

        不同于前两种交换方式,这种方式采用了不再采用共享背板的方式,而是采用了交换式背板,采用分散的CPU和缓存,使用ASIC+RISC的CPU系统。这样的交换机我们称之为交换式路由器,第四代路由器、第五代路由器和第六代路由器都是采用的这种交换结构。

        第四代路由器引入了交换网。它的引解决了总线的瓶颈,实现阻塞交换。但是对QOS、MPLS VPN、组播、IPv6支持弱。 该体系结构路由器引了交换结构代替原有的共享总线,交换结构可以提供比共享总线得多的带宽,线卡上般不再采处理器,而是采ASIC实现的专转发引擎或者是针对络处理进行了优化的网络处理器,以提高对报文的处理和转发能力。中央处理器负责完成路由协议和其它控制协议的处理,并根据路由表成转发引擎所需要的转发表,将转发表同步到各个线卡上。路由器的整体性能主要由线卡对报文的转发处理能力,以及交换结构的交换容量决定。

        第五代路由器出来之前:路由器都是专用路由器。第五代路由器有了np芯片(有可编程性),可以对很多的业务进行处理加速(全业务加速)。

        第六代路由器采用三级交换结构、严格意义上的无阻塞结构。第二级通常是单独的中央交换框,F1、F2、F3之间采用光纤互连(光背板) 。随着分组搜索系统的日趋复杂,设计师需要采用各种各样的解决方案以满足千差万别的搜索要求。策略查表法(例如存取控制表(ACL)和服务质量(QoS))需要高性能以及超群的搜索灵活性和易用性——而所有这些都需要采用TCAM。另一方面,转发查表(包括虚拟路由器转发(VRF)和虚拟专用网络(VPN))也可以使用TCAM技术进行加速。

        随着网络速度的剧增,传统的解决方案已经无法满足速度要求,这时就需要一个专门的硬件来解决这个矛盾,该硬件通常称为NSE(网络搜索引擎),TCAM其实就是一种基于CAM技术的NSE多级交换结构是由多个交换单元互联起来的,每个交换单元具有一整套输入输出,与普通交换机类似,提供输入输出的连接。通过互联多个小的交换单元,就可以制造一个大型的、可扩展的交换结构。多级结构之间的不同取决于交换单元之间是如何互联的。典型的结构包括Benes网、Butterfly网、Clos网等形式。

          ​​​​​

三、总结

        在最初的交换结构中,我们采用存储器实现交换结构,这样的方式特点是能够集中处理,但是吞吐率受限,原因在于CPU既要运行路由协议,又负责数据包的处理和转发,存在严重的处理瓶颈;为了进一步提高处理速度,我们把CPU的功能逐渐下放,让linecard有了更高的处理能力,由此诞生了第二第三代路由器;但是对于linecard来说,它并不必要完成路由的计算功能,我们希望的是更快的处理和转发速度,因此将linecard中通用的CPU优化成专用属性更强的ASIC,进一步优化交换网络结构,这才有了第四第五第六代路由器。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FL Studio版本升级-FL Studio怎么升级-FL Studio升级方案

已经是新年2024年了,但是但是依然有很多朋友还在用FL Studio12又或者FL Studio20,今天这篇文章教大家如何升级FL Studio21 FL Studio 21是Image Line公司开发的音乐编曲软件,除了软件以外,我们还提供了FL Studio的升级服务&#…

Pytorch 安装与配置

每次在服务器上配置环境都需要考虑 Pytorch 版本 / CUDA 版本 / GPU 驱动版本等诸多因素,因为 ⌈ \lceil ⌈Pytorch 只能下载指定 CUDA 版本的库 ⌋ \rfloor ⌋、 ⌈ \lceil ⌈GPU 只能使用特定版本的驱动 ⌋ \rfloor ⌋、 ⌈ \lceil ⌈GPU 有最高支持的 CUDA 版本…

【学习笔记】TypeScript编译选项

TS 中的编译选项 我们写了一个TS的文件,我们需要使用如下的命令将我们的TS文件转换为JS文件。 tsc xxx.ts 这样会产生一个对应的js文件 自动编译文件 编译文件时,使用 -W 指令后,TS编译器会自动监视文件的变化,并在文件发生变…

Android.mk 语法详解

一.Android.mk简介 Android.mk 是Android 提供的一种makefile 文件,注意用来编译生成(exe,so,a,jar,apk)等文件。 二.Android.mk编写 分析一个最简单的Android.mk LOCAL_PATH : $(call my-dir) //定义了…

第73左侧菜单实现

layout下面新建menu layout index.vue导入menu import Menu from /views/layout/menu菜单实现&#xff1a; <template><el-menuactive-text-color"#ffd04b"background-color"#2d3a4b"class"el-menu-vertical-demo"default-active&quo…

ShardingSphere 5.x 系列【7】元数据持久化

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1.概述2. 单机模式2.1 H22.2 MySQL3. 集群模式3.1 ZooKeeper3.2 Nacos3.3 Co…

谷粒商城【成神路】-【6】——商品维护

目录 &#x1f9c2;1.发布商品 &#x1f953;2.获取分类关联品牌 &#x1f32d;3.获取分类下所有分组和关联属性 &#x1f37f;4.商品保存功能 &#x1f9c8;5.sup检索 &#x1f95e;6.sku检索 1.发布商品 获取用户系统等级~&#xff0c;前面生成了后端代码&#xff…

opencv mat用法赋值克隆的操作和一些基本属性

//Mat基本结构 (头部 数据部分) //赋值的话 就是修改了指针位置 但还是指向了原来数据 并没创建数据 本质上并没有变 //只有克隆或者拷贝时 它才会真正复制一份数据 //代码实现 //创建方法 - 克隆 //Mat m1 src.clone(); //复制 //Mat m2; //src.copyTo(m2); //赋值法 …

nodejs爬虫框架

nodejs爬虫框架 在Node.js中&#xff0c;有一些常用的爬虫框架可以帮助你实现网页抓取和数据提取的任务。以下是几个流行的Node.js爬虫框架&#xff1a; 1. **Puppeteer**: Puppeteer 是由 Google 开发的一个用于控制 headless Chrome 或 Chromium 浏览器的 Node.js 库。它提供…

深度解析Pandas聚合操作:案例演示、高级应用与实战技巧【第74篇—Pandas聚合】

深度解析Pandas聚合操作&#xff1a;案例演示、高级应用与实战技巧 在数据分析和处理领域&#xff0c;Pandas一直是Python中最受欢迎的库之一。它提供了丰富的数据结构和强大的功能&#xff0c;使得数据清洗、转换和分析变得更加高效。其中&#xff0c;Pandas的聚合操作在数据…

bugku 1

Flask_FileUpload 文件上传 先随便传个一句话木马 看看回显 果然不符合规定 而且发现改成图片什么的都不行 查看页面源代码&#xff0c;发现提示 那应该就要用python命令才行 试试ls 类型要改成图片 cat /flag 好像需要密码 bp爆破 根据提示&#xff0c;我们先抓包 爆破 …

【Effective Objective - C 2.0】——读书笔记(三)

文章目录 十五、用前缀避免命名空间冲突十六、提供全能初始化方法十七、实现description方法十八、尽量使用不可变对象十九、使用清晰而协调的命名方式二十、为私有方法名加前缀二十一、理解Objective-C错误模型二十二、理解NSCopying协议 十五、用前缀避免命名空间冲突 OC语言…

【并发编程】Java的Future机制详解(Future接口和FutureTask类)

目录 一、彻底理解Java的Future模式 二、为什么出现Future机制 2.1 Future 类有什么用&#xff1f; 三、Future的相关类图 2.1 Future 接口 2.2 FutureTask 类 五、FutureTask源码分析 5.1 state字段 5.2 其他变量 5.3 CAS工具初始化 5.4 构造函数 5.5 jdk1.8和之前…

医院挂号预约|医院挂号预约小程序|基于微信小程序的医院挂号预约系统设计与实现(源码+数据库+文档)

医院挂号预约小程序目录 目录 基于微信小程序的医院挂号预约系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、小程序用户端 2、系统服务端 &#xff08;1&#xff09; 用户管理 &#xff08;2&#xff09;医院管理 &#xff08;3&#xff09;医生管理 &…

UI自动刷新大法:DataBinding数据绑定

之前我们讲了DataBinding在Activity、Fragment、RecyclerView中的基础使用&#xff0c;而那些常规使用方法里&#xff0c;每当绑定的变量发生数据变化时&#xff0c;都需要ViewDataBinding重新设值才会刷新对应UI。而DataBinding通过内部实现的观察者模式来进行自动刷新UI&…

浅谈人工智能之深度学习~

目录 前言&#xff1a;深度学习的进展 一&#xff1a;深度学习的基本原理和算法 二&#xff1a;深度学习的应用实例 三&#xff1a;深度学习的挑战和未来发展方向 四&#xff1a;深度学习与机器学习的关系 五&#xff1a;深度学习与人类的智能交互 悟已往之不谏&#xff0…

Gemini VS GPT-4,当前两大顶级AI模型实测

随着谷歌在AI军备竞赛中急起直追&#xff0c;“有史以来最强大模型”Gemini Advanced终于上线&#xff0c;AI爱好者们总算等来了一款号称能够匹敌GPT-4的大语言模型。 月费19.99美元&#xff08;包含Google One订阅&#xff09;的Gemini Advanced实际表现如何&#xff1f;究竟…

MongoDB系列之WiredTiger引擎

概述 关系型数据库MySQL有InnoDB存储引擎&#xff0c;存储引擎很大程度上决定着数据库的性能。 在MongoDB早期版本中&#xff0c;默认使用MMapV1存储引擎&#xff0c;其索引就是一个B-树&#xff08;也称B树&#xff09;。 从MongoDB 3.0开始引入WiredTiger&#xff08;以下…

arduino D1 中esp8266 没有ide的库

http://arduino.esp8266.com/stable/package_esp8266com_index.json https://arduino.esp8266.com/stable/package_esp8266com_index.json 这个是官网的包地址 拿到后复制到arduino ide中 然后在开发板管理器&#xff0c;搜索esp&#xff0c;搜出来后安装 去开发板选择 然后测…

导数的几何意义【高数笔记】

1. 高数中的导数几何意义&#xff0c;与中学中斜率的联系 2. 导函数与导数的区别和联系又是什么 3. 导数的几何意义的题型是什么 4. 这些题型又有哪些区别 5. 点在曲线外和点在曲线上&#xff0c;需要注意什么 6. 法线和切线有什么关系 7. 法线是什么