基于BGP协议的广域网流量调度SDN控制器在银行业的部署实践

作者:王逊

摘要:SDN作为网络自动化(Network Automation)一种应用场景,从2009年Openflow的提出后在近几年已经进入到快速发展、现网部署阶段。SD-WAN实际上就是将SDN和网络自动化的思想和技术进行了封装以产品或者服务的形式提供给最终用户,具体的实现主要有基于云和企业私网两种方式的例如Viptela(被Cisco公司收购)以及VeloCloud(被Vmware公司收购)。在实际用户环境下部署SD-WAN的解决方案往往会遇到以下几个问题:

  需要采购新的硬件或者软件CPE,虽然这笔开销相比采购传统设备有了一定程度的节省,但是随之而来的人员培训、系统集成等费用还是一笔不小的开支

  如何充分利用现有网络资源保护已有的设备投资?

  在编排器或者SDN控制器失效的情况下如何充分利用现有网络资源提供逃生通道?

  本文介绍了一种基于BGP协议的流量调度SDN控制器(BGP TE controller)。BGP TE controller融合了SDN理念,针对企业、银行流量调度的特点和需求进行了优化;通过BGP Flowspec协议发送流量调度策略,将流量调度到相关的设端口,通过BGP Segment Routing Policy优化流量穿行网络的路径。底层网络可以是用户现有网络设备通过软件升级支持FlowSpec和Segment Routing即可。该控制器已经在国内某银行骨干网络成功部署,实现网络和特定业务的流量调度。

  背景

  可编程的网元设备作为SDN网络的基本组成要素,需要提供不同层面的API接口(控制平面和管理平面);SDN控制器通过这些API接口收集网络拓扑、资源信息、流量信息,基于这些信息SDN控制器就可以对网络进行抽象、仿真、调度和监控。网络自动化编排系统通过SDN控制器的北向API接口操纵网络模型,从而完成对网络业务的编排工作。可编程设备的基本模型如下图所示:  

基于BGP协议的广域网流量调度SDN控制器在银行业的部署实践_第1张图片

  如上图所示,我们把BGP也作为的网络设备的API接口之一。BGP协议版本4于1994年正式发布,是构建现代Internet路由系统的最重要的基础组件,它的稳定性、灵活性、扩展性已经得到了Internet的严酷考验,并且得到了几乎所有设备制造厂商的广泛支持。在SDN大行其道的今天,BGP作为驾驭Internet 20多年的“老司机”是否能找到其新的定位呢?答案是肯定的,近几年来BGP以其灵活的协议设计结构已获得了长足的发展,首先通过传统的路由协议实现的功能已逐步被BGP收到囊中,例如:在数据中心网络设计中,传统的IGP结构的设计已经慢慢被BGP结构取代,典型的代表是OTT大型数据中心的设计中,用BGP替代IGP已经形成了潮流;其次通过对BGP协议的不断扩展,基于LDP、PIM等协议搭建的MPLS 二层VPN(或VXLAN)已经完全被基于BGP 的EVPN所取代 等等。在设计、部署BGP TE controller 实现广域网流量调度方面主要使用了以下几个功能:

  •   BGP Flowspec

  如果需要根据IP包的七元组(源、目标IP地址,源、目标端口号、协议号、QOS标记、接口索引)确定如何转发流量,传统的做法是通过在路由器端口上配置PBR(Policy Based Routing)来实现。Flowspec是BGP IPv4地址族中的一个扩展地址族,可以实现将用户的策略:需要匹配的流量信息(例如IP包的七元组)以及匹配后采取什么动作(限流、重定向、更改QOS标记 等)打包后通过BGP发送给目标设备,从而通过Flowspec实现PBR功能而不需要对设备进行配置,具体功能详见RFC5575[1]。

  •   BGP SR-Policy

  SR(Segment Routing)是近年来涌现出的基于MPLS新技术,SR Policy(基于SR的流量工程,又叫做SR TE用于替代了传统的RSVP TE)将一个数据包在网络中转发的路径信息嵌入到数据包的包头,这样数据包就可以完全按照用户指定的路径穿过一个网络,例如:用户需要数据包穿过网络中的某个链路、某个节点(交换机或路由器)、某个网络平面、某个BGP peer,这些需求都可以转化为相关的SR Label然后嵌入到数据包的包头,在这个数据包经过网络中的每一跳时,网络设备就会检查相关SR标签然后把数据包转发到相应的链路、节点、平面以及BGP peer,实现了数据包的转发控制。BGP SR-Policy是BGP IPv4地址族中的一个扩展地址族,可以将SR Policy打包后通过BGP发送给目标设备,从而实现了在网络设备中部署SR TE策略的功能,具体功能详见draft-filsfils-spring-segment-routing-policy-05[2]。

  •   BGP Link-state

  要实现流量调度首先需要控制器能够了解到网络拓扑信息(网络节点、链路互联关系)、网络资源信息(节点、链路带宽以及其他相关属性)。这些信息通过IGP(OSPF/ISIS)协议进行传播,控制器要取得相关信息就需要加入到IGP域中或者通过命令行登录到设备上收集,这些方法不仅时实现起来较为复杂、而且时效性差。BGP Link-state是BGP协议中的一个新的地址族,可以将IGP协议中的实时网络拓扑、资源信息打包通过BGP 传送到控制器,具体功能详见RFC7752[3].不仅如此,另一个新的rfc draft[4]可以将每条SR-Policy的运行状态通过BGP Link-state 传送给控制器

  通过以上三个协议的扩展,使用单一BGP协议已经可以做到网络、资源信息的收集,流量调度策略的分发以及策略执行状况的反馈。不仅如此,使用BMP协议(BGP Monitoring Protocol)可以通过带内或者带外网络对设备中的BGP运行状态进行实时监控。再加上20多年互联网对BGP协议稳定性、扩展性、多厂商互操作性的考验,现代的BGP已经可以完全担当起SDN底层控制协议重任。

  国内某银行广域网流量调度需求及挑战

  某银行广域网网设计有两地三个数据中心、自建骨干网,区域中心通过三条广域网链路就近连接到骨干网的接入节点,传输链路租用国内三个运营商的线路,如下图所示:

  基于BGP协议的广域网流量调度SDN控制器在银行业的部署实践_第2张图片

  简化以后的骨干及分行组网方式如下图所示:

 基于BGP协议的广域网流量调度SDN控制器在银行业的部署实践_第3张图片

  骨干网设计有三个逻辑平面,每个平面由多台核心以及接入路由器通过广域网线路互联组成,平面间有若干条广域网线路互联;骨干网运行OSPF协议,通过OSPF metric的调整正常运行条件下避免流量穿越平面;分行网络通过三台路由器就近连入骨干网,分行路由器间运行OSPF,与骨干网之间运行eBGP协议,通过eBGP协议的路由策略调整,三台路由器的到DC1,2,3的流量分别穿越平面1,2,3。

  该用户的流量调度需求如下:

  •   灵活的流量调度

  DC、分行层面:可以根据IP包的七元组制定策略,将流量分布到不同的上联链路(平面)上;可以检测到设备、链路层面故障,及时地调整调度策略

  骨干网层面:根据网络资源使用情况(如拓扑、带宽、通讯资费等)计算并调整流量调度策略,如:最小时延路径、符合带宽要求的路径等;充分利用网络中等价路径(ECMP)以及非等价路径(UCMP),做到最大化利用网络资源

  用户指定业务的上、下行流量在骨干网中走相同的路径:DC到分行的上、下行流量需要穿越相同的网络路径,包括相同的平面、链路、网络设备

  •   易学、易用、可控

  尽量使用用户熟悉的网络技术,最大程度上降低用户学习曲线;同时需要有良好的用户操作界面,使得运维人员容易上手操作;调度策略的运行状态、效果应当清晰可见,方便运维人员管理控制,在控制器发生故障的情况下,需要利用现有网络协议作为逃生通道,避免因控制器脱网导致流量异常转发或者黑洞。

  •   最大化保护现有投资

  尽可能基于现有的网络设备实现流量调度工作,避免或少量采购新设备。

  在银行广域网络中部署SDN控制器有如下挑战:

  •   设计、部署难度大

  该用户骨干网设备类型和数量较多,诸多新型协议栈如Openflow、Netconf、PCEP等,需要对现网设备进行硬件更新、软件升级才能支持。而且SDN发展迅猛,新技术层出不穷,协议版本快速迭代,对设备的兼容性、互操作性要求很高。

  由于部分广域网链路租用了运营商的MSTP,MSTP线路会出现抖动的状况,因此控制器不仅需要快速感知网络拓扑的变化,而且要有效的处理链路抖动的场景;但如果完全依靠SDN控制器对实时的网络拓扑变化进行策略的调整,网络的运行对控制器的压力、依赖性会很大,控制器本身很够可能就变成了性能瓶颈,因此要充分的利用网络设备本身的处理能力与控制器各司其职;

  上、下行流量走相同的路径这个需求比较挑战性,众所周知网络设备是按照逐跳转发的机制处理每一个IP包并不会识别某一对通讯端点的上下行流量,需要生成双向的流量调度策略才可以保证上、下行的流量走相同的网络路径,并且不能只按照基于目的地址的方式调度而是需要按照源、目的地址组合的方式进行流量调度

  为了提供逃生通道,当控制器在线时,控制器发送的调度策略在目标设备上需要有最高的优先级,一旦控制器失联则网络设备需要删除控制器发送的策略并转换成为按照设备的路由表转发的方式,在这种方式下控制器的作用是对网络资源使用的优化,即:控制器的集中控制和网络设备分布式控制结合的方式,而不是类似Openflow的方式将控制器变成了网络的神经中枢。

  •   运维体系压力大

  网络运维体系是保证网络服务质量的关键, 运维体系由人、工具、流程三个元素组成。SDN控制器引入了编程语言、API、DevOps等元素,对于传统运维人员来讲,知识更新会是较大的挑战;新技术的引入会对现有OSS体系形成较大冲击,需要引入新的工具、流程,积累新的运维经验。因此在SDN技术选型的时候需要充分考虑现有的运维人员的网络知识、设备运维经验的储备以及当前OSS系统的支撑能力。在技术选型方面,尽量做到选用多厂商支持、兼容性较好、运维人员熟悉的技术,做到SDN系统上线后,只需要对相关人员进行简单的培训便可以上手操作并且能简单的整合到用户现有的OSS系统当中。

  控制器部署实践

  基于以上的需求,我们设计并开发了BGP TE controller该控制器是行业内第一款支持通过SR-Policy方式实现原生的SR-TE流量工程的控制器。之所以选用BGP作为控制协议,在背景介绍小节已经说了不少了,这里不再重复,另外一个主要原因是该银行运维的BGP网络有一段时间了,已经熟悉BGP协议原理、操作以及积累了不少运维经验,同时BGP Flowspec、SR-Policy、link-state的扩展已经将拓扑收集、资源信息收集、策略分发、策略管理集成于一身,极大程度上简化了网络设计降低了运维人员学习门槛。

  控制器和网络连接如下图所示:

  基于BGP协议的广域网流量调度SDN控制器在银行业的部署实践_第4张图片

  控制器通过iBGP 会话连接到PE以及分行网络设备(图中只画出了控制器与平面1和分行1网络设备的连接),共有三类iBGP会话:

  •   与骨干网BGP RR(Route-reflector)的会话,启用了BGP Flowspec地址族,用于实时收集骨干网拓扑、资源信息

  •   与分行的iBGP 会话,只启用了BGP Flowspec 地址族,根据IP的7元组将流量调度到与骨干网互联的广域网链路

  •   与骨干网PE的iBGP会话,启用了BGP Flowspec以及SR-Policy地址族,将用户流量调度到不同SR-TE的路径上,从而实现按照用户指定SLA(时延、带宽、链路费用)穿越骨干网的需求

  BGP TE控制器的基础使用场景如下图所示:

  基于BGP协议的广域网流量调度SDN控制器在银行业的部署实践_第5张图片

  用户需要将分行1(IP地址a.a.a.0/24)R1路由器上到DC1的业务流量(IP地址b.b.b.0/24 应用端口:ccc)从平面1调度到平面2,业务需求走最小时延的网络路径。为了读者看清策略工作的原理,以下说明中对策略进行了一定的简化:

  1. 控制器生成并下发两条SR-Policy策略

  控制器通过BGP-LS收集网络拓扑和资源信息,并且按照用户的策略配置计算出从PE2到PE4的双向SR-TE Policy同时计算出位于平面2的保护路径,通过BGP SR-Policy将该策略下发到PE2和PE4当中(图中绿色粗线条),这样一旦在平面2中的主路径发生故障,路由器可以将流量快速的切换到保护路径上

  2. 控制器生成并下发两条Flowspec 策略:

  a. 策略1:匹配流量(源IP:a.a.a.0/24, 目标IP:b.b.b.0/24,目标端口:ccc),将流量重从定向到PE2。该策略通过Flowspec发送给R1

  b. 策略2:匹配流量(源IP:b.b.b.0/24,源端口:ccc,目标IP:a.a.a.0/24),流量重从定向到PE2。该策略通过Flowspec发送给PE4

  当流量进入R1当中,路由器根据Flowspec策略对IP包进行检查,如果不匹配Flowspec的条件则按照路由表进行转发,如果匹配了Flowspec的条件则将该数据包转发给PE2;数据包到达PE2后则进入SR-TE Policy通道到达PE4;在PE4上IP包按照本地路由表转发到DC1内部相关的路由器;下行流量与上行流量基本相同,这里就不再重复了。

  由于双向的SR -TE Policy是通过控制器计算出来的,并且在流量入网的两端通过Flowspec限制了只有符合策略要求的流量才可以进入到相关的Policy,保证了双向流量穿行相同的网络路径。

  当骨干网拓扑发生变化(如:广域网链路中断,或者路由器离线等)的处理:

  通过BGP-LS控制器可以收集到实时的网络拓扑,控制器可以根据最新的网络拓扑计算并更新已经发布的Policy

  当出现链路抖动的时,控制器会抑制策略更新的时间,在检测到链路稳定一段时间后再将新策略发送给相关路由器,从而避免了链路抖动对策略的稳定性带来的影响

  当路由器收到了Flowspec、SR-Policy策略时,该策略是否能对流量生效还看该策略是否能通过路由器的有效性检查,例如:在上面例子中的Flowspec策略1,如果重定向的目标IP地址(PE2)无效的话(例如:分行连接PE2的链路中断、PE2下线 等),该策略就不能通过路由器的有效性检查,这个策略也就不会对流量产生任何影响。充分利用了这个机制的,控制器就不需要对任意网络的事件实时作出响应,如上例所示,如果当Flowspec策略1刚刚下发时PE2是有效的,策略1通过了路由器的有效性检查于是就可以对穿过路由器的流量进行调度;当网络运行一定时间后,由于故障导致PE2不可达,路由器会第一时间检测出这个事件的发生并且立刻将策略1变为无效状态,此时流量到达R1后会按照路由表进行转发,从而把网络的变化对流量的影响降低到了最低;而控制器检测到该事件的发生的时间会滞后于路由器几秒钟,控制器会重新计算相关的策略然后将新策略下发给相关设备;

  BGP-TE控制器通过双向控制体现了SD-WAN的灵活性,实用性,必要性。不仅仅基于IP,而是可以基于应用端口的流量控制是很多金融行业客户的实际需求。目前市场上很多基于策略的SD-WAN解决方案,如IWAN,VIPTELA,VECOLOUD等需要通过策略实施逐跳控制,在存在核心网等多跳环型组网下,策略的配置和维护复杂。基于BGP协议的SD-WAN解决方案完美的将接入侧基于应用识别的策略控制和核心网MPLS TE技术结合,非常简洁的实现了金融用户复杂的流量控制需求。

   结束语

  SDN的部署可以助力银行网络加快业务创新,提高网络资源利用率,优化业务体验,增强市场竞争力,逐步实现从运维到运营的演进。本文介绍的BGP TE controller利用SDN思想,充分利用BGP协议的多种扩展技术(如:BGP Flowspec、Segment Routing Policy),在保护原有网络投资、最大限度保持原有运维体系基础上成功实现了广域网流量调度功能,是国内银行广域网流量调度SDN部署的一次有益实践。

参考文献

[1]  BGP Flowspec RFC  https://tools.ietf.org/html/rfc5575


[2] Segment Routing TE Policy RFC draft https://tools.ietf.org/html/draft-filsfils-spring-segment-routing-policy-06


[3]BGP-Link-state RFC  https://tools.ietf.org/html/rfc7752


[4]BGP Link-state扩展支持SR Policy运行状态  draft-ietf-idr-te-lsp-distribution-08

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11310314/viewspace-2156122/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11310314/viewspace-2156122/

你可能感兴趣的:(基于BGP协议的广域网流量调度SDN控制器在银行业的部署实践)