SDN基本概念——网络控制平面和数据平面

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SDN基本概念——⽹络控制平⾯和数据平⾯
1 简介
SDN在⽹络设备的控制⾯和数据⾯的分离⽅⾯具有潜在优势。

这种分离给予运营商集中式或半集中式程序性控制的便利。

此外,SDN还具有潜在的经济学优势,因为它有能⼒将相当复杂的软件功能整合在⼀个或⼏个地⽅,来控制那些较便宜的所谓的普通标准硬件。

控制平⾯和数据平⾯分离是SDN的基本原则之⼀,同时也是它⽐较有争议的⼀点。

尽管这不是⼀个新的概念,但现今的思维⽅式依然在⼀个旧观念上有着有趣的扭曲:控制平⾯可以离开数据⾯有多远?需要同时运⾏多少(虚拟机)实例才能满⾜弹性和⾼可⽤性的要求?是否能将100%的控制平⾯重新安置到更远的位置,⽽不是只相隔⼏英⼨?这些问题⼀直被激烈地争论着。

我们乐于接受的实现这些想法⽅法是把它们看作⼀系列连续的可能性,从最简单的、标准的全分布式控制平⾯延伸到半集中式或(逻辑上)集中式的控制平⾯,再到最后严格的集中式控制平⾯。

图1说明了适合⽹络运营商的选项范围,以及每种⽅法的利弊。

其中全分布式控制平⾯和全集中式控制平⾯都不⽅便横向扩充。

图1. 控制⾯和数据⾯的各种分布选项
2 渐进与⾰命
对于把控制平⾯放在哪⾥这个问题,上述答案范围的⼀端是所谓的⾰命派,建议了⼀个⼀切归零、重新开始的⽅案——即⽹络的控制⽅式是完全集中的。

在⼤多数情况下,这种极端的⽅法实际上已经被缓和为逻辑上的集中控制——因为由于规模要求或⾼可⽤性要求,部署严格的集中控制是⾮常困难的。

在这个模型中,每个⽹络设备中都没有控制平⾯的功能;相反,⽹络设备可以说是不会说话(尽管很快)的、在位于远端的集中控制平⾯的完全控制下的交换设备。

在答案范围的中间,渐进派的⽀持者注意在⼀般定义的⽹络中可以有⼀个区域,那⾥存在⼀个——能提供⼀些新能⼒的——集中控制范例,但是这个区域既不会取代⽹络的所有功能,也不会从设备中完全去除控制平⾯。

相反,这种范例通常以某种⽅式与分布式控制平⾯⼀起协同⼯作,即意味着⽹络设备会保留⼀些传统的控制平⾯的功能(例如,ARP处理或MAC地址学习功能),同时为了这种运⾏范例⽽允许⼀个中央集中控制器更为⽅便控制其他领域的功能。

这种观点的特点可被归结为混合运作模式或Underlay/Overlay概念的⼀部分,其中
分布式控制平⾯提供underlay,⽽集中控制平⾯提供⼀个逻辑上的overlay并将underlay⽤作⽹络的传输层。

最后,在答案范围的另⼀端是控制平⾯的经典使⽤⽅式:全分布式的控制平⾯。

在这种模型中,在数据⾯之外,所有⽹络设备都运⾏⼀个控制⾯的完整实例。

另外,在这种模型中,每个独⽴的控制⾯必须与其他控制⾯合作,以⽀持⽹络的运营和粘合性。

该⽅法显然没有任何新意,既不是渐进也不是⾰命。

3 控制平⾯
由于在⼀个很⾼的层⾯上,控制平⾯创建了本地数据集,⽤来建⽴转发表中的条⽬——数据⾯利⽤这些转发表条⽬在(⽹络设备的)输⼊端⼝和输出设备之间转发流量【注:管理平⾯负责[可能影响本地转发决策(转发功能)——例如接⼊控制列表(access control lists,ACL)或者基于策略的路由(policy-based routing ,PBR)]的⽹元配置】。

⽤于存储⽹络拓扑结构的数据集被称为路由信息库(Routing Information Base,RIB )。

RIB经常需要通过与控制平⾯的其它实例之间的信息交换来保持⼀致(即⽆环路)。

转发表条⽬通常被称为转发信息库(Forwarding Information base,FIB),并且经常反映在⼀个典型设备的控制平⾯和数据平⾯中。

⼀旦RIB被认为是⼀致或稳定的,FIB就会被程序化。

要完成这个任务,控制实体/程序必须发展出⼀个(满⾜某些约束条件的关于⽹络拓扑的)视图。

这个⽹络视图下的⽹络可以通过⼿动⽅式程序化(通过观测⽽学习),或者⽤(通过与控制⾯的其它实例的对话——通过使⽤⼀种或很多种路由协议、⼿⼯编程或两者的结合——⽽)收集到的信息⽽建⽴。

图2表⽰了控制平⾯和数据平⾯的结构,这代表了⼀个由互连的交换机组成的⽹络。

在图的顶部显⽰了⼀个数据交换机⽹络,下⾯是其中两个交换机(记为A和B)的控制平⾯和数据平⾯的细节的扩展。

在图中,位于最左端的交换机A的控制⾯A接收到数据包,并最终转发给右侧相邻的交换机B。

在每个扩展图⾥,要注意控制平⾯和数据平⾯是分离的,控制平⾯在⾃⼰的处理器/处理板卡上运⾏,⽽数据平⾯运⾏于其它的处理器或处理板卡。

两者都被安置在⼀个单独的机架。

在图中,数据包被数据平⾯所在的线路接⼝卡的输⼊端⼝所接收。

如果,例如,接收到的数据包来⾃⼀个未知的MAC地址,它被弃置或重定向(图中过程4)到控制层设备,那⾥它会被学习、处理,并随后被向前转发。

同样的处理⽅式也被应⽤于控制协议流量,例如协议消息(如OSPF的链路状态通告)。

⼀旦⼀个数据包被传送到设备的控制平⾯,其中包含的信息会被处理,并且可能会导致RIB的⼀个改变和给其它交换机的附带消息通告(提醒它们这次的更新,即学习到了⼀条新的路由)。

当RIB稳定之后
后,FIB会在控制平⾯⾯和数据平⾯两处更新。

随后,在数据转发的⽅式也会被更新以反映出这些变化。

然⽽,在这种情况下,由于接收到的数据包是来⾃⼀个未学习过的MAC地址,控制平⾯将数据包C返回给数据平⾯(图中过程2),后者相应地将数据包转发(图中过程3)。

如果需要额外的FIB编程,这也发⽣在过程C中——在这个时候,数据平⾯的FIB已经学习到了这个MAC源地址。

数据包处理的同样算法也发⽣在右边的下⼀个交换机。

图2 ⼀个典型⽹络的控制平⾯和数据平⾯
互联⽹的历史⼤致就对应着(管理可达性信息的)控制⽅案、(分配可达性信息的)协议和(⾯对⼀些挑战的)优化路径的算法⽣成的演进。

在优化路径的算法⽣成中,这包括了使⽤到的信息库的不断增加(即路由表规模的增加)和如何管理这个信息库。

如果不这样做,可能会导致物理⽹络中出现⼤量的不稳定性。

这反过来会使得⽹络变动⼗分频繁,甚⾄达到不可运⾏的地步。

路由信息的增长带来的的另⼀个需要克服挑战是⽹络通告的可达性,它不仅可以在本地实例的数据⾯传输,也可以通过管理层⾯进⾏传输。

在实际应⽤中,刚刚讨论过的互联⽹控制⾯是第2层或第3层控制⾯的⼀些组合。

因此,⼗分⾃然的,相同的发展和演进也发⽣在第⼆层和第三层⽹络,以及组成这些控制平⾯的协议。

事实上,正因为这些协议的演进——不仅在功能⽅⾯,⽽且在于硬件⼚商学会怎样以⾼扩展性和⾼可⽤性的⽅式来实现——才导致了互联⽹的发展。

⼀个第2层的控制⾯侧重于硬件或物理层地址的处理,如IEEE MAC地址。

⼀个第3层控制⾯是为了⽅便⽹络层地址(如⽤在IP 协议的地址)的操作⽽建⽴的。

在⼀个第2层⽹络,(围绕MAC地址学习)的⾏为、(⽤来确保⽆环图——通过Spanning Tree协议,⼤部分⼈都很熟悉——的)机制和(BUM——Broadcast, Unicast unknown, and Multicast,⼴播,未知单播和多播——流量的)泛滥,都导致了它们⾃⼰的可扩展性挑战,并且暴露了它们在可扩展性⽅⾯的局限。

现在已经有⼏种基于第2层标准控制协议的迭代算法或⽣成算法,⽬标都是为了解决这些和其他问题。

其中尤其值得注意的包括IEEE的SPB/802.1aq 标准和IETF的TRILL标准。

然⽽,概括的来讲,(第2层和第3层的)扩展性问题和(它们导致的)控制⾯的设计最终⾛向融合或者混合,因为第2层⽹络从根本上说可扩展性不好——因为有着⼤量的终端主机。

这些问题的核⼼是妥善处理在不同⽹络之间移动的终端主机,和由此导致的转发表条⽬的⼤量变更——以及必须⾜够迅速地更新它们,但⼜不能影响正常的⽹络流量。

在⼀个第⼆层⽹络内,转发的侧重点在于MAC地址的可达性。

因此,第⼆层⽹络主要处理⽤于转发⽬的的MAC地址的存储。

由于在⼤型企业⽹络中,主机MAC地址的数⽬⼗分巨⼤,因此对这些地址的管理极其困难。

⽽管理跨企业⽹络或互联⽹的MAC地址的难度则更加难以想象。

在⼀个第三层⽹络中,转发的重点在于⽹络层地址的可达性。

第三层⽹络的可达性信息主要关注于其本⾝的IP地址前缀的可达性。

这包括⽤于单播和组播的跨⼀系列地址簇的⽹络前缀。

在所有现代场景中,第三层⽹络都被⽤于与第⼆层域分段或者联结在⼀起,以克服第⼆层⽹络的扩展性问题。

特别地,代表⼀些IP⼦⽹的集合的第⼆层⽹桥通常通过⼀个第三层路由器连接起来。

第三层的各个路由器连接在⼀起,形成更⼤的⽹络——或者形成不同的⼦⽹地址范围。

更⼤的⽹络之间通过专注于⼤型⽹络之间的简单互通的⽹关路由器相互连接。

然⽽,在所有情况下,路由器在第三层⽹络之间路由流量,并且只有在(它知道数据包已经到达最终的⽬的层3⽹络,并且随后必定会被递交给⼀台特定的主机的)情况下才会在第⼆层转发该数据包。

多协议标签交换(MPLS)协议,以太⽹虚拟专⽤⽹络(Ethernet Virtual Private Network, EVPN)协议,定位编号分离协议(Locator/ ID Separation Protocol, LISP)之间的界限的模糊是引⼈注⽬的。

MPLS协议——的确是⼀整套协议——将第⼆层转发(或交换)技术与第三层IP路由技术两者的精华部分结合起来,形成了⼀个(既有ATM的极快的数据包转发能⼒,⼜有IP世界的复杂灵活的路径信令特点的的)先进技术。

EVPN协议是解决前⾯所说的⽹络第⼆层的扩展性问题的⼀个尝试:基于MPLS (或GRE)架构,采⽤⾼效的隧道技术将远端的第⼆层的⽹桥连接起来——第⼆层地址和可达性信息只会在隧道中进⾏交换,因此不会影响下⾯的第三层⽹络的扩展性。

与远端⽹桥之间的可达性信息被作为⼀种新的BGP地址簇⾥⾯的数据进⾏交换,不会影响下层⽹络。

还有⼀些其他的优化,以防⽌过度使⽤第⼆层地址(第⼆层地址信息在隧道内交换),并且在⽹桥之间的交互层⾯进⾏了优化。

这种设计减少了⼴播和多播。

另⼀种值得⼀提的混合协议是LISP (请参阅RFC 4984 )。

本质上来说,LISP通过运⽤多宿主技术(multihoming)、增加新的寻址域、将地址从⼀个新⽹络的提供者中分离出来,以及封装控制和转发协议等⽅式,试图解决通⽤分布式控制平⾯模型的⼀些缺点。

在较低的层⾯上,对于特定类型的⽹络,有专门的附属控制过程,⽤于增加更⼤的控制⾯所需的信息。

通过这些过程提供的服务包括链路可⽤性或质量信息的通知/验证、邻居发现及地址解析。

由于某些服务有⾮常严格的性能反馈机制(简⾔之事件检测次数),它们对数据平⾯(例如OAM)来说⼏乎总是本地的——不管控制平⾯选择了什么策略。

这些通过各种路由协议,以及RIB到FIB的控制——这组成了控制平⾯的核⼼,被描述在图3。

注意,我们并没有规定控制⾯和数据⾯所驻留的位置,仅仅说明数据平⾯位于线路接⼝卡(即图3中的LC框)内,⽽控制⾯是位于路由处理器(图3中的RP框)内。

图3 ⼀个典型⽹络设备的控制平⾯和数据平⾯
4 数据平⾯
数据⾯通过⼀系列链路层⾯的操作——收集数据报⽂并且执⾏基本的完整性检查——来处理(通过电缆,光纤或⽆线媒介)传⼊的数据报⽂。

在数据⾯中,⼀个结构良好的(即正确的)数据报⽂通过在⼀张(或⼏张)FIB表——之前由控制平⾯编程设定——中执⾏查找操作来进⾏恰当的处理。

这有时被称为分组数据处理的快速路径,因为它只需使⽤预编程的FIB来识别数据包的⽬的地即可,不需进⾏其他的进⼀步询问。

其中⼀个例外是当接收到的数据报不符合那些规则要求,如检测到⼀个⽬的地未知的数据包,并且这些数据包会被送到路由处理器,在那⾥控制平⾯能⽤RIB作进⼀步的处理。

知道FIB表可以驻留在多个转发⽬标内是很重要的,包括软件、硬件加速的软件(GPU / CPU)、通⽤的集成电路芯⽚(NPU)、FPGA和专⽤芯⽚(ASIC,如Juniper的Trio),或者上述⽬标的组合(取决于⽹元的设计)。

这⾥阐述的软件路径的例⼦是CPU驱动转发的现代专⽤⽹元(如路由器或交换机),它为了能在处理器内存中获得⼏乎是⽆限表格空间⽽放弃了处理器的密集查询(在内核还是在⽤户空间中取决于设备商的特定设计,并且受到主机操作系统特点和架构的约束)。

它的基于超级监督者(hypervisor)的交换机或⽹桥的对应物(在现代计算环境下)在硬件转发模式上做了很多优化,当然也有⼀些限制。

发布专门的设计,特别是在中低性能范围。

数据平⾯转发查询导致的典型动作是向前转发(在特殊情况下如组播中,还包括复制)、丢包、重标记、计数和加⼊队列。

这些动作可以被组合或串联在⼀起。

在某些情况下,转发决定会返回⼀个本地端⼝,表⽰这些流量被设计成需要在本地进⾏处理,如OSPF或BGP。

这些数据包⽂得到⼀个所谓的punt路径——通过离开硬件转发路径,并且通过⼀个内部通信通道被转发到路由处理器。

这种路径通常是吞吐量较⼩的路径,因为它并不是为正常流量的⾼吞吐量数据包转发⽽设计的;但是,为这个⽬的⽽在内部交换阵列简单增加⼀个附加路径,会使得在机柜内获得接近线路理论速率的转发速率。

除了转发决策,数据⾯还可以实现⼀些⼩的服务和功能——通常被称为转发功能(例如接⼊控制列表Access Control Lists 和QoS/策略)。

在⼀些系统中,这些功能都使⽤⾃⼰独⽴的表格,⽽在另⼀些系统中,则作为转发表的扩展来执⾏(增加条⽬宽度)。

此外,不同的设计可以实现不同的功能和转发操作顺序(如图4所⽰)。

有些顺序可能会做出⼀些排他性的功能操作。

图4 ⼀个传统的路由器/交换机上的输⼊功能应⽤的通⽤例⼦。

相关文档
最新文档