网络层-控制平面

1 概述

转发表(在基于目的地转发的场景中)和流表(在通用转发的场景中)是链接网络层的数据平面和控制平面的首要元素。这些表定义了一台路由器的本地数据平面转发行为。

在通用转发的场景下,所采取的动作不仅包括转发一个分组到达路由器的每个输出端口,而且能够丢弃一个分组、复制一个分组和/或重写第2、3或4层分组首部字段。

本章主要介绍这些转发表和流表是如何计算、维护和安装的。有两种可能的方法:

  • 每路由器控制

每台路由器中运行一种路由选择算法的情况,每台路由器中都包含转发和路由选择功能。每台路由器有一个路由选择组件,用于与其他路由器中的路由选择组件通信,以计算其转发表。

OSPF 和 BGP 协议都是基于这种每路由器的方法进行控制的。

  • 逻辑集中式控制

逻辑集中式控制器计算并分发转发表以供每台路由器使用,通用的“匹配加动作”抽象允许执行传统的 IP 转发以及其他功能(负载共享、防火墙功能和NAT)的丰富集合,而这些功能先前是在单独的中间盒中实现的。

该控制器经一种定义良好的协议与每台路由器中的一个控制代理(CA)进行交互,以配置和管理该路由器的转发表。CA一般具有最少的功能,其任务是与控制器通信并且按控制器命令行事。

这些CA既不能直接相互交互,也不能主动参与计算转发表。

2 路由选择算法

①一般而言,路由选择算法的一种分类方式是根据该算法是集中式还是分散式来划分

  • 集中式路由选择算法

用完整的、全局性的网络知识计算出从源到目的地之间的最低开销路径。也就是说,该算法以所有节点之间的连通性及所有链路的开销作为输入。这就要求该算法在真正开始计算之前,要以某种方式获得这些信息。

计算本身可在某个场点(逻辑集中式控制器)进行,或在每台路由器的路由选择组件中重复进行。然而,这里的主要区别在于,集中式算法具有关于连通性和链路开销方面的完整信息。

具有全局状态信息的算法常被称作链路状态(Link State, LS)算法,因为该算法必须知道网络中每条链路的开销。

  • 分散式路由选择算法

路由器以迭代、分布式的方式计算出最低开销路径。没有节点拥有关于所有网络链路开销的完整信息。相反,每个节点仅有与其直接相连链路的开销知识即可开始工作。

然后,通过迭代计算过程以及与相邻节点的信息交换,一个节点逐渐计算出到达某目的节点或一组目的节点的最低开销路径。

称为距离向量(Distance-Vector, DV)算法的分散式路由选择算法。之所以叫作DV算法,是因为每个节点维护到网络中所有其他节点的开销(距离)估计的向量。

这种分散式算法,通过相邻路由器之间的交互式报文交换,也许更为天然地适合那些路由器直接交互的控制平面。

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

  • 静态路由选择算法

路由随时间的变化非常缓慢,通常是人工进行调整(如认为手动编辑一条链路开销)

  • 动态路由选择算法

随着网络流量负载或拓扑发生变化而改变路由选择路径。一个动态算法可周期性地运行或直接响应拓扑或链路开销的变化而运行。

虽然动态算法易于对网络的变化做出反应,但也更容易受诸如路由选择循环、路由振荡之类问题的影响。

③第三种分类方式是根据它是负载敏感的还是负载迟钝的进行划分

  • 负载敏感算法

链路开销会动态地变化以反应出底层链路的当前拥塞水平。如果当前拥塞的一条链路与高开销相联系,则路由选择算法趋向于绕开该拥塞链路来选择路由。

  • 负载迟钝算法

当今的因特网路由选择算法(RIP、OSPF、BGP)都是负载迟钝的,因为某条链路的开销不明确地反映其当前(或最近)的拥塞水平。

 2.1 链路状态路由选择算法

实践中这是通过让每个节点向网络中所有其他节点广播链路状态分组来完成的,其中每个链路状态分组包含它所连接的链路的标识和开销。

经常由链路状态广播算法来完成。节点广播的结果是所有节点都具有该网络的统一、完整的视图。于是每个节点都能够像其他节点一样,运行LS算法并计算出相同的最低开销路径集合。

注:链路开销依赖于所承载的流量,每个节点执行LS算法时会产生振荡,避免这种方式的解决方法是:让每台路由器发送链路通告的时间随机化。

2.2 距离向量路由选择算法

距离向量算法是一种迭代的、异步的、分布式的算法,而LS算法时一种使用全局信息的算法。

  1. 分布式的:每个节点都要从一个或多个直接相连邻居接收某些信息,执行计算然后将其计算结果分发给邻居。
  2. 迭代的:此过程一直要持续到邻居间无更多信息要交换为止。(此算法是自我终止的,即没有计算应该停止的信号,它就停止了)
  3. 异步的:它不要求所有节点相互之间步伐一致地操作。

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

通过将路由器组织进自治系统(Autonomous System, AS)来解决路由器规模和管理自治的问题,其中每个AS由一组通常处在相同管理控制下的路由器组成。

通常在一个ISP中的路由器以及互联它们的链路构成一个AS,然而某些ISP将它们的网络划分为多个AS。一个自治系统由其全局唯一的AS号(ASN)所标识。

在相同AS中的路由器都运行相同的路由选择算法并且有彼此的信息。在一个自治系统内运行的路由选择算法叫作自治系统内部路由选择协议。

3.1 开放最短路优先(OSPF)

OSPF 路由选择及其关系密切的协议 IS-IS 都被广泛用于因特网的 AS 内部路由选择。OSPF 中的开放一词是指路由选择协议规范是公众可用的。

OSPF 是一种链路状态协议,它使用洪泛链路状态信息和 Dijkstra 最低开销路径算法。使用 OSPF,一台路由器构建了一幅关于整个自治系统的完整拓扑图。于是,每台路由器在本地运行 Dijkstra 的最短路径算法,以确定一个以自身为根节点到所有子网的最短路径树。

使用OSPF时,路由器向自治系统内所有其他路由器广播路由选择信息,而不仅仅是向其相邻路由器广播。每当一条链路的状态发生变化时(如开销的变化或连接/中断状态的变化),路由器就会广播链路状态信息。即使链路状态未发生变化,它也要周期性地(至少)广播链路状态。

OSPF通告包含在OSPF报文中,该OSPF报文直接由IP承载,对OSPF其上层协议的值为89。因此OSPF协议必须自己实现诸如可靠报文传输、链路状态广播等功能。

OSPF协议还要检查链路正在运行(通过向相邻的邻居发送HELLO报文),并允许OSPF路由器获得相邻路由器的网络范围链路状态的数据库。

OSPF的优点:

  • 安全:使用鉴别,仅有受信任的路由器能参与一个AS内的OSPF协议。
  • 多条相同开销的路径
  • 对单播与多播路由选择的综合支持
  • 支持在单个AS中的层次结构:一个OSPF自治系统能够层次化地配置多个区域。

4 ISP之间的路由选择:BGP

因为AS间路由选择协议涉及多个AS之间的协调,所以AS通信必须运行相同的AS间路由选择协议。在因特网中,所有的AS运行相同的AS间路由选择协议,称为边界网关协议(BGP)

BGP无疑是所有因特网协议中最为重要的,因为正是这个协议将因特网中数以千记得ISP黏合起来。

4.1 BGP的作用

在BGP中,分组并不是路由到一个特定的目的地址,相反是路由到CIDR化的前缀,其中每个前缀表示一个子网或一个子网的集合。

在BGP的世界中,一个目的地可以采用 138.16.68/22 的形式,对于这个例子来说包括1024个IP地址。因此,一台路由器的转发表将具有形式为(x, I)的表项,其中x是一个前缀(138.16.68/22),I是该路由器的接口之一的接口号。

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

1)从邻居AS获得前缀的可达性信息

2)确定到该前缀的"最好的”路由

4.2 通告BGP路由信息

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

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

此外,跨越两个AS的BGP连接称为外部BGP(eBGP)连接,而在相同AS中的两台路由器之间的BGP会话称为内部BGP(iBGP)连接。

4.3 确定最好的路由

当路由器通过BGP连接通告前缀时,它在前缀中包括一些BGP属性。用BGP术语来说,前缀及其属性称为路由。两个较为重要的属性是AS-PATHNEXT-HOP

AS-PATH属性包含了通告已经通过的AS的列表,为了生成AS-PATH的值,当一个前缀通过某AS时,该AS将其ASN加入AS-PATH中的现有列表。

BGP路由器还使用AS-PATH属性来检测和防止通过环路;特别是,如果一台路由器在路径列表中看到包含了它自己的AS,它将拒绝该通告。

NEXT-HOP是AS-PATH起始的路由器接口的IP地址。

这里,每条BGP路由包含3个组件:NEXT-HOP;ASPATH;目的前缀

  • 热土豆路由选择
  • 路由器选择算法

4.4 IP任播

除了作为因特网的AS间路由选择协议外,BGP还常被用于实现IP任播服务,该服务通常用于DNS中。

例如:一个CDN能够更换位于不同国家、不同服务器上的视频和其他对象。类似地,DNS系统能够在遍及全世界的DNS服务器上复制DNS记录。当一个用户要访问该复制的内容,可以将用户指向具有该复制内容的“最近的”服务器。

BGP的路由选择算法为做这件事提供了一种最为容易和自然的机制。

5 SDN控制平面

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

  • 基于流的转发:SDN控制的交换机的分组转发工作,能够基于运输层、网络层或链路层首部中任意数量的首部字段值进行。分组转发规则被精确规定在交换机的流表中;SDN控制平面的工作是计算、管理和安装所有网络交换机中的流表项。
  • 数据平面与控制平面分离
  • 网络控制功能:控制平面自身由两个组件组成,一个SDN控制器以及若干网络控制应用程序
  • 可编程的网络:通过运行在控制平面中的网络控制应用程序,使用了由SDN控制器提供的API来定义和控制网络设备中的数据平面。

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

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

  • 通信层:“南向”接口,SDN控制器和受控网络设备之间的通信,OpenFlow是一种提供这种通信功能的特定协议。
  • 网络范围状态管理层:由SDN控制平面所做出的的最终控制决定(例如配置所有交换机的流表以取得所希望的端到端转发,时间负载均衡,或实现一种特定的防火墙能力),将要求控制器具有有关网络的主机、链路、交换机和其他SDN控制设备的最新状态信息。
  • 对于网络控制应用程序层的接口:“北向”接口,该API允许网络控制应用程序在状态管理层之间读/写网络状态和流表。REST请求响应接口

5.2 OpenFlow协议

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

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

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

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

  • 流删除:该报文通知控制器已删除一个流表项,例如由于超时,或作为收到“修改状态”报文的结果。
  • 端口状态:交换机用该报文向控制器通知端口状态的变化。
  • 分组入:将分组发送给控制器

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

被主机和路由器用来彼此沟通网络层的信息。ICMP最典型的用途是差错报告。

ICMP报文有一个类型字段和一个编码字段,并且包含引起该ICMP报文首次生成的IP数据报的首部和前8个字节(以便发送方能确定引发该差错的数据报)。

 

posted on 2022-05-25 22:23  ZouYus  阅读(249)  评论(0)    收藏  举报