《计算机网络 自顶向下方法》整理(五)网络层:控制平面

一、概述

转发表和流表的计算、维护、安装工作有两种方法:

  • 每台路由器控制:在每台路由器中允许一种路由选择算法,每台路由器中都包含转发和路由选择功能;
  • 逻辑集中式控制:逻辑集中式控制器计算并分发转发表以供每台路由器使用;

二、路由选择算法

①路由选择算法的目标是找出从源到目的地间的最低开销路径。路由选择算法的一种分类方式是根据该算法是集中式还是分散式来划分的:

  • 集中式路由选择算法:该算法以所有节点之间的连通性及链路的开销作为输入,即在开始计算前必须知道链路的全局信息,这种算法被称作链路状态算法
  • 分散式路由选择算法:路由器以迭代、分布式的方式计算出最低开销路径,每个节点仅有与其直接相连链路的信息,通过迭代计算过程及相邻节点的信息交换,一个节点逐渐计算出到达目的节点或一组目的节点的最低开销路径,后面我们将学习距离向量算法

②路由选择算法的第二种广义分类方式是根据算法是静态的还是动态的进行分类:

  • 静态路由选择算法:路由随时间变化非常缓慢,通常是人工进行调整;
  • 动态路由选择算法:随着网络流量负载或链路开销的变化而运行,易于对网路变化做出反应,但更易收到路由选择循环或路由振荡之类问题的影响;

③路由选择算法的第三种分类方式根据它是负载敏感的还是负载迟钝的做出划分:

  • 负载敏感算法:链路开销会动态的变化以反映出底层链路的当前拥塞水平;
  • 负载迟钝算法:链路的开销不明确的反映当前的拥塞水平;

1、链路状态路由选择算法

在实践中通过让每个节点向网络中的所有其他节点广播链路状态分组来完成,每个链路状态分组包含它所连接的链路的标识和开销,通常由链路状态广播算法完成。链路状态选择算法叫做Dijkstra算法,其性质是经算法的第k次迭代后,可知道到k个目的节点的最低开销路径。在到达所有目的节点的最低开销路径中,这k条路径具有k个最低开销。

在第一次迭代中,我们需要搜索n个节点;在第二次迭代中,我们需要搜索n-1个节点;以此类推,在所有迭代中需要搜索的节点总数为n(n+1)/2,其复杂性最低为O(n^2)。另外考虑以下可能存在的问题,链路开销可能是非对等的,即(u,v)和(v,u)是不等的;此外拥塞敏感的路由选择可能会出现选择的振荡,一种常用的方法是确保并非所有的路由器都同时运行LS算法。但实际中英特网的路由器能在它们之间进行自动同步,导致执行算法执行时机变为同步,一种避免办法是让路由器发送链路通告的事件随机变化。

2、距离向量路由选择算法

距离向量(DV)算法是一种迭代的、异步的和分布式的算法,每个节点都要从一个或多个直接相邻邻居接受某些信息,执行计算然后将其计算结果分发给邻居。迭代是因为需要一直持续到邻居之间无更多信息要交换为止,异步是因为不要求节点相互之间步伐一致地操作。其主要步骤为:从邻居接受更新距离向量、重新计算路由选择表项和通知邻居到目的地的最低开销路径的开销已经变化的过程继续下去,直到无更新报文发送为止,这时算法将进入静止状态,直到一条链路开销发生改变。

2.1、距离向量算法:链路开销改变与链路故障

在某些时刻,我们会遇到路由选择环路的问题,该选择过程会不断迭代直到判断开销过大不符合条件才会跳出,这类问题被称为无穷计数问题;

2.2、距离向量算法:增加毒性逆转

上述特定循环的场景可以通过使用一种毒性逆转的技术而加以避免。其思想为:如果z通过y路由选择到目的地x,则z将通告y,它到x的距离是无穷大的,只要z经y路由选择到x,z就持续地向y讲述这个谎言,最终y将永远不会试图经由z路由选择到x。

毒性逆转并没有解决一般的无穷计数问题,涉及3个或更多节点的环路将无法使用毒性逆转技术检测到,因为不只是两个直接相邻的邻居节点。

2.3、LS与DV路由选择算法的比较

N为路由器节点的集合,E为链路的集合:

  • 报文复杂性:LS算法要求无论何时一条链路的开销改变,必须向所有节点发送新的链路开销,这要求发送O(|N||E|)个报文;DV算法仅当在新的链路开销导致与该链路相连节点的最低开销路径发生改变时,才传播已经改变的链路开销;
  • 收敛速度:LS算法的实现是一个要求O(|N||E|)个报文的O(|N|^2)算法;DV算法收敛较慢,且在收敛时会遇到路由选择环路,还会遇到无穷计数的问题;
  • 健壮性:如果一台路由器发生故障,作为LS广播的一部分,一个节点可能损坏或丢第它收到的任何LS广播分组,但一个LS节点仅计算自己的转发表,其他节点自行计算,因而某种程度上是分离的,提供了一定程度的健壮性;在DV算法中,一个不正确的节点计算值会扩散到整个网络。

三、因特网中自治系统内部的路由选择:OSPF

当路由器的数量变得庞大时,通信、计算和存储路由信息所涉及的开销就变得非常大。显然必须采取措施来降低像Internet这样大的网络中路由计算的复杂性。互联网是由ISP组成的网络,每个ISP由自己的路由器网络组成。一个组织应该能够按照自己的意愿操作和管理其网络,同时仍然能够将其网络连接到其他外部网络。上述两个问题可以通过将路由器组织进自制系统(AS)来解决,每个AS由一组通常处在相同管理控制下的路由器组成。在相同AS中的路由器都运行相同的路由器选择算法并且有彼此的信息,在一个自治系统内运行的路由选择算法叫做自治系统内部路由选择协议

开放最短路优先(OSPF)路由选择及其关系密切的协议IS-IS都被广泛应用于因特网的AS内部路由选择。OSPF使用洪泛链路状态信息和Dijkstra最低开销路径算法。 一台路由器构建了整个自治系统的完整拓扑图。每个路由器在本地运行Dijkstra的最短路径算法 ,然后以自己为根节点,确定通往所有子网的最短路径树。各条路径的开销由网络管理员配置。OSPF的优点如下:

  • 安全:OSPF路由器之间的交换可以进行认证,只有受信任的路由器才能参与AS内的OSPF协议,从而防止恶意入侵者;
  • 多条相同路径的开销:当到达某目的地的多条路径具有相同的开销时,OSPF允许使用多条路径;
  • 对单播与多播路由选择的综合支持:多播OSPF(MOSPF)提供对OSPF的简单扩展,以便提供多播路由选择;
  • 支持在单个AS中的层次结构:一个OSPF自治系统能够层次化地配置多个区域,每个区域都允许自己的OSPF链路状态路由选择算法;

四、ISP之间的路由选择:BGP

当分组跨域多个AS进行路由时,我们需要一个自治系统间路由选择协议。在因特网中,所有AS运行相同的AS间路由选择协议,称为边界网关协议(BGP)。BGP是一种分布式和异步的协议,该协议将因特网中以千计的ISP粘合起来。

1、BGP的作用

在BGP中,数据包不是被路由到一个特定的目的地址,而是被路由到CIDR化的前缀,每个前缀代表一个子网或子网的集合。路由器的转发表将有形式为(x, I)的表项,其中x是一个前缀(如138.16.68/22),I是路由器的一个接口的接口号。作为一种AS间的路由选择协议,BGP为每台路由器提供了一种完成以下任务的手段:①从邻居AS获得前缀的可达性信息;②确定到该前缀的“最好的”路由

2、通告BGP路由信息

对于每个AS,每台路由器要么是一台网关路由器,要么是一台内部路由器。网关路由器是一台位于AS边缘的路由器,它直接连接到在其他AS中的一台或多台路由器,内部路由器仅连接在它自己AS中的主机和路由器。

在BGP中,每台路由器通过使用179端口的半永久TCP连接交换路由选择信息,每条直接连接以及所有通过该连接发送的BGP报文,称为BGP连接。跨域两个AS的BGP称为外部BGP连接,而在相同AS中的两台路由器之间的BGP会话被称为内部BGP连接。为了传播可达性信息,会使用多条BGP连接。

3、确定最好的理由

当一个路由器在BGP连接通告前缀时,它在前缀中包含了一些BGP属性,其中比较重要的两个属性是AS-PATH和NEXT-HOP。在BGP中前缀及其属性称为路由AS-PATH属性包含了通告已经通过的AS列表。在AS间和AS内部路由选择协议之间提供关键链路方面,NEXT-PATH属性具有敏感而重要的作用。NEXT-HOP是AS-PATH起始的路由器接口的IP地址。下面讨论BGP路由选择算法。

3.1、热土豆路由选择

其思想为:对于路由器x,尽可能快的将分组送出其AS(用可能的最低开销),而不担心其AS外部到目的地的余下部分的开销。它试图减小它自己AS中的开销,而忽略在其他AS之外的端到端开销的其他部分。

3.2、路由器选择算法

对于任何给定的目的地前缀,进入BGP的路由器选择算法的输入是到某前缀的所有路由的集合,该前缀是被已知路由器学习和接受的,如有多条则采用以下规则:

  1. 路由被指派一个本地偏好值最为其属性之一,它的设置完全取决于AS的网络管理员,具有最高本地偏好值的路由将被选择;
  2. 从余下的路由中选择具有最短AS-PATH的路由,如果该规则是路由选择的唯一规则,则BGP将使用距离向量算法决定路径,距离测度使用AS跳数而非路由器跳数;
  3. 从余下的路由中使用热土豆路由选择,即选择具有最靠近NEXT-HOP路由器的路由;
  4. 如果仍留下多条路由,该路由使用BGP标识符来选择路由

4、IP任播

除了作为因特网的AS间路由选择协议外,BGP还常被用于实现IP任播服务,该服务通常用于DNS中。IP任播被DNS系统广泛用于将DNS请求指向最近的根DNS服务器。当一个用户访问复制的内容(不同服务器上的相同内容),可以将该用户指向具有复制内容的最近服务器,BGP路由器选择算法为其提供了一种最为容易和自然的机制。

5、路由选择策略

在路由选择算法中,实际上首先根据本地偏好属性选择路由,本地偏好值由本地AS的策略所确定。实际会存在经由多个不同的提供商连到网络的其余部分的ISP,称为多宿接入ISP,如何防止转发连接它的ISP呢?可以通过控制BGP路由的通告方式来实现,即该多宿接入ISP通告它没有通向任何其他目的地的路径,那么它将起到一个接入ISP的作用。目前没有主干ISP之间如何路由选择的官方标准,商业运行的ISP都遵循一个经验法则:任何穿越某ISP主干网的流量必须是其源或目的位于该ISP的某个客户网络中,不然流量会免费搭车通过该ISP的网络。

为什么使用的AS间和AS内部路由选择协议是不同的:

  • 策略:AS间,策略问题起主导作用,而在AS内部选择策略中起到的作用不大;
  • 规模:扩展一个路由选择算法及其数据结构以处理大量网络或大量网络之间的路由选择能力,是AS间路由选择的关键问题,而在AS内部,总是能将其分成N个AS;
  • 性能:AS间路由选择是面向策略的,因此所用路由的质量通常是关心的次要问题,而AS内部路由对策略并不关心,它更多关注一条路由器实现的性能级别;

五、SDN控制平面

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

  • 基于流的转发:SDN控制的交换机的分组转发工作,能够基于运输层、网络层或链路层首部中任意数量的首部字段值进行。
  • 数据平面与控制平面分离:数据平面由交换机组成,并在流表中执行匹配加动作的规则;控制平面由服务器以及决定和管理交换机流表的软件组成;
  • 网络控制功能:位于数据平面交换机外部;
  • 可编程的网络:通过运行在控制平面中的网络控制应用程序,该网络是可编程的

SDN表示了一种意义重大的网络功能的分类,即数据平面交换机、SDN控制器和网络控制应用程序是分离的实体,该实体由不同的厂商和组织机构所提供。

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

控制器的功能大体组织为3个层次,我们以一种非典型的自底层向上方式考虑这些层次:

  • 通信层:SDN控制器和受控网络设备之间的通信,控制器和受控设备之间的通信跨越了一个接口,它现在被称为控制器的”南向”接口。OpenFlow是一种提供这种通信功能的特定协议,且在大多数SDN控制器中得到了实现;
  • 网络范围状态管理层:由SDN控制平面所做出的最终控制决定,将要求控制器具有有关网络的主机、链路、交换机和其他SDN设备的最新状态信息,交换机的流表信息可以由网络控制应用程序很好的使用;
  • 对于网络控制应用程序层的接口:控制器通过它的“北向”接口与网络控制应用程序交互,该API允许网络控制应用程序在状态管理层之间读写网络状态和流表
image-20201115190510024

2、OpenFlow协议

OpenFlow协议运行在SDN控制器和SDN控制器的交换机或其他实现OpenFlow API设备之间。OpenFlow协议运行在TCP上,使用6653的默认端口号。从控制器到受控交换机流动的重要报文有下列这些:

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

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

  • 流删除:通知控制器已删除一个流表项;
  • 端口状态:交换机用该报文向控制器通知端口状态的变化;
  • 分组入:用于将分组发送给控制器;

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

因特网控制报文协议,被主机和路由器用来彼此沟通网络层的信息。IMCP最典型的用途是差错报告。当IP路由器不能找到一条通往HTTP请求所指定的主机的路径,该路由器就会向该主机生成并发出一个ICMP报文以指示该错误。

从体系结构上将ICMP位于IP之上,因为ICMP报文是承载在IP分组中的,即ICMP报文是作为IP有效载荷承载的,就像TCP和UDP报文段作为IP有效载荷被承载那样。ICPM报文有一个类型字段和一个编码字段,并且包含引起该ICMP报文首次生成的IP数据报的首部和前8个字节以便发送方能确定引起该差错的数据报。

image-20201115193223004

七、网络管理和SNMP

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

1、网络管理框架

  • 管理服务器:它控制网络管理信息的收集、处理、分析或显示,正是在这里,发起控制器网络行为的动作;
  • 被管设备:被管对象可以是一台主机、路由器、交换机或其他联网设备,一个被管设备中存在几个被管对象,这些被管对象可以是被管设备的硬件的实际部分和用于这些硬件及软件组件的配置参数;
  • 管理信息库(MIB):一个被管设备中的每个被管对象的关联信息被收集在这里,这些值可以被管理服务器使用;
  • 网络管理代理:每个被管设备中驻留有网络管理代理,它是运行在被管设备的一个进程,该进程与管理服务器通信,在管理服务器的命令和控制下在被管设备中采取本地动作;
  • 网络管理协议:该协议运行在管理服务器和被管设备之间,允许管理服务器查询被管设备的状态,并通过其代理间接地在这些设备上采取行动;

2、简单网络管理协议

简单网络管理协议(SNMP)是一个应用层协议,用于在管理服务器和代表管理服务器执行的代理之间传递网络管理控制和信息报文。SNMP最常用的是请求响应模式,其中SNM管理服务器向SNMP代理发送一个请求,代理接受到请求后执行某些动作,然后对该请求发送一个回答。SNMP第二常被使用的是代理向管理服务器发送的一种非请求报文,该报文称为陷阱报文,用于通知管理服务器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章