网络层(1)——概述

news2024/11/25 7:57:19

一、概述

        网络层毫无疑问是最复杂的一层,涉及到大量的协议与结构的内容。在如今主流的设计中,大家都会把网络层分成两个部分:数据平面、控制平面。其中数据平面指的是网络层中每台路由器的功能,它决定了到达路由器端口输入链路之一的数据包(即网络层的分组)如何转发到该路由器的输出链路之一。控制平面主要功能是控制数据包沿着从源主机到目的主机的端到端路径中路由器之间的路由方式。

        在传统的设计上,控制平面的选择协议和数据平面的转发功能已经被实现成了一个整体,位于一台路由器中,如今软件定义网络(Software-Defined Networking,SDN)通过将控制平面功能作为一种单独服务,明确地分离数据平面和控制平面。

        网络层涉及到地内容非常多且复杂,但是从表面来看,网络层的功能非常简单,总结下来就是两个词:转发,路由选择。

1.1 转发(forwarding)

        当一个分组到达某路由器的一条输入链路时,该路由器必须将该分组移动到适当的输出链路。转发是在数据平面中实现的唯一功能。当然,分组也可能被现有的路由器阻挡(例如,该分组来源于一个已知的恶意主机,或者该分组发向一个被禁止的目的主机),或者可能是冗余的并经过多条出链路发送。

1.2 路由选择(routing)

        当分组从发送方流向接收方,网络层必须决定这些分组所采用地路由或路径。计算这些路径的算法被称为路由选择算法(routing algorithm)。

1.3 小结

        转发和路由选择是网络层实现的两个功能,转发(forwarding)是数据平面的主要功能,是指将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作。转发发生的时间尺度很短(通常为几纳秒),因此通常用硬件来实现。路由选择(routing)是控制平面的主要功能,是指确定分组从源到目的地所采取的端到端路径的网络范围处理过程。路由选择发生的时间尺度长得多(通常为几秒),因此通常用软件来实现。

        每台网络路由器中有一个关键元素是它的转发表(forwarding table)。路由器检查到达分组首部的一个或多个字段值,进而使用这些首部值在其转发表中索引,通过这种方法来转发分组。这些值对应存储在转发表项中的值,指出了该分组将被转发的路由器的输出链路接口。

二、控制平面:传统方式

        对于控制平面来说,最重要的问题就是完成数据平面路由器中转发表的生成,路由选择算法决定了插入路由器中转发表的内容。

        通过考虑网络中的假想情况(不真实的,但技术上是可行的),也就是说路由器中物理上存在的所有转发表的内容是由人类网络操作员直接配置的,进一步说明转发和路由选择功能的区别和不同目的。在这种情况下,不需要任何路由选择协议!当然,这些人类操作员将需要彼此交互,以确保该转发表的配置能使分组到达它们想要到达的目的地。出现下列现象也很可能:人工配置更容易出错,并且对于网络拓扑变化的响应比起路由选择协议来更慢。我们要为所有网络具有转发和路由选择功能而感到幸运!

        下图中显示的实现路由选择功能的方法,是路由选择厂商在其产品中采用的传统方法。使用该方法,每台路由器都有一个与其他路由器的路由选择组件通信的路由选择组件。然而,对人类能够手动配置转发表的观察启发我们,对于控制平面功能来说,也许存在其他方式来确定数据平面转发表的内容。

三、控制平面:SDN方法

        下图显示了从路由器物理上分离的另一种方法,远程控制器计算和分发转发表以供每台路由器所使用。可以观察到两种方法(传统方法和SDN方法)数据平面组件是相同的。而SDN方法中,控制平面路由选择功能与物理的路由器是分离的,即路由选择设备仅执行转发,而远程控制器器计算并分发转发表。远程控制器可能实现在具有高可靠性和冗余的远程数据中心中,并可能由ISP或某些第三方管理。路由器和远程控制器是如何通信的呢?通过交换包含表和其他路由选择信息的报文。显示在下图中的控制平面方法是软件定义网络(Software-Defined Networking,SDN)的本质,因为计算转发表并与路由器交互的控制器是用软件实现的,故网络是"软件定义"的。

 四、网络服务模型

        网络服务模型(network service model)定义了分组在发送与接收端系统之间的端到端运输特性。我们现在考虑网络层能提供的某些可能的服务。这些服务可能包括:

  • 确保交付。该服务确保分组将最终到达目的地。
  • 具有时延上界的确保交付。该服务不仅确保分组的交付,而且在特定的主机到主机时延上界内(例如在100ms内)交付。
  • 有序分组交付。该服务确保分组以它们发送的顺序到达目的地。
  • 确保最小带宽。这种网络层服务模仿在发送和接收主机之间一条特定比特率(例如1 Mbps)的传输链路的行为。只要发送主机以低于特定比特率的速率传输比特(作为分组的组成部分),则所有分组最终会交付到目的主机。
  • 安全性。网络层能够在源加密所有数据报并在目的地解密这些分组,从而对所有运输层报文段提供机密性。

        这只是网络层能够提供的服务的部分列表,有无数种可能的服务变种。
        因特网的网络层提供了单一的服务,称为尽力而为服务(best-effort service)。使用尽力而为服务,传送的分组既不能保证以它们发送的顺序被接收,也不能保证它们最终交付;既不能保证端到端时延,也不能保证有最小的带宽。尽力而为服务看起来是根本无服务的一种委婉说法,即一个没有向目的地交付分组的网络也符合尽力而为交付服务的定义!其他的网络体系结构已定义和实现了超过因特网尽力而为服务的服务模型。

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

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

相关文章

软考2018下午第六题改编逻辑(状态模式)

在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象 package org.example.状态模式.软考航空;/*** author lst* date 2023年12月07日 15:37*/ class FrequentFlyer {CState state;double flyMiles;public FrequentFlyer() {…

为什么 AWS 数据库不讲 HTAP

在 AWS re:Invent 2023 掌门人 Adam Selipsky 的 Keynote 上,数据库方面最重磅的主题是 Zero-ETL,从 TP 数据库 (RDS, Aurora, DynamoDB) 同步数据到 AP 数据库 (Redshift)。 Zero-ETL 是 AWS 在去年 re:invent 2022 上推出的概念,今年则继…

Peter算法小课堂—贪心算法

课前思考:贪心是什么?贪心如何“贪”? 课前小视频:什么是贪心算法 - 知乎 (zhihu.com) 贪心 贪心是一种寻找最优解问题的常用方法。 贪心一般将求解过程分拆成若干个步骤,自顶向下,解决问题 太戈编程第…

simulink enable模块——使能子系统案例仿真分析

1.案例分析 仍以一个简单的乘法增益案例分析 分析:可以看到,在满足条件性才条用使能子系统,在t1s和3s时刻,进行增益操作,这和上篇博客中的触发trigger子系统相同的作用。 simulink trigger模块使用——多种调用案例分…

膜结构建筑:未来体育可持续发展的绿色引擎

随着城市化的飞速发展,现代建筑迫切需要创新性的解决方案,而膜结构建筑以其独特的设计理念和可持续性特点,正在成为未来城市发展的重要引擎。本文将深入探讨膜结构建筑在可持续城市发展中的关键作用,包括其在节能减排、资源有效利…

【Qt开发流程】之元对象系统

描述 Qt的元对象系统(Meta-Object System)是Qt框架的核心机制之一,它提供了运行时类型信息(RTTI)和信号与槽(Signals and Slots)机制的支持。元对象系统在Qt中扮演了很重要的角色,它…

C++STL的string类(一)

文章目录 前言C语言的字符串 stringstring类的常用接口string类的常见构造string (const string& str);string (const string& str, size_t pos, size_t len npos); capacitysize和lengthreserveresizeresize可以删除数据 modify尾插插入字符插入字符串 inserterasere…

解决WPS拖动整行的操作

如上图,想要把第4行的整行内容,平移到第1行。 1.选中第4行的整行 2.鼠标出现如图的样子时,按住鼠标左键,上移到第1行位置后,放开左键即可。

PPT设置章节

0 Preface/Foreward 1 添加章节方法 选择 > 开始 > 节 可以进行: 新增节重命名节删除所有节 相关节的内容如下:

vivado时序方法检查5

TIMING-14 &#xff1a; 时钟树上的 LUT 在时钟树上发现 LUT <cell_name> 。不建议在时钟路径上包含 LUT 单元。 描述 时钟路径上的 LUT 可能导致偏差过大 &#xff0c; 因为时钟必须在穿过互连结构的常规布线资源上进行布线。除偏差过大外 &#xff0c; 这些路径更…

【Java系列】函数式接口编程

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【算法每日一练]-结构优化(保姆级教程 篇4 树状数组,线段树,分块模板篇)

除了基础的前缀和&#xff0c;后面还有树状数组&#xff0c;线段树&#xff0c;分块的结构优化。 目录 分块 分块算法步骤&#xff1a; 树状数组 树状数组步骤&#xff1a; 线段树点更新 点更新步骤&#xff1a; 线段树区间更新 区间更新步骤&#xff1a; 分块 分块算…

Linux CentOS本地部署SQL Server数据库结合cpolar内网穿透实现公网访问

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 安装sql server二. 局域网测试连接三. 安装cpolar内网穿透四. 将sqlserver映射…

集合进阶指南:从基础知识到高级应用

集合高级 Collection集合 数组和集合的区别 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的数组可以存储基本数据类型和引用数据类型 集合只能存储引用数据类型,如果要存基本数据类型,需要存对应的包装类 集合类体系结构 Collectio…

一天一个设计模式---原型模式

基本概念 原型模式&#xff08;Prototype Pattern&#xff09;是一种创建型设计模式&#xff0c;其主要目的是通过复制现有对象来创建新对象&#xff0c;而不是通过实例化类。原型模式允许在运行时动态创建对象&#xff0c;同时避免了耦合与子类化。 在原型模式中&#xff0…

Tap虚拟网卡

1 概述 Tap设备通常用于虚拟化场景下&#xff0c;其驱动代码位于drivers/net/tun.c&#xff0c;tap与tun复用大部分代码&#xff0c; 注&#xff1a;drivers/net/tap.c并不是tap设备的代码&#xff0c;而是macvtap和ipvtap&#xff1b; 下文中&#xff0c;我们统一称tap&#…

C++ vector基本操作

目录 一、介绍 二、定义 三、迭代器 四、容量操作 1、size 2、capacity 3、empty 4、resize 5、reserve 总结&#xff08;扩容机制&#xff09; 五、增删查改 1、push_back & pop_back 2、find 3、insert 4、erase 5、swap 6、operator[] 一、介绍 vector…

圣诞将至—C语言圣诞树代码来啦

文章目录 圣诞将至—C实现语言圣诞树源码 圣诞将至—C实现语言圣诞树 圣诞树 源码 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <math.h> #include <stdlib.h> #include <windows.h> #include <time.h> #define PI 3.14159265…

Maven-高效的Java项目构建与管理工具(含Maven详细安装与配置过程)

Maven 什么是Maven&#xff1f; 正如题目所说&#xff0c;Maven就是一款高效的Java项目构建与管理工具&#xff0c;基于项目对象模型&#xff08;POM&#xff09;概念&#xff0c;利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。是Apache软件基金会的一个开源…

全球市场调研:找准热门产品,开创跨境电商新蓝海

在全球数字化浪潮的推动下&#xff0c;跨境电商正蓬勃发展&#xff0c;成为连接世界各地消费者与商品的桥梁。然而&#xff0c;在竞争激烈的市场中要想脱颖而出&#xff0c;关键在于深入的全球市场调研。本文将探讨如何通过全球市场调研找准热门产品&#xff0c;开创跨境电商的…