浅谈路由器基本结构与工作原理

目录

一、结构

1.1 输入端口

1.2 交换结构

1.3 输出端口

1.4 路由选择处理器

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

三、交换

四、输出端口处理

五、何时出现排队

5.1 输入排队

5.2 输出排队


一、结构

        下图是一个通用路由器体系结构的总体试图视图,其主要由输入端口、交换结构、输出端口和路由选择处理器四个组件构成。

1.1 输入端口

        输入端口(input port)执行几项重要功能。它在路由器中执行终结入物理链路的物理层功能(输入端口中最左侧的方框),它还要与位于入链路远端的数据链路层交互来执行数据链路层功能(中间的方框),也许更为重要的是,在输入端口还要执行查找的功能(最右侧的方框)。正是在这里,通过在查询转发表决定路由器的输出端口,到达的分组通过路由器的交换结构转发到输出线口。控制分组(如携带路由选择协议信息的分组)从输入端口转发到路由选择处理器。注意这里的"端口"一词,指的是路由器的物理输入和输出接口,这完全不同于与网络应用程序和套接字相关联的软件端口。在实践中,一台路由器所支持的端口数量范围较大,从企业路由器具有数量相对少的端口,到位于某ISP边缘的路由器具有数以百计10Gbps端口(其中入线路的数量趋于最大)。

1.2 交换结构

        交换结构将路由器的输人端口连接到它的输出端口。这种交换结构完全包含在路由器之中,即它是一个网络路由器中的网络!

1.3 输出端口

        输出端口存储从交换结构接收的分组,并通过执行必要的链路层和物理层功能在输出链路上传输这些分组。当一条链路是双向的时(即承载两个方向的流量),输出端口通常与该链路的输入端口成对出现在同一线路卡上。

1.4 路由选择处理器

        路由选择处理器执行控制平面功能。在传统的路由器中,它执行路由选择协议,维护路由选择表与关联链路状态信息,并为该路由器计算转发表。在SDN路由器中,路由选择处理器(在其他活动中)负责与远程控制器通信,目的是接收由远程控制器计算的转发表项,并在该路由器的输入端口安装这些表项。路由选择处理器还执行网络管理功能。

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

         输入端口的线路端接功能与链路层处理实现了用于各个输入链路的物理层和链路层。在输入端口中执行的查找对于路由器运行是至关重要的。正是在这个地方,路由器使用转发表来查找输出端口,使得到达的分组能经过交换结构转发到该输出端口。转发表是由路由选择处理器计算和更新的(使用路由选择协议与其他网络路由器中的路由选择处理器进行交互),或者转发表接收来自远程SDN 控制器的内容。转发表从路由选择处理器经过独立总线(例如一个PCI总线)复制到线路卡,使用在每个输入端口的影子副本,转发决策能在每个输入端口本地做出,无须基于每个分组调用集中式路由选择处理器,因此避免了集中式处理的瓶颈。

        假设转发表已经存在,在概念上讲查表是简单的,硬件逻辑只搜索转发表查找匹配字段。但是在吉比特速率下,这种查找必须在纳秒级执行。因此,不仅必须要用硬件执行查找, 而且需要对大型查找表使用超出线性搜索的技术。同时必须对内存访问时间给与特别关注,这导致用嵌入式片上DRAM和更快的SRAM(用作一种DRAM缓存)内存来设计。实践中也经常使用三态内容可寻址存储器(TCAM)来查找。

        一旦通过查表找到了某个分组的输出端口,则该分组就能够发送进入交换结构。在某些设计中,如果来自其他输入端口的分组正在使用该交换结构,一个分组可能会在进入交换结构时被暂时阻塞。因此,一个被阻塞的分组必须在输入端口处排队,并等待稍后被及时调度以通过交换结构。

三、交换

        交换结构位于一台路由器的核心部位,因为正是通过这种交换结构,分组才能实际地从一个端口交换(转发)到一个输出端口。常见的交换方式如下:

  • 经内存交换
  • 经总线交换
  • 经互联网络交换

        关于路由器的交换结构详细内容,可以阅读:

浅谈路由器交换结构icon-default.png?t=N7T8https://ztzhang.blog.csdn.net/article/details/136078726?spm=1001.2014.3001.5502

四、输出端口处理

        与输入端口类似。

五、何时出现排队

        在输入端口和输出端口处都可以形成分组队列。排队的位置和程度(或者在输入端口排队,或者在输出端口排队)将取决于流量负载、交换结构的相对速率和线路速率。我们现在更为详细一点考虑这些队列,因为随着这些队列的增长,路由器的缓存空间最终将会耗尽,并且当无内存可用于存储到达的分组时将会出现丢包(packet loss)。我们说有时候会说:分组"在网络中丢失"或"被路由器丢弃"。正是在一台路由器的这些队列中,这些分组被实际丢弃或丢失。

        假定输入线路速度与输出线路速度(传输速率)是相同的,均为Rline (单位为每秒分组数),并且有N个输入端口和N个输出端口。为进一步简化讨论,假设所有分组具有相同的固定长度,分组以同步的方式到达输入端口。这就是说,在任何链路发送分组的时间等于在任何链路接收分组的时间,在这样的时间间隔内,在一个输入链路上能够到达0个或1个分组。定义交换结构传送速率Rswitch 为从输入端口到输出端口能够移动分组的速率。如果Rswitch Rline 快N倍,则在输入端口处仅会出现微不足道的排队。这是因为即使在最坏情况下,所有N条输入线路都在接收分组,并且所有的分组将被转发到相同的输出端口,每批N个分组(每个输入端口一个分组)也能够在下一批到达前通过交换结构。

5.1 输入排队

        如果交换结构不能快得(相对于输入线路速度而言)使所有到达分组无时延地通过它传送,会发生什么情况呢?在这种情况下,在输入端口也将出现分组排队,因为到达的分组必须加入输入端口队列中,以等待通过交换结构传送到输出端口。为了举例说明这种排队的重要后果,考虑纵横式交换结构,并假定:①所有链路速度相同;②一个分组能够以一条输入链路接收一个分组所用的相同的时间量,从任意一个输入端口传送到给定的输出端口;③分组按照FIFO方式,从一指定输入队列移动到要求的输出队列中。只要其输出端口,多个分组可以被并行传送。然而,如果位于两个输入队列前端的两个分组是发往 同一输出队列的,则其中的一个分组将被阻塞,并必须在输入队列中等待,因为交换结构每一次只能传送一个分组到指定端口。

5.2 输出排队

        我们接下来考虑在交换机的输出端口是否会出现排队。再次假定RswitchRline 快N倍,并且到达N个输入端口的分组,其目的地是相同的输出端口。在这种情况下,在向输出链路发送一个分组的时间内,将有N个新分组到达该输出端口(N 个输入端口每个都到达1个)。因为输出端口在一个单位时间(该分组的传输时间) 内仅能传输一个分组,这N个到达分组必须排队(等待)经输出链路传输。在正好传输 N 个分组(这些分组是前面正在排队的)之一的时间中,可能又到达N个分组,等等。所以,分组队列能够在输出端口形成,即使交换结构比端口线路速率快N倍。最终,排队的分组数量能够变得足够大,耗尽输出端口的可用内存。

        当没有足够的内存来缓存一个入分组时,就必须做出决定:要么丢弃到达的分组(采用一种称为弃尾(drop-tail) 的策略),要么删除一个或多个已排队的分组为新来的分组腾出空间。在某些情况下,在缓存填满之前便丢弃一个分组(或在其首部加上标记)的做法是有利的,这可以向发送方提供一个拥塞信号。已经提出和分析了许多分组去弃与标记策略,这些策略统称为主动队列管理(Active Queue Manage ment,AQM)算法。随机早期检测(Random Early Detection, RED)算法是得到最广泛研究和实现的AQM 算法之一。

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

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

相关文章

亚信安慧AntDB在数据可靠性和系统安全中的实践

亚信安慧AntDB以持续创新和技术进步为理念,不断优化性能和功能,至今已经保持了15年的平稳运行。这一漫长的历程并非偶然,而是源于AntDB团队对技术的不懈探索和追求。他们始终秉承着“永不停歇,永不满足”的信念,将技术…

openwrt中时间同步ntp使用

前言 openwrt开发中,我们可能遇到这样需求,使用路由器支持局域网内设备ntp授时功能。 作者:羽林君 转载授权以及围观:欢迎关注微信公众号:羽林君 或者添加作者个人微信:become_me ntp是什么 NTP&#…

STM32-V5开发板和树莓派的区别介绍

STM32-V5开发板和树莓派是两种不同类型的嵌入式开发平台,它们在设计理念、性能、用途和编程方式上都有所区别。 STM32-V5开发板 STM32-V5开发板是基于STM32微控制器的开发平台,通常用于嵌入式系统开发、教学和实验。 区别: - **核心*…

冒泡排序,详详解解

目录 基本概念: 上图: 核心思路: 基本步骤: 关键: 代码核心: 补充: 代码(规范) : 代码(优化): 今天我们不刷力扣了&…

【Node.js从基础到高级运用】十二、身份验证与授权:JWT

身份验证与授权是现代Web应用中不可或缺的部分。了解如何在Node.js应用中实施这些机制,将使你能够构建更安全、更可靠的应用程序。本文将引导你通过使用JWT实现用户注册、登录和权限控制的过程。 JWT(Json Web Token) JWT是一种用于双方之间…

使用HttpRequest工具类调用第三方URL传入普通以及文件参数并转换MultipartFile成File

使用HttpRequest工具类调用第三方URL传入普通以及文件参数 一、依赖及配置二、代码1、模拟第三方服务2、调用服务3、效果实现 一、依赖及配置 <!--工具依赖--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId&g…

IP在网络通信中的重要作用

IP&#xff0c;全称Internet Protocol&#xff0c;即网际互连协议&#xff0c;是TCP/IP体系中的网络层协议。IP作为整个TCP/IP协议族的核心&#xff0c;是构成互联网的基础。它的作用重大且深远&#xff0c;下面将详细阐述IP的定义及其在网络通信中的重要作用。 首先&#xff0…

.NET高级面试指南专题十七【 策略模式模式介绍,允许在运行时选择算法的行为】

介绍&#xff1a; 策略模式是一种行为设计模式&#xff0c;它允许在运行时选择算法的行为。它定义了一系列算法&#xff0c;将每个算法封装到一个对象中&#xff0c;并使它们可以互相替换。这使得算法可独立于使用它的客户端变化。 原理&#xff1a; 策略接口&#xff08;Strat…

【JavaScript 漫游】【036】CORS 通信总结

文章简介 CORS 是一个 W3C 标准&#xff0c;全称是“跨域资源共享”&#xff08;Cross-origin resource sharing&#xff09;。它允许浏览器向跨域的服务器&#xff0c;发出 XMLHttpRequest 请求&#xff0c;从而克服了 AJAX 只能同源使用的限制。 本篇文章为【JavaScript 漫…

Frustum PointNets for 3D Object Detection from RGB-D Data(2018)

3D空间的几何和拓扑结构 直接在3D空间操作可以更自然的参数化以及捕捉 重复、平面、对称等几何结构 2. Related Work 3D Object Detection from RGB-D Data Front view image based methods&#xff08;只是介绍了一种表示方法&#xff09; Bird’s eye view based methods&a…

【Ubuntu20.04】Clion 配置 Libtorch + OpenCV

首先根据自己的CUDA版本安装正确对应的cuda和cudnn并进行配置。 这里安装的是cuda-11.3版本&#xff0c;以下基于这个版本进行安装。 1. 安装 Clion 因为Clion更容易直接编写CMakelists.txt&#xff0c;所以使用Clion作为IDE。 需要在File -> Setting -> CMake的CMake…

C# wpf 使用GDI实现截屏

wpf截屏系列 第一章 使用GDI实现截屏&#xff08;本章&#xff09; 第二章 使用GDI实现截屏 第三章 使用DockPanel制作截屏框 第四章 实现截屏框热键截屏 第五章 实现截屏框实时截屏 第六章 使用ffmpeg命令行实现录屏 文章目录 wpf截屏系列前言一、导入gdi32方法一、NuGet获取…

ChatGPT赋能遥感研究:精准分析处理遥感影像数据,推动科研新突破

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。重点介绍ChatGPT在遥感中的应用&#xff0c;人工智能在解…

数字排列 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 小明负责公司年会&#xff0c;想出一个趣味游戏: 屏幕给出 1−9 中任意 4 个不重复的数字,大家以最快时间给出这几个数字可拼成的数字从小到大排列位于第 n 位置…

Linux操作系统——线程概念

1.什么是线程&#xff1f; 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程线程在进程内部运行&#xff0c;本质是在进程地址空间内运行在Linux系统中&#x…

K8S上安装LongHorn(分布式块存储) --use

要在 Kubernetes上安装 LongHorn&#xff0c;您可以按照以下步骤进行操作&#xff1a; 准备工作 将LongHorn只部署在k8s-worker5节点上。 给节点设置污点 $. kubectl taint nodes k8s-worker5 longhorn:PreferNoSchedule # 参考 # # 删除污点 # kubectl taint nodes k8s-w…

【趣味项目】一键生成LICENSE

【趣味项目】一键生成LICENSE 项目地址&#xff1a;GitHub(最新版本) | GitCode(旧版本) 项目介绍 一款用于自动生成开源项目协议的工具&#xff0c;可以通过 npm 进行安装后在命令行使用&#xff0c;非常方便 使用方式 npm install xxhls/get-license -gget-license --l…

MATLAB画图:错误使用plot无效的颜色或线型...

指定绘图颜色 - MATLAB & Simulink (mathworks.com) 使用matlab画图&#xff0c;想要使用其他颜色时&#xff0c;如想要从上面的颜色类型修改为下面的颜色类型 只需要在后面修改color属性即可 s1 plot(C3, LineWidth,2); s1.Color [0.8500 0.3250 0.0980]; hold on s2 …

node.js入门—day02

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大二在校生 &#x1f921; 个人主页&#xff1a;坠入暮云间x &#x1f43c;座右铭&#xff1a;给自己一个梦想&#xff0c;给世界一个惊喜。 &#x1f385;**学习目标: 坚持每一次的学习打卡 文章目录 什么是单线程…

尚硅谷SpringBoot3笔记 (二) Web开发

Servlet&#xff0c;SpringMVC视频推荐&#xff1a;53_尚硅谷_servlet3.0-简介&测试_哔哩哔哩_bilibili HttpServlet 是Java Servlet API 的一个抽象类&#xff0c;用于处理来自客户端的HTTP请求并生成HTTP响应。开发人员可以通过继承HttpServlet类并重写其中的doGet()、do…