第五章、网络层——控制层面

第五章、网络层——控制层面

5.1、概述

在这里插入图片描述

我们前面学过,网络层分控制层面和数据层面,数据层面主要是负责转发,而控制层面负责路由选择。我们还知道了转发有基于目的地转发的场景和通用转发的场景,对应使用的是转发表和流表,它们是链接网络层的数据平面和控制平面的首要元素。我们还需要了解这些转发表和流表是如何计算、维护、安装的。

完成上述工作的两种可能方法就是:

  • 每路由控制。即每个路由器即负责数据平面也负责控制平面。每台路由器都使用了一种路由选择算法,包含转发和路由选择功能。有一个路由选择组件用于与其他路由器通信,计算转发表。OSPF和BGP协议都是基于每路由器的方法进行控制的
  • 逻辑集中式控制。也就是我们说的SDN网络,逻辑集中式控制器计算并分发转发表来提供给每路由器使用。他们使用了一种定义良好的协议与每台路由器的一个控制代理(CA)进行交互以配置和管理该路由器的转发表。CA一般具有最少的功能,其任务是与控制器通信并且按控制器命令行事。

CA既不能直接相互交互,也不能主动参与计算转发表。这是每路由控制和逻辑集中式控制的关键差异。

图解:

在这里插入图片描述

逻辑集中式控制意味着就像路由选择控制服务位于单一的集中服务点那样获取他们,即使该服务出于容错和性能扩展的原因,很可能经由多个服务器实现。SDN采用了逻辑集中式控制器的概念,实际中越来越多应用。如Goole的B4广域网、微软研究院的SWAN、中国电信、中国联通等。

5.2、路由选择算法

路由选择算法十分重要,是最重要的 10 个十分重要的网络概念之一。

什么是路由选择算法

决定从源到目的地通过网络的**“好的路径”**。通常一条好的路径指具有最低开销的路径。

一些概念

(1)图(graph)
我们可以用图来描述路由选择问题。
G = (N,E)
其中 N 指节点,E指边,G是他们的集合。选路算法的图论抽象:图中的节点是路由器,图中的边是物理链路

  • 链路代价: 时延,费用或拥塞等级

在这里插入图片描述

(2)开销
一条边还有一个值表示他的开销,c(x,y)= n;其中 x,y 表示两个节点,n 表示开销。

(3)路径
图 G = (N,E)中的一条路径(path)是一个节点序列(x1, x2, …, xp)开销总和是:c(x1,x2)+ c(x2,x3)+ … + c(xp-1,xp)
通常节点之间有许多路径,每条路径都有一个开销。

(4)最低开销路径/最短路径

  • 最低开销路径(least-cost path):这些路径中一条或多条组合的路径开销最低。
  • 最短路径(shortest path):若图中所有边具有相同的开销,则最低开销路径就是最短路径。

路由选择算法的分类

(1)按照分布来划分——最重要

  • 集中式路由选择算法(centralized routing algorithm)全局的。每个路由器具有所有路由器具有完全的拓扑、链路开销信息。具有全局状态信息的算法被称作链路状态算法(Link State,LS),因为该算法必须知道网络每条链路的开销;
  • 分散式路由选择算法(centralized routing algorithm)分散的。路由器仅有与其直接相连链路的开销信息,然后通过迭代、分布式的方式与邻节点交换信息,最后计算出最低开销路径。这种也被称为距离矢量算法(Distance-Vector,DV),之所以叫DV算法,是因为每个节点维护到网络中所有其他节点的开销(距离)估计的向量。

(2)按照动/静态来划分

  • 静态路由选择算法(static routing algorithm):路由随时间变化非常缓慢,通常是人工进行调整(如:人工编辑一条链路开销)。
  • 动态路由选择算法(dynamic routing algorithm):随着网络流量负载或拓扑发生变化而改变路由选择路径。

(3)按照负载来划分

  • 负载敏感算法(load-sensitive algorithm):链路开销会动态的变化反映出底层链路的当前拥塞水平。最早的网络ARPAnet路由选择算法就是负载敏感的,所以遇到了许多问题。因为某条链路的开销不明确地反映其当前(或最近)的拥塞水平。
  • 负载迟钝(load-insensitive):不能明确反应拥塞水平。目前使用:RIP、OSPF、BGP。

5.2.1、链路状态路由选择算法——LS算法(代表:DijKstra算法)

1、基本思想

(1)所有节点知道网络拓扑、链路费用

  • 经“链路状态广播”完成
  • 所有节点具有相同信息

(2)从一个节点(源)到所有其他节点计算最低费用路径

  • 给出对这些节点的转发表

(3)迭代: k次迭代后,得知到k个目的地的最低费用路径

2、算法

在这里插入图片描述

具体的算法实现请参考我的博客:https://blog.csdn.net/qq_44861675/article/details/107464239

直接看算法实现,挺容易理解的。

5.2.2、距离向量路由选择算法——DV算法

距离向量算法是一种迭代的、异步的和分布式算法,而LS算法是一种使用全局信息的算法。为什么是分布式的呢,因为每个节点都要从一个或者多个直接相连邻居接受某些信息,执行计算,然后将其计算结果分发给邻居。说它是迭代的,是这个过程一直持续到邻居之间无更多信息交换为止。说它是异步的,因为它不要求所欲的节点相互之间步伐一致地操作。该算法是自我终止,即没有计算应该停止的信号,它就停止了。

我们主要用的是Bellman-Ford 算法

(1)定义
在这里插入图片描述

(2)例子
在这里插入图片描述

(3)原理

在这里插入图片描述

(4)伪代码描述

在这里插入图片描述

(5)实际例子

在这里插入图片描述

(6)要考虑的问题——当算法进入静止状态,没有更新报文发送时,这个时候链路开销发送变化,会怎么样?

  • 链路故障——形成环路
    比如下图的例子
    某时刻 x<–>y 的开销由 4 变为 60,y 需要通知其他节点改变开销,但是 y 要首先改变与 x 的开销就要到达 x,通过算法 y 要经过 z 到达 x,但是 z 没有修改最短路径,告诉 y 到达 x 只需要 5,结果 y 到 z 然后返回 y,距离由 5 变为 6,但是还是小于 60,一直由 5 增长到大于 50 才结束。需要迭代 44 次。
    在这里插入图片描述

(2)毒性逆转

  • 办法:定义 dz(x) = ∞,z将善意的谎言和y说,y 开始直接会选择 60 到 x,更新后修改完善转发表。
  • 只能解决两个节点之间的问题,一旦节点多了同样不能解决问题。因为毒性逆转技术无法检测到涉及多个节点的这种无穷计数情况。

5.2.3、LS和DV算法的比较

DV和LS算法采用了互补的方法解决路由选择算法的问题。

在这里插入图片描述

下面我们来对比两种算法。记住n是节点(路由器)的集合,E是边(链路)的集合。

1、报文复杂性

(1)LS:对n个节点,E条链路, 发送O(nE) 报文
(2)DV:仅在邻居之间交换

2、收敛速度

(1)LS:O(n2) 算法要求 O(nE)报文

  • 可能具有振荡

(2)DV:收敛时间变化

  • 可能有选路环路
  • 计数到无穷问题
3、健壮性: 如果路由器异常,将发生什么现象?

(1)LS

  • 节点可能通告不正确的链路费用
  • 每个节点仅计算它自己的表
  • 在LS算法下,路由计算某种程度上是分离的,提供了一定程度的健壮性。

(2)DV

  • DV节点通告不正确的路径费用
  • 每个节点表能由其他人使用
  • 差错通过网络传播

小结:两个算法没有一个是明显赢家,它们的确都在因特网中得到了应用。

5.3、因特网中自治系统内部的路由选择:OSPF——开放最短路径优先

我们目前将网络的路由选择算法简答了解了一遍,但是从所有路由器执行相同的路由选择算法以计算穿越整个网络的路由选择路径的意义上来说,一台路由器很难同另外一台路由器区别开啦。我们需要考虑:

  • 规模。路由器数目越来越大,路由信息的通信、计算、存储开销将变得高的不可实现。路由选择算法如DV算法难以收敛。
  • 管理自治。因为英特网是ISP的网络,其中的每个ISP都有它自己的路由器网络。ISP通常希望按自己的意愿来运行路由器,或对外部隐藏其网络的内部组织面貌。所以,理想情况下一个组织应当能够按照自己的意愿来运行和管理网络,还要能将其网络与其他外部网络连接起来。

这两个问题可以通过路由器组织进自治系统(Autonomous System,AS)来解决,其中每个AS由一组通常处于相同管理控制下的路由器组成。通常一个ISP的路由器以及互联他们的链路构成一个AS。某些ISP将他们的网络划为多个AS。特别是一些一级ISP,整个网络使用一个超大的AS,其他的ISP将他们的ISP拆分为数十个互联的AS。

一个自治系统由其全局唯一的AS号(ASN)所标识。AS号同IP地址那样,由ICANN区域注册机构所分配。

在相同的AS中的路由器都运行相同的路由选择算法并彼此有对方的信息。在一个自治系统内运行的路由选择算法叫做自治系统内部路由选择协议(intra-autonomous system routing protocol)

5.3.1、开放最短优先(OSPF)

我们这里只作简单的了解。

1、什么是OSPF

OSPF是一种链路状态协议,使用洪泛链路状态信息和Dijkstra最低开销路径算法,实现因特网的AS内部路由选择。O指Open,指路由选择协议规范公众可用(与之相反的是Ciso的EIGRP协议)。OSPF分为OSPFv2和OSPFv3两个版本:OSPFv2定义于RFC 2328(1998),支持IPv4网络;而OSPFv3定义于RFC 5340(2008),支持IPv6网络。

2、OSPF的某些细节

使用OSPF,一台路由器构建了衣服关于整个自治系统的完整拓扑图(图)。每台路由器在本地运行Dijkstra的最短路径算法,确定一个以自身为根节点到所有子网的最短路径树。各条链路开销由网络管理员配置

  • 管理员可能将链路开销置1,实现最少跳数路由选择;将链路权值按与链路容量反比设置,从而不鼓励流量使用低带宽链路。

OSPF不强制使用设置链路权值策略,而是提供一种机制(协议),为给定链路权值集合确定最低开销路径的路由选择。

使用OSPF时路由器向自治系统内所有的路由器广播路由选择信息,而不仅仅是其相邻的路由器。每当某个链路状态发送变化,路由器就会广播链路状态信息。即使链路状态未变化,也会周期性地广播链路状态(也许每30min一次)。

RFC2328这样说明:链路状态通告的这种周期性更新增加了链路状态算法的健壮性。OSPF通告包含在OSPF报文中,该OSPF报文直接由IP承载,对OSPF其上层协议的值为89。

3、OSPF的优点

  • 安全
  • 多条相同开销的路径式,可用选择多路径分担流量。
  • 对单播与多播路由选择的综合支持。多播OSPF(MOSPF)提供了OSPF的简单扩展,以便提供多播路由选择。
  • 支持在单个AS中的层次结构。一个OSPF自治系统能够层次化地配置多个区域,每个区域运行自己的OSPF链路状态路由算法,区域内的每台路由器都向该区域内的所有其他路由器广播其链路状态。在每个区域内,一台或多台区域边界路由器负责为流向该区域以外的分组提供路由选择。最后,在AS中只有一个OSPF区域配置为主干区域。主干区域的主要作用式为该AS中的其他区域之间的流量提供路由选择。该主干总是包含本AS中的所有区域边界路由器,并且可能包含一些非边界路由器。在AS区域间的路由选择要求分组先路由到一个区域边界路由器(区域内路由选择),然后通过主干路由到位于目的区域的区域边界路由器,进而路由到最终目的地。

详细介绍参考维基百科OSPF:

在这里插入图片描述

5.4、自治系统之间的路由选择:BGP——边界网关协议

OSPF是一个AS内部的路由选择协议,当相同的AS内部的源和目的之间进行分组选路时,可由该路由选择协议决定。但是如果是不同的AS之间路由时,我们需要一个自治系统之间的路由选择协议(inter-autonomous system routing protocol)。因为AS间路由选择协议涉及多个AS之间的协调,所以AS通信必须运行相同的AS间路由选择协议。因特网中,所有AS运行相同的AS间路由选择协议——边界网关协议(Broder Gateway Protocol,BGP)。

BGP是一种分布式和异步的协议,与我们说的距离向量路由选择协议(DV)一样。我们需要熟悉其基础结构和操作。

5.4.1、BGP的作用

在这里插入图片描述

5.4.2、通过BGP的路由信息

我们先来确定以下概念:

  • BGP中,每对路由器使用端口179的半永久TCP连接来交换路由选择信息,每条直接连接以及所有通过该连接发送的BGP报文称为BGP连接(BGP connection)。

  • eBGP连接。跨越两个AS的BGP连接叫做外部BGP连接。

  • iBGP连接。相同AS中的两台路由器之间的BGP会话叫做内部BGP连接。

图解:

在这里插入图片描述

下面我们来看一个例子来理解通过BGP的路由信息:

在这里插入图片描述

5.4.3、确定最好的路由

我们从上面的图中可知道,从一个给定的路由到一个目的子网可能有多条路径。事实上,因特网中的路由器常常接收到很多不同给可能路径的可达性信息。一台路由器如何在这些路径之间进行选择?(包括相应的配置它的转发表)

处理这个关键性问题,我们需要知道几个BGP术语:

  • 路由(route)——当路由器通过BGP连接告知前缀时,它在前缀中包括一些BGP属性(BGP attribute),前缀及其属性称为路由。一个路由BGP有3个组件:NEXT-HOP,AS-PATH,目的前缀;
  • 两个比较重要的属性是AS-PATH和NEXT-HOP。AS-PATH属性包含了通告已经通过的AS列表,如我们前面的例子所见。为了生成AS-PATH的值,当一个前缀经过某个AS时,该AS将其ASN加入AS-PATH中的现有列表。BGP还使用AS-PATH来检测和防止通过环路;特别时如果一个路由器在路径列表里面看到包含自己的AS,它将拒绝该通告。NEXT-HOP属性具有敏感而重要的作用,是AS-PATH起始路由器接口的IP地址
  • 目的前缀

(1)最简单的路由选择算法:热土豆路由选择(hot potato routing)

在这里插入图片描述

(2)路由器选择算法——结合热土豆路由选择,利用规则排除某些路径

在这里插入图片描述

5.4.4、IP任播

摘抄来源维基百科:

任播(英语:anycast)是一种网络寻址和路由的策略,使得资料可以根据路由拓扑来决定送到“最近”或“最好”的目的地。

任播是与单播(unicast)、广播(broadcast)和多播(multicast)不同的方式。

  • 在单播中,在网络地址和网络节点之间存在一一对应的关系。
  • 在广播和多播中,在网络地址和网络节点之间存在一对多的关系:每一个发送地址对应一群接收可以复制信息的节点。
  • 在任播中,在网络地址和网络节点之间存在一对多的关系:每一个地址对应一群接收节点,但在任何给定时间,只有其中之一可以接收到发送端来的信息。

互联网中,通常使用边界网关协议(BGP)来实现任播。

在过去,任播适合无连线协议通常创建在用户数据报协议(UDP)多于连线导向协议(如会记录状态的传输控制协议(TCP))。然而,也有很多情况是传输控制协议(TCP)使用任播的,包含运载网络如Prolexic使用传输控制协议任播。

因此,任播通常用于提供高可靠性和负载平衡。

任播实现的安全性

任播允许任何一个被中继路由器接受其路由信息的运作者蓄意挟持任播地址。尽管第一眼看到会认为这不安全,但这与原来IP数据包的路由方式无异,其安全性没有任何不同。对传统IP路由而言,谨慎地过滤传递路由通告以对付中间人攻击黑洞攻击是很重要的。

任播的可靠性

任播是正常高可靠性,它可以提供自动故障撤销。任播应用典型是外部"心跳"监控。

拒绝服务攻击和任播

在网络上,任播可以用来帮助抵御分布式拒绝服务攻击(DDoS)并减少它们的效率。既然流量是导到最近的而非攻击者程序能控制的节点,洪水攻击流量将被分散到最近的节点。这通常意味着并非所有的节点被影响。这通常是一个布署任播地址的重要理由。

这种分散攻击技巧是否有效却是充满疑问的,因为单播地址是很容易得到的,至少在IPv6中如此。RFC 2373定义了"IPv6数据包的来源地址不可以是任播地址"。所以,ping一个"任播"地址的话,既然其回传必须从一个单播地址来的,则会传回最近的单播地址。于是,只要绕过任播地址,攻击者可以攻击任何地方的单一节点。同样的方法适用于相同,但非全部的IPv4任播地址。[1]

书本图解:
在这里插入图片描述

5.4.5、路由选择策略之ISP之间如何协商路由通告

在这里插入图片描述

5.5、SDN控制平面

我们只需用简单了解其细节和过程即可。我们要了解控制分组在网络的SDN使能设备中转发的网络逻辑范围,以及这些设备和他们的服务的配置与管理。

SDN体系结构的特征

  • 基于流的转发。SDN控制的交换机的分组转发工作,能够基于运输层、网络层或链路层首部中任意数量的首部字段值进行。SDN控制平面的工作是计算、管理和按照所有网络交换机的流表项。

  • 数据平面和控制平面分离。

在这里插入图片描述

  • 网络控制功能:位于数据平面交换机外部。控制平面由两个组件组成,1是SDN控制器,2是若干网络控制应用程序。控制器维护准确的网络状态下信息;为运行在控制平面的网络控制程序提供该信息;这些应用程序能够监视、编程和控制下面的网络设备。控制器仅仅是逻辑上的集中,通常是在几台服务器上实现的。这些服务器提供协调的、可扩展的性能和高可用性。

  • 可编程的网络。通过运行在控制平面中的网络控制程序,该网络是可编程的。使用SDN控制器提供的API来定义和控制网络设备的数据平面。

SDN控制平面:SDN控制器和SDN网路控制应用程序的结构

在这里插入图片描述

OpenFlow协议

SDN控制器分为三层,通信层负责SDN控制器和受控网络设备之间的通信,这个通信需要某种特定的协议,一般是OpenFlow。

在这里插入图片描述

数据平面和控制平面交互

我们来通过一个例子理解SDN控制的交换机与SDN控制器之间如何交互。在这里插入图片描述

SDN的过去和未来

在这里插入图片描述

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

什么是ICMP

在这里插入图片描述

ICMP的作用

  • 差错报告,当IP路由器发现某个主机路径不可达时,该路由器就会向你的主机发送一个ICMP报文指示该错误。
  • 源抑制报文,实践中很少使用。最初的目的是执行拥塞控制,拥塞的路由器发送一个ICMP源抑制报文告知该主机使其减少发送速率。但是TCP因为具有自己的拥塞控制机制,则不需要网络层的反馈信息了。

ICMP的实际应用

  • Traceroute程序跟踪路由,traceroute通过给目的主机发送一系列不可到达的UDP报文(封装在IP报文中),他们的TTL不同,对应的不可达UDP达到路由器,路由器根据TTL的值返回对应的ICMP警告报文给源主机(类型11编号0)这种报文包含连路由器的名字和IP地址从而实现追踪(源主机设置了定时器,从定时器中获取往返时延。)至于什么时候停止发送UDP报文段,达到目的主机的不可达UDP指示,该主机将发送一个端口不可达的ICMP报文(类型3编号0),源主机收到则会停止发送。
  • 众所周知的ping程序,发送一个ICMP类型8编号0的报文到指定主机,看到回显请求(echo),目的主机发送一个类型0编号0的ICMP回显回答。

ICMP报文类型

在这里插入图片描述

5.7、网络管理和SNMP

当构成网络的众多负责、交互的硬件和软件拼接在一起,如网络的物理部件链路、交换机、路由器、主机和其他设备、协议等,数以百计、千计。那么保持网络的“良好运行”对网络管理员无疑是一种挑战,因此我们必须有比较好的网络管理工具和方法,来监视、管理、控制网络。

什么是网络管理

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

5.7.1、网络管理框架

在这里插入图片描述

5.7.2、简单网络管理协议

什么是简单网络管理协议

在这里插入图片描述

简单网络管理协议的报文类型

在这里插入图片描述

简单网络管理协议的发展

在这里插入图片描述

成本满足实时性、运营性能和服务质量的要求。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨夜※繁华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值