计算机网络自顶向下方法 | 第5章 网络层:控制平面

197 阅读11分钟

“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情

第5章 网络层:控制平面

5.1 概述

  • 传统方式:每路由器控制
  • SDN方式:逻辑集中式控制

5.2 路由选择算法

路由:按照某种指标(传输延迟,所经过的站点数目等)找到一条从源节点到目标节点的较好路径。

路由选择算法(routing algorithm):网络层软件的一部分,完成路由功能

路由选择算法的分类方式1:

  • 集中式路由选择算法(centralized routing algorithm)
  • 分散式路由选择算法(decentralized routing algorithm)

路由选择算法的分类方式2:

  • 静态路由选择算法(static routing algorithm)
  • 动态路由选择算法(dynamic routing algorithm)

路由选择算法的分类方式3:

  • 负荷敏感算法(load-sensitive algorithm)
  • 负荷迟钝算法(load-insensitive algorithm)

5.2.1 链路状态路由选择算法

即LS算法:一种使用全局信息的算法,也称Dijkstra算法,该算法以其发明者命名。

image-20220607154235180.png

5.2.2 距离向量路由选择算法

即DV算法(Distance-Vector):一种迭代的、异步的和分布式的算法

一个异步的、迭代的、自我终止的、分布式的算法比一个集中式的算法要有趣的多!

image-20220607152920069.png

image-20220607154322389.png

5.3 因特网中自治系统内部的路由选择:RIP和OSPF

路由选择协议

路由选择协议都是自适应的,能随着网络通信量和拓扑结构的变化而自适应地进行调整。

互联网可以划分为许多较小的自治系统 AS(Autonomous System),一个 AS 可以使用一种和别的 AS 不同的路由选择协议。

可以把路由选择协议划分为两大类:

  • 自治系统内部的路由选择:RIP 和 OSPF
  • 自治系统间的路由选择:BGP

image-20220609212805544.png

5.3.1 内部网关协议 RIP

RIP是基于UDP,没有确认机制的,所以依靠定时器。

RIP 是一种基于距离向量的路由选择协议。距离是指跳数,直接相连的路由器跳数为 1。跳数最多为 15,超过15 表示不可达。

RIP 按固定的时间间隔仅和相邻路由器交换自己的路由表,经过若干次交换之后,所有路由器最终会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址。

距离向量算法:

  • 对地址为 X 的相邻路由器发来的 RIP 报文,先修改报文中的所有项目,把下一跳字段中的地址改为 X,并把所有的距离字段加 1;

  • 对修改后的 RIP 报文中的每一个项目,进行以下步骤:

  • 若原来的路由表中没有目的网络 N,则把该项目添加到路由表中;

  • 否则:若下一跳路由器地址是 X,则把收到的项目替换原来路由表中的项目;

    否则:若收到的项目中的距离 d 小于路由表中的距离,则进行更新(例如原始路由表项为 Net2, 5, P,新表项为 Net2, 4, X,则更新);

    否则什么也不做。

  • 若 3 分钟还没有收到相邻路由器的更新路由表,则把该相邻路由器标为不可达,即把距离置为 16。

RIP 协议实现简单,开销小。但是 RIP 能使用的最大距离为 15,限制了网络的规模并且当网络出现故障时,要经过比较长的时间才能将此消息传送到所有路由器

5.3.2 内部网关协议 OSPF

开放最短路径优先 OSPF,是为了克服 RIP 的缺点而开发出来的。

与RIP和BGP不同,OSPF协议不使用TCP或者UDP协议而是承载在IP协议之上,IP协议号为89,工作在OSI模型的传输层。

开放表示 OSPF 不受某一家厂商控制,而是公开发表的;最短路径优先表示使用了 Dijkstra 提出的最短路径算法 SPF(Short Path First)。

工作方式:

  • 向本自治系统中的所有路由器发送信息,这种方法是洪泛法
  • 发送的信息就是与相邻路由器的链路状态,链路状态包括与哪些路由器相连以及链路的度量,度量用费用、距离、时延、带宽等来表示
  • 只有当链路状态发生变化时,路由器才会发送信息

OSPF 具有以下特点:

  • 安全:能够鉴别OSPF路由器之间的交换(如链路状态更新)
  • 多条相同开销的路径:这时OSPF允许使用多条路径,无需仅选择单一路径来承载所有流量
  • 对单播与多播路由选择的综合支持
  • 支持在单个AS中的层次结构:骨干路由器;边界路由器;区域边界路由器

所有路由器都具有全网的拓扑结构图,并且是一致的。相比于 RIP,OSPF 的更新过程收敛的很快。

5.4 ISP之间的路由选择:BGP

概述:

自治系统间的路由选择协议(inter- autonomous system routing protocol):边界网关协议(Broder Gateway Protocol, BGP)。它是应用层协议,其传输层使用TCP,默认端口号是179。

AS 之间的路由选择很困难,主要是由于:

  • 互联网规模很大;
  • 各个 AS 内部使用不同的路由选择协议,无法准确定义路径的度量;
  • AS 之间的路由选择必须考虑有关的策略,比如有些 AS 不愿意让其它 AS 经过。

BGP 只能寻找一条比较好的路由,而不是最佳路由。

每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。

img

5.4.1 BGP的作用

在BGP中,分组不是路由到一个特定的目的地址,相反是路由到 CIDR 化的前缀,其中每一个前缀表示一个子网或一个子网的集合。因此,一台路由器的转发表将具有形式为 (x, I) 的表项,其中 x 是一个前缀 (例如138.16.68/22) , I 是该路由器的接口之一的接口号。

作为一种AS间的路由选择协议,BGP为每台路由器提供了一种完成以下任务的手段:

  1. 从邻居AS获得前缀的可达性信息。
  2. 确定到该前缀的“最好的”路由。

5.4.2 通告BGP路由信息

外部BGP(eBGP)连接:跨越两个AS的BGP连接

内部BGP(iBGP)连接:在相同AS中的两台路由器间的BGP会话

5.4.3 确定最好的路由

BGP属性(BGP attribute):AS-PATH、NEXT-HOP 等

  • AS-PATH:包含了已经通过的AS的列表
  • NEXT-HOP:是AS-PATH起始的路由器接口的IP地址
  1. 热土豆路由选择:分组被类比为烫手的热土豆,因为它烫手,你要尽可能快地将它传给另一个AS。热土豆路由选择因而是自私的算法,即它试图减小在它自己AS中的开销,而忽略在其AS之外的端到端开销的其他部分。

  2. 路由器选择算法:(BGP实际工作中采用的算法)

    • 路由被指派一个本地偏好 (local preference) 值作为其属性之一(除了 AS-PATH 和 NEXT-HOP 以外)
    • 从余下的路由中(本地偏好值相同)选择具有最短AS-PATH的路由
    • 从余下的路由中(本地偏好值和AS-PATH相同)使用热土豆路由选择

5.4.4 IP任播

IP任播被DNS系统广泛用于将DNS请求指向最近的根DNS服务器。

5.4.5 路由选择策略

商业运行的ISP们都遵从的一个经验法则是:任何穿越某ISP主干网的流量必须是其源或目的(或两者)位于该ISP的某个客户网络中。(不然的话这些流量将会免费搭车通过该ISP的网络)

各个对等协议通常都是ISP双方进行协商,而且经常是对外保密的。

5.4.6 拼装在一起:在因特网中呈现

IP地址、DNS和BGP结合到一起。

5.5 SDN控制平面

SDN体系结构具有4个关键特征:

  • 基于流的转发
  • 数据平面和控制平面分离
  • 网络控制功能:位于数据平面交换机外部
  • 可编程的网络

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

image-20220609164630007.png

image-20220609164645486.png

image-20220609164709291.png

5.5.2 OpenFlow协议

OpenFlow协议运行在TCP之上,使用6653的默认端口号。

从控制器到受控交换机的重要报文:

  • 配置
  • 修改状态
  • 读状态
  • 发送分组

从受控交换机到控制器的重要报文:

  • 流删除
  • 端口状态
  • 分组进入

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

image-20220609164845744.png

image-20220609164941652.png

5.5.4 SDN的过去与未来

image-20220609165150984.png

5.6 ICMP:因特网控制报文协议

ICMP (Internet Control Message Protocol) 是为了更有效地转发 IP 数据报和提高交付成功的机会。它封装在 IP 数据报中,但是不属于高层协议。

img

ICMP 报文分为差错报告报文和询问报文。

img

ICMP差错报告报文:

  • 终点不可达:路由器或主机不能交付数据报时向源点发送终点不可达。
  • 时间超过:数据报的生存时间是0或者在规定时间内没有收到全部报文时,丢弃并向源点发送时间超过报文。
  • 参数问题:当收到的数据报首部字段不正确时,丢弃,并向源主机发送参数问题报文。
  • 改变路由(重定向):路由器将改变路由发送主机,告诉主机下次应将数据报发送的路由器。

ICMP询问报文:

  • 回送请求和回答:回送请求报文由主机向目的主机发出询问,收到的目的主机向源主机发送会送回答报文。用来测试目的地是否可达。
  • 时间戳请求和回答:请求某主机回答当前的日期和时间。

5.6.1 Ping

Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。

Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。

5.6.2 Traceroute

Traceroute 是 ICMP 的另一个应用,用来跟踪一个分组从源点到终点的路径。

Traceroute 发送的 IP 数据报封装的是无法交付的 UDP 用户数据报,并由目的主机发送终点不可达差错报告报文。

  • 源主机向目的主机发送一连串的 IP 数据报。第一个数据报 P1 的生存时间 TTL 设置为 1,当 P1 到达路径上的第一个路由器 R1 时,R1 收下它并把 TTL 减 1,此时 TTL 等于 0,R1 就把 P1 丢弃,并向源主机发送一个 ICMP 时间超过差错报告报文;
  • 源主机接着发送第二个数据报 P2,并把 TTL 设置为 2。P2 先到达 R1,R1 收下后把 TTL 减 1 再转发给 R2,R2 收下后也把 TTL 减 1,由于此时 TTL 等于 0,R2 就丢弃 P2,并向源主机发送一个 ICMP 时间超过差错报文。
  • 不断执行这样的步骤,直到最后一个数据报刚刚到达目的主机,主机不转发数据报,也不把 TTL 值减 1。但是因为数据报封装的是无法交付的 UDP,因此目的主机要向源主机发送 ICMP 终点不可达差错报告报文。
  • 之后源主机知道了到达目的主机所经过的路由器 IP 地址以及到达每个路由器的往返时间。

5.7 网络管理和SNMP

自治系统(autonomous systems, aka “network”): 1000多个相互的软件和硬件部件。如何去管理?

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

image-20220609165712953.png

5.7.1 网路管理框架

网络管理的关键组件:

  • 管理服务器 (managing server)
  • 被管设备 (managed device)
  • 管理信息库 (Management Information Base, MIB)
  • 网络管理代理 (network management agent)
  • 网络管理协议 (network management protocol)

image-20220609170347797.png

5.7.2 简单网络管理协议

简单网络管理协议 (Simple Network Management Protocol) 版本2 (SNMPv2) 是一个应用层协议,用于在管理服务器和代表管理服务器执行的代理之间传递网络管理控制和信息报文。

image-20220609170812860.png

image-20220609170829080.png