【计算机网络:自顶向下方法】Chapter4 网络层:数据平面

news2024/11/23 21:21:10

Chapter4

  • 4.1 网络层概述
    • 4.1.1 网络层服务
    • 4.1.2 网络层的主要功能
      • 转发(局部)
      • 路由选择(全局)
    • 4.1.3 控制平面和数据平面
      • 传统方式
      • SDN方式
    • 4.1.4 网络服务模型
  • 4.2 路由器组成
    • 4.2.1 路由器结构概况
    • 4.2.2 转发方式
    • 4.2.3 输入端口处理与基于目的地的转发
      • 基于目的地的转发
      • 输入端口处理
    • 4.2.4 交换结构
    • 4.2.5 输出端口处理
      • 丢弃策略
      • 调度策略

4.1 网络层概述

4.1.1 网络层服务

网络层为上层(传输层)提供的服务为:在发送端,将报文段封装为数据报并交由下层(数据链路层),在接收端,将数据包解封装为段并交由上层的传输层实体,实现主机到主机的通讯。
不同于传输层协议(只存在于主机中),网络层的协议存在于每一个主机和路由器上,于是它在每一台路由器上都维护了主机与主机之间的通信,属于有连接的服务(与TCP面向连接不同,TCP只在两台端系统中维护通信信息)。

4.1.2 网络层的主要功能

转发(局部)

当一个分组到达某台路由器的输入链路时,该路由器必须将该分组转发到设当的输出链路中。(查转发表)

路由选择(全局)

使用路由算法来决定分组从发送主机到目标接收主机的路径。(计算出转发表)

4.1.3 控制平面和数据平面

控制平面主要的功能是利用路由选择算法计算转发表,决定端到端的路径,数据平面主要做转发工作。分为传统方式和SDN(Software-Defined Networking)方式。

传统方式

传统方式中的控制平面为每-路由器(Per-router)控制平面,每一个路由器单独运行路由选择算法,通过与其他路由器路由算法的通信,决定端到端的路径。

传统方式的数据平面所实现的转发基于目标ip地址和转发表。

SDN方式

SDN方式中的控制平面为逻辑集中的控制平面,使用一个远程控制服务器实现转发表的计算,并将转发表分发到各台路由器中。

SDN方式中的数据平面所实现的转发基于多个字段和转发表,且功能更多。

4.1.4 网络服务模型

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

  • 对于单个数据报而言
    • 可靠传送
    • 延迟保证
  • 对于数据报流而言
    • 保证数据报传送
    • 保证流的最小带宽
    • 分组之间的延迟差

以下为不同网络架构的服务模型,因特网提供的是尽力而为的服务,说白了就是什么都不保证。
在这里插入图片描述

图片来源于课程PPT

4.2 路由器组成

4.2.1 路由器结构概况

路由器的大致组成如下图所示:
在这里插入图片描述

图片来源于课程PPT
  • 输入端口:功能为接收到来的物理层信号,通过链路层功能将物理层信号转换为链路层的帧(frame),再通过网络层提取帧中的数据报,最后根据转发表决定前往的输出端口。(这里的端口,指的是路由器的物理输入和输出接口,与第2、3章所讲的与套接字相关的软件端口不同)

  • 交换结构(high-seed switching fabric):将路由器的输入端口连接到其输出端口。

  • 输出端口:输出端口存储从交换结构中接收的分组,并经过链路层和物理层在输出链路上传输。

  • 路由选择处理器(routing processor):路由选择处理器执行控制平面功能。它运行路由选择协议,为路由器计算出转发表(传统方式),或者负责与远程控制器通信(SDN方式)。还进行网络管理功能。

其中,输入端口,输出端口与交换结构属于数据平面,它们通常使用硬件实现,并运行在纳秒级时间尺寸上;路由选择处理器属于控制平面,它通常使用软件实现,并运行在毫秒级时间尺寸上。

4.2.2 转发方式

转发方式大致分为两种,基于目的地转发通用转发

  • 基于目的地转发:仅依赖于IP数据报的目标IP地址(传统方式)
  • 通用转发: 基于头部字段的任意集合进行转发(SDN方式)

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

基于目的地的转发

转发表如果蛮力维护每一个IP地址到每一个端口的映射关系的话,那么表将会异常庞大(32位IP地址有 2 32 2^{32} 232个取值)。
于是,转发表所维护的表项是一个IP地址范围到端口的映射关系,如下图例子所示。
在这里插入图片描述

图片来源于《计算机网络:自顶向下方法》

由于IP地址范围可能有公共的前缀,故实际维护表项时只需要维护一个前缀即可,如下图所示。
在这里插入图片描述

图片来源于《计算机网络:自顶向下方法》

当某个IP地址与多个前缀相匹配时,路由器使用最长前缀匹配规则,即在该表中寻找最长的匹配项。例如地址:
11001000 00010011 00011000 10101010
的前24比特与上表中的第二项匹配,而该地址的前21比特与表中的第三项匹配,则选择第二项所对应的端口放出。在下一节会讲述采用最长前缀匹配规则的原理。
在路由器中,经常使用三态内容可寻址存储器(Tenary Content Address Memory,TCAM)来查找转发表中的表项。

输入端口处理

更详细的输入处理图如下所示,在该图中可以看到,输入端口维护了一个分组的队列,以处理输出拥塞的问题。
在这里插入图片描述

图片来源于课程PPT

拥塞问题:

  • 交换结构的速率小于输入端口的汇聚速率时,在输入端口可能需要排队(引起排队延迟以及丢包),但是一般设计的时候都会满足交换速率较大,故可以忽略。
  • 当目标端口存在竞争关系时(两个数据报前往同一个端口),排在队头的数据报阻止了队列中其他数据报的移动,如下图
    在这里插入图片描述
图片来源于课程PPT

4.2.4 交换结构

交换结构位于路由器的核心部位,将分组从输入缓冲区传输到合适的输出端口,交换速率一般比较快(比如有 N N N个输入端口,那么交换速率是输入链路速率的 N N N倍才比较理想),才不会称为瓶颈。

三种典型的交换结构:
在这里插入图片描述

图片来源于课程PPT
  • 经内存交换:输入端口中的分组被拷贝进内存,CPU提取分组头部信息之后,查找转发表相应表项,再将分组拷贝到输出端口;该方式需要经过系统总线两次,转发速率受内存的带宽限制,且一次只能转发一个分组。
  • 经总线交换:输入端口经一根共享总线直接连接到输出端口进行传送,不需要经过CPU;受总线带宽限制,一次只能转发一个分组。(具体的实现方法是,在输入端口中为分组指定输出端口标签,然后经由总线向所有的输出端口转发,输出端口收到分组之后,标签一致的保留
  • 经互联网络交换(crossbar等):同时并发转发多个分组,克服总线带宽限制。

4.2.5 输出端口处理

当数据报从交换结构的到达速率比传输速率快时,输出端口就需要排队缓存;当缓冲区中存在多个分组时,需要由调度策略选择排队的数据报进行传输;当缓冲区满时,由丢弃策略选择排队的数据报进行丢弃(产生丢包)。

丢弃策略

  • tail drop:丢弃刚刚到达的分组
  • priority:根据优先级丢弃
  • random:随机丢弃

调度策略

常见的调度策略有:

  • 先进先出(first in first out, FIFO):按照分组到达的次序传输。
  • 优先级调度:按照优先级分类,发送优先级最高的类中的所有分组,再发送优先级低的分类。
  • 循环排队规则:循环扫描不同类型的队列,每一类发送一个分组之后发送下一类。
  • 加权公平队列:在循环的基础上,每个类给予不同权重,权重高的服务量较多。

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

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

相关文章

什么是api应用程序接口?

API:应用程序接口(API:Application Program Interface) 应用程序接口是一组定义、程序及协议的集合,通过 API 接口实现计算机软件之间的相互通信。API 的一个主要功能是提供通用功能集。程序员通过调用 API 函数对应用程序进行开发,可以减轻编程任务。…

【华为OD机试模拟题】用 C++ 实现 - TLV 编码(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明TLV 编码题目输入输出描述示例一输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看…

大数据技术之Hadoop

第1章 Hadoop概述1.1 Hadoop是什么1.2 Hadoop发展历史(了解)1.3 Hadoop三大发行版本(了解)Hadoop三大发行版本:Apache、Cloudera、Hortonworks。Apache版本最原始(最基础)的版本,对于…

模型类的编写有没有什么靠谱的优化方法?

模型类的编写需要私有属性,setter...getter...方法、toString方法 和构造函数。虽然这些内容不难,同时也都是通过IDEA工具生成的,但是过程还是必须得走一遍,那么对于模型类的编写有没有什么优化方法?可以通过Lombok来实现优化。L…

C语言--指针进阶2

目录前言函数指针函数指针数组指向函数指针数组的指针回调函数前言 本篇文章我们将继续学习指针进阶的有关内容 函数指针 我们依然用类比的方法1来理解函数指针这一全新的概念,如图1 我们用一段代码来验证一下: int Add(int x, int y) {return xy;…

idea报错idea start filed

今天遇到idea启动失败的问题 问题分析: address already in use:bind idea需要的端口被占用 解决 重启就行,重启会重新分配端口。 官方解决 查看给的网站地址,这里官方给出的原因(访问好慢,搭梯子我才…

图节点嵌入相关算法学习笔记

引言 本篇笔记为coggle 2月打卡任务,正好也在学习cs224w,干脆就一起做了,以下是任务列表: 任务名称难度任务1:图属性与图构造低、1任务2:图查询与遍历低、2任务3:节点中心性与应用中、2任务4&…

Spark计算框架入门笔记

Spark是一个用于大规模数据处理的统一计算引擎 注意:Spark不仅仅可以做类似于MapReduce的离线数据计算,还可以做实时数据计算,并且它还可以实现类似于Hive的SQL计算,等等,所以说它是一个统一的计算引擎 既然说到了Spar…

js 拖动--动态改变div的宽高大小

index.html 如下&#xff1a;&#xff08;可以新建一个index.html文件直接复制&#xff0c;打开运行&#xff09; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta http-equiv"X-UA-Compatible&qu…

Python tkinter -- 第18章 画布控件之窗口

18.2.22 create_window(position, **options) 可以在画布控件中放置其他tkinter控件。放置的方法就是使用窗口组件。一个窗口组件只能容纳一个控件。如果要放置多个控件&#xff0c;可以把这些控件作为Frame控件的子控件&#xff0c;将Frame控件放入窗口组件中&#xff0c;就可…

超简单 华为OD机试用Python实现 -【踢石头子,踢石子问题】(2023-Q1 新题)

华为OD机试题 华为OD机试300题大纲踢石头子,踢石子问题题目输入输出示例一输入输出Python 代码如下所示算法思路华为OD机试300题大纲 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:blog.csdn.net/hihell/categ…

ChatGPT似乎有的时候并不能搞懂Java的动态分派,你懂了吗?

目录 碎碎念 ChatGPT 中出现的问题 那么正确答案应该是什么呢&#xff1f; 分派的相关知识点总结&#xff1a; 分派是什么&#xff1f; 静态分派与动态分派&#xff1a; Java语言是静态多分派&#xff0c;动态单分派的&#xff1b; 静态分派&#xff1a;静态重载多分派…

追梦之旅【数据结构篇】——详解C语言实现二叉树

详解C语言实现二叉树~&#x1f60e;前言&#x1f64c;什么是二叉树&#xff1f;二叉树的性质总结&#xff1a;整体实现内容分析&#x1f49e;1.头文件的编写&#xff1a;&#x1f64c;2.功能文件的编写&#xff1a;&#x1f64c;1&#xff09;前序遍历的数值来创建树——递归函…

IGKBoard(imx6ull)-Input设备编程之按键控制

文章目录1- input子系统介绍2- input事件目录&#xff08;1&#xff09;struct input_event 结构体&#xff08;2&#xff09;type&#xff08;事件类型&#xff09;&#xff1a;&#xff08;3&#xff09;code&#xff08;事件编码&#xff09;&#xff08;4&#xff09;value…

【华为OD机试模拟题】用 C++ 实现 - 九宫格按键输入(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明九宫格按键输入题目输入输出示例一输入输出说明示例二输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高…

webp格式转换成png怎么转

相对于png 图片&#xff0c;webp比png小了45%&#xff0c;但是缺点是你压缩的时候需要的时间更久了&#xff1b;优点是体积小巧&#xff1b;缺点是兼容性不太好, 只有opera,和chrome支持&#xff0c;不仅如此在后期的编辑修改上也很多软件无法打开。所以我们通常要将webp格式转…

9.1 IGMPv1实验

9.4.1 IGMPv1 实验目的 熟悉IGMPv1的应用场景掌握IGMPv1的配置方法实验拓扑 实验拓扑如图9-7所示&#xff1a; 图9-7&#xff1a;IGMPv1 实验步骤 &#xff08;1&#xff09;配置IP地址 MCS1的配置 MCS1的IP地址配置如图9-8所示&#xff1a; 图9-8&#xff1a;MCS1的配置 …

xgboost学习-XGBoost的智慧

文章目录一、选择弱评估器&#xff1a;重要参数booster二、XGB的目标函数&#xff1a;重要参数objective三、求解XGB的目标函数四、参数化决策树 alpha&#xff0c;lambda五、寻找最佳树结构&#xff1a;求解 ω与T六、寻找最佳分枝&#xff1a;结构分数之差七、让树停止生长&a…

redis(10)事务和锁机制

Redis事务定义 Redis 事务是一个单独的隔离操作&#xff1a;事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中&#xff0c;不会被其他客户端发送来的命令请求所打断。 Redis 事务的主要作用就是串联多个命令防止别的命令插队。 Multi、Exec、discard Redis 事务中…

【数据挖掘实战】——应用系统负载分析与容量预测(ARIMA模型)

项目地址&#xff1a;Datamining_project: 数据挖掘实战项目代码 目录 一、背景和挖掘目标 1、问题背景 2、传统方法的不足 2、原始数据 3、挖掘目标 二、分析方法与过程 1、初步分析 2、总体流程 第一步&#xff1a;数据抽取 第二步&#xff1a;探索分析 第三步&a…