计算机网络第4章-网络层(1)

引子

网络层能够被分解为两个相互作用的部分:

数据平面和控制平面。

网络层概述

路由器具有截断的协议栈,即没有网络层以上的部分。

如下图所示,是一个简单网络:

转发和路由选择:数据平面和控制平面

网络层的作用从表面看就是:

将分组从一台发送主机移动到接收主机。

为此,需要两种重要的网络层功能:

转发

当一个分组到达某路由器后,路由器必须将该分组移动到适当的输出链路。

这也是数据平面中实现的唯一功能

路由选择

当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径。

计算这些路径的算法被称为路由选择算法。

路由选择将在网络层的控制平面中实现。

区分转发和路由选择

转发是指将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作。

转发发生的时间尺度很短(几纳秒),通常由硬件来实现。

路由选择是指分组从源到目的地所采取的端到端路径的网络范围处理过程,时间比转发长的多,通

常由软件来实现。

转发表

每台网络路由器有一个转发表,路由器检查到达分组首部的一个或多个字段值,进而使用这些首部值在其转发表中索引。

下图就是一个索引表:

控制平面:传统的方法

路由选择算法运行在每一台路由器中,并且在每台路由器中都包含转发和路由选择两种功能。

并且路由器之间的路由选择算法相互通信。

控制平面:SDN方法

SDN方法是路由选择厂商在其产品中采用的传统方法。

每台路由器都有一个与其他路由器的路由选择组件通信的路由选择组件。

即路由器只负责转发,而转发表的计算交由远程控制器计算并且传输给本地路由器。

上图所示的控制平面方法是软件定义网络的本质。

因为计算转发表并与路由器交互的控制器是用软件实现的,故网络是“软件定义的”。

网络服务模型

网络服务模型定义了分组在发送与接收端系统之间的端到端运输特性。

网络层提供如下服务:

1.确保交付

2.具有时延上界的确保交付。

3.有序分组交付。

4.确保最小宽带。

5.安全性。

因特网的网络层提供一种单一的服务:

尽力而为服务。

也就是说:

传送的分组既不能保证以它们发送的顺序被接收,也不能保证它们最终交付。

路由器工作原理

下图是一个路由器的四个组件:

值得注意的是,上图的输入端口和输出端口并不是一个程序的端口,而指的是物理输入物理输出

输入端口:

它与位于入链路远端的数据链路层交互来执行数据链路层功能。

交换结构:

交换结构将路由器的输入端口连接到它的输出端口。

输出端口:

存储从交换结构接收的分组,并执行必要的链路层和物理层功能在输出链路上传输这些分组。

路由选择处理器:

路由选择执行控制平面功能。

在传统路由器主要负责计算转发表,在SDN路由器中,路由选择处理器负责与远程控制器通信,获

取到控制器计算的转发表,并且储存在本地路由器中。

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

下图是一个输入端口处理的流程图:

在输入端口执行路由器的转发,并且使用转发表来查找输出端口。

转发表从路由选择处理器进行交互,或者转发表接收来自SDN控制器的内容。

转发表再从路由选择处理器经过独立总线复制到线路卡,使用线路卡转发决策就可以在每个输入端

口本地做出,而无须基于每个分组调用集中式路由选择处理器。

下图是一个仅包括四个表项的转发表:

使用这种风格的转换表,路由器用分组目的地址的前缀与该表中的表项进行匹配。

如果存在一个匹配项,则路由器向该匹配项相关联的链路转发分组。

若一个分组可以和多个链路接口匹配,则使用“最长前缀匹配规则”,即在表中寻找最长的匹配项转发。

交换

交换结构位于一台路由器的核心部位,正是通过这种交换结构,分组才能从输入端口转发到输出端

口。

交换可以由三种方式来完成:

经内存交换

最简单、最早的路由器是传统的计算机,在输入端口与输出端口之间的交换是在CPU(路由选择处

理器)的直接控制下完成的。

当一个分组到达一个输入端口时,该端口会先通过中断方式向路由选择处理器发送信号。

于是,该分组从输入端口被复制到处理器内存中,路由选择器再从首部中提取出目的地址,在转发

表中找到适当的输出端口,并将该分组复制到输出端口的缓存中。

值得注意的是,在内存交换中不能一次性转发两个分组,即使它们有不同的目的端口,因为经过共

享总线一次仅能执行一个内存读/写。

现在路由器大多是内存交换

经总线交换

输入端口将分组直接传送到输出端口,不需要路由选择处理器的干预。

经互联网络交换

使用一个更复杂的互联网络,即纵横式交换机,由2N条总线组成的互联网络,连接N各输入端口与

N个输出端口。也正因为这样,纵横式交换机是非阻塞的。

输出端口处理

如图所示,输出端口处理取出已经存放在输出端口内存中的分组并将其发送到输出链路上,这包括

选择和取出排队的分组进行传输,执行所需的链路层和物理层传输功能。

何时出现排队

即路由器的缓存空间耗尽,便会出现丢包。

缓存空间可以是输入端口缓存,也可以是输出端口缓存。

输入排队

原因:

交换结构不能快得使所有到达分组无时延地通过,输入排队便会出现。

线路前部阻塞,即在一个输入队列中排队的分组必须等待通过交换结构发送,因为它被另一个分组

所阻塞。

输出排队

如果路由选择处理器交换的速率远大于输出端口从输出缓存发送分组的速率,那么就会出现输出排

队。

并且,当没有足够的缓存来缓存一个入分组时,就必须丢弃到达的分组(弃尾),或者删除一个或

多个已经在排队的分组。

分组调度

对于分组调度,主要有三种调度(排队方式)。

先进先出

先到达的分组先被转发,后到达的分组如果此时缓存已满则丢弃。

该服务也被叫做FIFO

优先权排队

传送进来的分组被放入优先权队列中,对于高优先权的分组会被放入高优先权队列,

低优先权的分组会被放入低优先权队列,先转发高优先权队列,后转发低优先权队列。

但是在“非抢占式优先权排队”规则下,哪怕一个低优先权分组被转发过程中,来了一个高优先权分

组,低优先权分组也不会被终止。

循环和加权公平排队

在循环排队规则下,分组也会被进行优先权分类。

即先传送类1的分组,后传送类2的分组,在传送类1的分组,如此循环。

下面是一个两类循环队列的操作图例子:

在这个例子中,分组1、2和4属于第一类, 分组3和5属于第二类。分组1 一到达输出队列就立即开

始传输。分组2和3在分组1的 传输过程中到达,因此排队等待传输。在分组1传输后,链路调度器

查找类2的分组,因 此传输分组3 :在分组3传输完成后,调度器查找类1的分组,因此传输分组

2。在分组2 传输完成后,分组4是唯一排队的分组,因此在分组2后立刻传输分组4。

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

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

相关文章

精选8款UML图工具,闭眼入!

在现代软件开发领域,UML(统一建模语言)图是不可或缺的工具之一,用于可视化和通信复杂系统的结构和设计。然而,在选择合适的UML图工具时,你需要考虑多个因素,如项目规模、团队协作需求、功能复杂…

Docker dnmp 多版本php安装 php8.2

Laravel9 开发需要用到php8.1以上的版本,而dnmp只支持到php8.0。安装php8.2的步骤如下: 1. 从/services/php80目录复制一份出来,重命名为php82,extensions目录只保留 install.sh 和 install-php-extensions 这两个文件 2. 修改.en…

苹果IOS系统webglcontextlost问题-解决方案

问题描述 在IOS手机 解码视频流的时候,第一次可以正常播放,但只要IOS手机熄屏,再重新唤醒,就会一直播放失败,无论换哪个浏览器都不行。安卓手机则一切正常。 经过排查,发现 IOS手机 的浏览器会无故 webGL…

突破性技术!开源多模态模型—MiniGPT-5

多模态生成一直是OpenAI、微软、百度等科技巨头的重要研究领域,但如何实现连贯的文本和相关图像是一个棘手的难题。 为了突破技术瓶颈,加州大学圣克鲁斯分校研发了MiniGPT-5模型,并提出了全新技术概念“Generative Vokens "&#xff0c…

新工业革命?基于机器视觉技术分拣机器人的未来与发展

原创 | 文 BFT机器人 01 分拣机器人的应用 基于机器视觉技术的分拣机器人可以将工人从繁重的劳动中解放出来,大大提高了分拣的效率,因此被广泛地应用于食品、物流以及煤矿等多个行业。 1.1 分拣机器人在水果分拣中的应用 随着农业科技的发展和人民生活…

SOLIDWORKS参数化设计之部分打包 慧德敏学

参数化设计就是通过主参数来驱动整个模型的变化,类似于SOLIDWORKS的方程式中,使用全局变量来控制模型其它参数的变化,因此要做参数化就必须要确定好主参数以及变化逻辑。 我们之前介绍过SOLIDWORKS参数化设计软件-SolidKits.AutoWorks&#…

软件设计模式原则(二)开闭原则

继续讲解第二个重要的设计模式原则——开闭原则~ 一.定义 开闭原则(Open Closed Principle)是编程中最基础、最重要的设计原则。一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实…

关于FastJSON序列化Bean时对get方法调用的细节

结论 使用JSON.toJSONString去序列化Bean的时候 FastJSON会把Bean里面的get开头,有返回值且没有参数的方法都调用一遍。 看代码 package org.example.domain;import lombok.Getter; import lombok.Setter;/*** program: parent_pro* description:* author: 渭水* c…

presto插件机制揭秘:探索无限可能的数据处理舞台

文章目录 1. 前言2. Presto插件架构3. Plugin接口3.1 插件协议3.2 插件实现类 4. 插件加载过程4.1 PluginManager 5. 插件应用6. 总结 关键词:Presto Plugin 1. 前言 本文源码环境: presto: prestoDb 0.275版本 在Presto框架中插件机制设计是一种非常常见…

备忘录在电脑里叫什么?Win10系统自带的备忘录在哪打开?

对于每天都需要使用电脑来办公的职场人士来说,能够随手在电脑桌面上记录工作笔记、常用工作资料、工作注意事项等内容是非常有必要的。但是如果想要实现在电脑上随手记录事情,就需要先找到一款类似于备忘录或便签软件那样的记事软件。 那么备忘录在电脑…

java实现pdf文件添加水印,下载到浏览器

java实现pdf文件添加水印&#xff0c;下载到浏览器 添加itextpdf依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.8</version> </dependency>文件下载到浏览器和指定路径 …

unity 使用TriLib插件动态读取外部模型

最近在做动态加载读取外部模型的功能使用了triLib插件&#xff0c;废话不多说直接干货。 第一步下载导入插件&#xff0c;直接分享主打白嫖共享&#xff0c;不搞花里胡哨的。 链接&#xff1a;https://pan.baidu.com/s/1DK474wSrIZ0R6i0EBh5V8A 提取码&#xff1a;tado 导入后第…

浅谈无源供电无线测温在线监测系统应用方案

安科瑞 崔丽洁 摘要&#xff1a;无源供电无线测温在线监测系统是一种基于声表面波技术的测温技术&#xff0c;在变电站监测方面得到了很好的技术实践应用。本文对无源供电无线测温在线监测系统研究应用进行分析研究。 关键词&#xff1a;设备检测&#xff1b;无线测温。 引言 在…

dubbo没有找到生产者

1、没有找到生产者 com.alibaba.dubbo.rpc.RpcException: No provider available from registry 127.0.0.1:2181 for service .... , please check status of providers(disabled, not registered or in blacklist)2、 查看是不是 对应的providers 没有 注册上去 找到 zk 对应…

哪里能找到可以学习的前端实战项目?

前言 下面是我整理的一些关于GitHub上的前端相关的项目&#xff0c;希望对你有所帮助&#xff0c;整理不易&#xff0c;可以的话不要吝啬你的点赞喜欢收藏哈~ 废话少说&#xff0c;我们直接进入正题——> 实用工具向 1.Echarts Star&#xff1a;55.6k Echarts提供了大量…

INFINI Labs 产品更新 | Agent 全新重构,优化指标采集,支持集中配置管理,支持动态下发等功能

INFINI Labs 产品又更新啦~ 本次更新主要有 Agent、Console、Loadgen 等产品&#xff0c;其中 Agent 进行全新重构升级&#xff0c;新版限制了 CPU 资源消耗&#xff0c;优化了内存&#xff0c;相比旧版内存使用率降低 10 倍&#xff0c;极大的降低了对宿主服务器造成资源占用…

react-markdown支持83版本的Chrome,解决Object.hasOwn is not a function问题

旧版浏览器支持 react-markdown用了一个ES2022的api&#xff0c;Object.hasOwn测试的时候一切正常&#xff0c;当我切换到生成环境的旧版的83的Chrome之后&#xff0c;发现会报Object.hasOwn is not a function这个错误。 https://github.com/remarkjs/react-markdown/issues/…

自动驾驶的同学看过来:DriveLM:世界首个语言+自动驾驶全栈开源数据集

DriveLM&#xff1a;世界首个语言自动驾驶全栈开源数据集&#xff0c;旨在借助大语言模型和海量自然语言数据集&#xff0c;构筑复杂场景下安全、精准、可解释的自动驾驶系统&#xff0c;突破现有自动驾驶推理能力上限&#xff0c;数据集已开源&#xff01; DriveLM提供了量化…

EDA常用数字器件硬件描述

EDA常用数字器件硬件描述 前言 在使用了一段时间EDA编程之后&#xff0c;来回顾一下基本的知识&#xff0c;看看如何实现基本的EDA常用数字器件对应的硬件描述 一、组合逻辑器件描述 1. 基本的逻辑门电路 与、或、非&#xff08;取反&#xff09;、与非、或非、异或、同或 …

掌控你的Mac性能:System Dashboard Pro,一款专业的系统监视器

作为Mac用户&#xff0c;你是否曾经想要更好地了解你的电脑性能&#xff0c;以便优化其运行&#xff1f;是否想要实时监控系统状态&#xff0c;以便及时发现并解决问题&#xff1f;如果你有这样的需求&#xff0c;那么System Dashboard Pro就是你的不二之选。 System Dashboar…