计算机网络:自顶向下方法(第七版)第五章 学习分享(二)

文章目录


前言

阅读本文前请注意最后编辑时间,文章内容可能与目前最新的技术发展情况相去甚远。欢迎各位评论与私信,指出错误或是进行交流等。

本文是关于《计算机网络:自顶向下方法(第七版)》的学习分享,内容书写顺序也是按照书中的顺序。本文并不会提及书中的所有内容,主要写重点的知识,以及自己感兴趣的内容。会对原文中的内容进行一定的精简,或者加上个人的理解。


网络层:控制平面

SDN 控制平面

SDN控制平面,控制分组在网络的SDN设备中转发的逻辑,以及这些设备和它们的服务的配置与管理。在此处,我们将网络的转发设备称之为"分组交换机",因为这些设备能够根据网络层源/目的地址、 链路层源/目的地址以及运输层、网络层和链路层中分组首部字段做出转发决定。SDN 体系结构具有4 个关键特征:

  • 基于流的转发。SON 控制的分组交换机的转发工作,能够基于运输层、 网络层或链路层首部中任意数量的首部字段值进行。之前我们看到了 OpenFlow 1. 0 允许基于11 个不同的首部字段值进行转发。这与基于路由器转发的传统方法形成了鲜明的对照,传统方法中 IP数据报的转发仅依据数据报的目的IP地址进行。分组转发规则被精确规定在交换机的流表中; SDN 控制平面的工作是计算、管理和安装所有网络分组交换机中的流表项。
  • 数据平面与控制平面分离。数据平面由分组交换机组成,该设备在它们的流表中执行"匹配加动作"的规则。 控制平面由服务器以及决定和管理交换机流表的软件组成。如下图所示
  • 网络控制功能:位于数据平面外部。SDN 控制平面由软件在服务器上执行,该服务器与分组交换机截然分开。控制平面自身由两个组件组成: 一个 SDN 控制器(或网络操作系统),以及若干网络控制应用程序。控制器维护网络状态信息(例如、远程链路、 交换机和主机的状态);为运行在控制平面中的网络控制应用程序提供这些信息;如下图所示
  • 可编程的网络。 通过运行在控制平面中的网络控制应用程序、该网络是可编程的。 这些应用程序代表了'SDN 控制平面的"智力",使用了由 SDN 控制器提供的 API 来定义和控制网络设备中的数据平面。 例如, 一个路由选择网络控制应用程序可以决定源和目的地之间的端到端路径(例如,通过使用由 SDN 控制器维护的节点状态和链路状态信息,执行Dijkstra 算法)。接入控制网络应用程序可以执行访问控制.即决定分组交换机阻挡哪个分组,还有一个应用程序可以使得服务器负载均衡的方式转发分组 。如下图所示

    SDN表显了一种意义重大的网络功能的"分类",即数据平面交换机、 SDN 控制器和网络控制应用程序是分离的实体,该实体可以由不同的厂商和组织机构所提供。 在SDN模式之前,交换机/路由器(连同其嵌入的控制平面软件和协议实现)是一个整体,它是垂直、综合的,并且由单一的厂商所销售。 在SDN 中的这种网络功能分类,可以与大型计算机到个人计算机的早期演化相比拟,前者的硬件、系统软件和应用程序是由单一厂商所提供的,而后者具有各自的硬件、操作系统和应用程序。 计算硬件、系统软件和应用程序的分类,无疑巳经在所有这三
    个领域的创新驱动下导致了丰富、开放的生态系统。 SDN 希望它也将导致如此丰富的创新。

SDN 控制平面: SDN 控制器和 SDN 网络控制应用程序

如上所述, SDN 控制平面大体划分为两个部分,即 SDN控制器和 SDN 网络控制应用程序。 下图提供了一个通用SDN 控制器的视图。 控制器的功能可大体组织为3 个层次。 我们以自底向上的方式考虑这些层次:

  • 通信层: SDN 控制器和受控网络设备之间的通信。 显然,如果 SDN 控制器要控制分组交换机、主机或其他设备的运行, 需要一个协议来传送控制器与这些设备之间的信息。 此外,设备必须能够向控制器传递本地观察到的事件(例如, 一个报文指示一条链路已经激活或停止, 一个设备刚刚加入了网络,或某设备巳经启动和运行)。 这些事件向 SDN 控制器提供该网络状态的最新视图。 这个协议构成了控制器体系结构的最底层,如图中所示的控制器和受控设备之间的通信跨越了一个接口,它现在被称为控制器的"南向"接口。 OpenFlow,是一种提供这种通信功能的特定协议(OpenFlow 在大多数 SDN 控制器中得到了实现,即使不是全部)
  • 网络范围状态管理层。 为了能让 SDN 控制平面做出最终控制决定(例如配置所有交换机的流表以取得所希望的端到端转发,实现负载均衡,或实现一种特定的防火墙能力),将要求控制器具有相关网络的主机、链路、交换机和其他SDN 控制设备的最新状态信息、交换机的流表包含计数器,其值也可以由网络控制应用程序很好地使用。 既然控制平面的终极目标是决定用于各种受控设备的流表,控制器也就可以维护这些表的拷贝。 这些信息都构成了由 SDN控制器维护的网络范围状态的例子。
  • 对于网络控制应用程序层的接口。 控制器通过它的"北向"接口与网络控制应用程序交互。 该API允许网络控制应用程序在状态管理层之间读/写网络状态和流表。当状态改变事件出现时,应用程序能够进行通告

此外,SDN 控制器被认为是"逻辑上集中"的,即该控制器可以被外部视为一个单一、 整体的服务(例如,从受SDN控制的设备和网络控制应用程序的角度看)。 然而,出于故障容忍、高可用性或性能等方面的考虑,在实践中这些服务和用于保持状态信息的数据库一般通过分布式服务器集合实现。 在服务器集合实现控制器功能时,必须考虑控制器的内部操作(例如维护事件的逻辑时间顺序、一致性、意见一致等)。

OpenFlow 协议

OpenFlow 协议运行在 SDN 控制器和 受SDN 控制的交换机或其他实现OpenFlow API 的设备之间 。 OpenFlow协议运行在TCP之上,使用6653 的默认端口号。

从控制器到受控交换机流动的重要报文有下列这些:

  • 配置。 该报文允许控制器查询并设置交换机的配置参数。
  • 修改状态。 该报文由控制器所使用,以增加/删除或修改交换机流表中的表项, 并且设置交换机端口特性。
  • 读状态。 该报文被控制器用于从交换机的流表和端口收集统计数据和计数器值。
  • 发送分组。 该报文被控制器用于在受控交换机从特定的端口发送出一个特定的报文。

从受控交换机到控制器流动的重要报文有下列这些:

  • 流删除。 该报文通知控制器已删除一个流表项,例如由于超时,或作为收到"修改状态"报文的结果。
  • 端口状态。 交换机用该报文向控制器通知端口状态的变化。
  • 分组入。 一个分组到达交换机端口,并且不能与任何流表项匹配,那么这个分组将被发送给控制器进行额外处理。 或者 匹配动作中写明发送给控制器,那么匹配的分组也被发送给控制器。

数据平面和控制平面交互的例子

为了具体地理解SDN 控制的交换机与SDN控制器之间的交互,我们考虑下图所示的例子,其中使用了 Dijkstra 算法来决定最短路径路由。 注意,与前面所学的每路由器控制场景有两个重要差异:1.Dijkstra 算法作为一个单独的程序来执行,位于分组交换机的外部。2.分组交换机向 SDN 控制器发送链路更新并且不互相发送。

在这个例子中,我们假设交换机s1 和 s2 之间的链路断开; 因此,最短路径选择受到影响。 假定控制平面只执行链路状态路由选择而不执行其他功能。

  1. 交换机s1发现了自己与s2之间的链路故障,使用 OpenFlow "端口状态"报文向 SDN 控制器通报该链路状态的更新。
  2. SDN 控制器接收指示链路状态更新的 OpenFlow 报文,并且通告链路状态管理器, 由管理器更新链路状态库。
    3 ) 实现 Dijkstra 链路状态路由选择的网络控制应用程序先前已进行了注册,当链路状态更新时将收到通告。
  3. 链路状态路由选择应用程序与链路状态管理器相互作用,以得到更新的链路状态;它也会参考状态管理层中的其他组件。 然后它计算新的最低开销路径。
    5 ) 链路状态路由选择应用与流表管理器交互,流表管理器决定更新的流表。
  4. 流表管理器则使用 OpenFlow协议更新位于受影响的交换机s1、 s2 和 s4 的流表项,此时s1将经s4转发分组给s2。

这个例子虽简单,但图示了 SDN控制平面如何提供控制平面服务(此处进行路由选择),而该服务以前是在每台路由器中实现的。 我们现在能够容易地体会到, 使用SDN的ISP 能够容易地将最低开销路径的路由选择转变为更加定制的路由选择方法。 因为控制器的确能够随心所欲地定制流表,因此能够实现它喜欢的任何形式的转发,即通过改变它的应用控制软件。 这种改变的便利性与传统的路由器控制平面的情况形成对照,传统的情况必须要改变所有路由器中的软件,而这些路由器可能是由多个不同厂商提供给ISP。

ICMP: 因特网控制报文协议

因特网控制报文协议 (ICMP), 被主机和路由器用来彼此沟通网络层的信息。 ICMP最典型的用途是差错报告。 例如,当运行一个HTTP会话时,你也许会遇到一些诸如 "目的网络不可达"之类的错误报文。 这种报文就来源于ICMP。 在某个位置, IP路由器不能找到一条通往HTTP请求中所指定的主机的路径、该路由器就会向你的主机生成并发出一个ICMP报文以指示该错误。

ICMP 通常被认为是IP 的一部分,但从体系结构上讲它位于 IP之上,因为ICMP报文是承载在IP 分组中的。 这就是说, ICMP 报文是作为 IP有效载荷承载的,就像TCP与UDP 报文段作为 IP有效载荷被承载那样。类似地,当一台主机收到一个上层协议为ICMP 的 IP 数据报时,它分解出该数据报的内容给ICMP, 就像分解出一个数据报的内容给TCP或UDP一样。

ICMP 报文有一个类型字段和一个编码字段,并且还包含引起该ICMP报文首次生成的IP 数据报的首部和前8 个字节(以便发送方能确定引发该差错的数据报)。 在下图中显示了所选的ICMP报文类型。 注意到ICMP报文并不仅是用于通知差错情况。

众所周知的 ping 程序发送一个 ICMP 类型 8 编码0 的报文到指定主机。 看到回显(echo) 请求,目的主机发回一个类型0 编码0 的 ICMP 回显回答。

Traceroute 程序允许我们跟踪从一台主机到世界上任意一台主机之间的路由。 有趣的是, Traceroute 是用 ICMP报文来实现的。为了判断源

和目的地之间所有路由器的名字和地址,源主机中的Traceroute 向目的地主机发送一系列普通的IP数据报。 这些数据报每个携带了一个具有不可达UDP端口号的UDP报文段。 第一个数据报的TTL为 1,第二个的TTL为2, 第三个的 TTL 为3,依次类推。 该源主机也为每个数据报启动定时器。 当第n个数据报到达第n台路由器时,第n 台路由器观察到这个数据报的TTL正好过期。 根据IP协议规则,路由器丢弃该数据报并发送一个ICMP告警报文给源主机(类型 11 编码0)。 该告警报文包含了路由器的名字和它的 IP 地址。 当该ICMP报文返回源主机时,源主机从定时器得到往返时延,从ICMP报文中得到第n台路由器的名字与IP地址。

Traceroute 源主机是怎样知道何时停止发送 UDP 报文段的呢?前面讲过源主机为它发送的每个报文段的TTL 字段加 1。 因此,这些数据报之一将最终沿着这条路到达目的主机。 因为该数据报包含了一个具有不可达端口号的 UDP报文段,该目的主机将向源发送一个端口不可达的ICMP报文(类型3 编码3)。 当源主机收到这个特别的 ICMP报文时,知道它不需要再发送另外的探测分组。

以这种方式,源主机知道了位于它与目的主机之间的路由器数量和标识,以及两台主机之间的往返时延。

网络管理和SNMP

我们都熟知网络是由许多复杂、交互的硬件和软件部件组成的,既包括构成网络的物理部件的链路、 交换机、路由器、主机和其他设备,也包括控制和协调这些设备的许多协议。 当一个机构将数以百计或数以千计的这种部件拼装在一起形成一个网络时,保持该网络"运行良好"对网络管理员无疑是一种挑战。 SDN 环境中逻辑上集中的控制器能够有助于这种过程。 但是网络管理的挑战在SDN 出现前很久就已如影相随了。网络管理员使用丰富的网络管理工具和方法来监视、 管理和控制该网络。 在本节中我们将学习这些工具和技术。

网络管理的定义:网络管理包括了硬件、 软件和人类元素的设置、 综合和协调,以监视、 测试、 轮询、配置、 分析、 评价和控制网络及网元资源,用合理的成本满足实时性、运营性能和服务质量的要求。

本节我们将仅涉及网络管理的入门知识,即网络管理员在执行其任务中所使用的体系结构、协议和信息库。 不涉及网络管理员的决策过程,其故障标识、异常检测等

网络管理框架

  • 管理服务器是一个应用程序,通常有人的参与,并运行在网络运营中心 (NOC) 的集中式网络管理工作站上。 管理服务器是执行网络管理活动的地方,它控制网络管理信息的收集、 处理、分析 或显示。 正是在这里,发起控制网络行为的动作,人类网络管理员与网络设备打交道。
  • 被管设备。是网络装备的一部分(包括它的软件),位于被管理的网络中。 被管设备可以是一台主机、路由器、交换机、中间盒、调制解调器、温度计或其他联网的设备。 在一个被管设备中,有几个所谓被管对象 。 这些被管对象是被管设备中硬件的实际部分(例如,一块网络接口卡,是一台主机或路由器的一个组件) 和用于这些硬件及软件组件的配置参数(例如,像OSPF 这样的 AS 内部路由选择协议)。
  • 一个被管设备中的每个被管对象的关联信息收集在管理信息库(MIB)。这些信息的值可供管理服务器所用(并且在许多场合下能够被设置)。一个MIB 对象可以是:一台主机接收到的UDP报文段的数量; 运行在一台 DNS服务器上的软件版本的描述性信息;
  • 在每个被管设备中还驻留有网络管理代理,它是运行在被管设备中的一个进程,该进程与管理服务器通信,在管理服务器的命令和控制下在被管设备中采取本地动作。
  • 网络管理框架的最后组件是网络管理协议 (network management protocol) 。 该协议运行在管理服务器和被管设备之间,允许管理服务器查询被管设备的状态,并经过其代理间接地在这些设备上采取行动。 代理能够使用网络管理协议向管理服务器通知异常事件 (如组件故障或超过了性能阙值)。 注意到网络管理协议自己不能管理网络。 恰恰相反,它为网络管理员提供了一种能力,使他们能够管理(监视、 测试、 轮询、 配置、 分析、评价和控制)网络。

简单网络管理协议

简单网络管理协议 (Simple Network Management Protocol) 版本 2 (SNMPv2)是一个应用层协议,用于在管理服务器和代理之间传递网络管理控制和信息报文。 SNMP 最常使用的是请求响应模式,其中 SNMP 管理服务器向SNMP 代理发送一个请求,代理接收到该请求后,执行某些动作,然后对该请求发送一个回答。 请求通常用于查询(检索)或修改(设置)与某被管设备关联的 MIB 对象值。SNMP第二个常被使用的是代理向管理服务器发送的一种非请求报文,该报文称为陷阱报文 (trap message) 。 陷阱报文用于通知管理服务器, 一个异常情况(例如一个链路接口启动或关闭)已经导致了 MIB对象值的改变。

下图显示了 SNMPv2 定义的 7 种类型的报文,这些报文一般称为协议数据单元(PDU) 。 并显示了这些 PDU 的格式。

  • GetRequest 、 GetNextRequest 和 GetBulkRequest PDU 都是管理服务器向代理发送的,以请求位于该代理所在的被管设备中的一个或多个MIB对象值。其值被请求的MIB对象的对象标识符定义在该PDU 的变量绑定部分。 GetRequest、 GetNextRequest 和GetBulkRequest 的差异在于它们的数据请求粒度。
  • 管理服务器使用 SetRequest PDU 来设置位于被管设备中的一个或多个 MIB 对象的值。 代理用带有 "noError'' 差错状态的 Response PDU 进行应答,以证实该值的确已被设置。

参考目录

书籍:《计算机网络:自顶向下方法(第七版)》

相关推荐
A_nanda2 小时前
一款前端PDF插件
前端·学习·pdf·vue
安逸sgr2 小时前
MCP 协议深度解析(八):Prompts 提示模板与 Sampling 采样机制!
人工智能·分布式·学习·语言模型·协议·mcp
科技林总2 小时前
【系统分析师】12.2 软件架构风格
学习
●VON2 小时前
旗舰基座大模型 MiMo-V2-Pro 初体验与实战指南
学习·小米·模型·von·mimo-v2-pro
QYQ_11272 小时前
嵌入式学习——ARM部分概念
arm开发·学习
小糖学代码2 小时前
计算机网络理论:4.网络层
计算机网络·智能路由器
苦瓜小生2 小时前
【黑马点评学习笔记 | 实战篇 】| 5-分布式锁+初步秒杀优化
笔记·分布式·学习
艾莉丝努力练剑2 小时前
System V IPC底层原理详解
linux·运维·服务器·网络·c++·人工智能·学习
PNP Robotics2 小时前
PNP机器人分享Frankal机器人等具身案例开发和实践
大数据·python·学习·机器人·开源