我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

本篇文章为大家展示了BGP协议的广域网流量调度SDN控制器怎样在银行业部署实践,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

在实际用户环境下部署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控制器怎样在银行业部署实践

  •   BGP Flowspec

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

  •   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控制器怎样在银行业部署实践

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

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

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

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

  •   易学、易用、可控

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

  •   设计、部署难度大

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

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

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

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

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

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

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

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

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

  用户需要将分行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部署的一次有益实践。

上述内容就是BGP协议的广域网流量调度SDN控制器怎样在银行业部署实践,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

本篇文章为大家展示了BGP协议的广域网流量调度SDN控制器怎样在银行业部署实践,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在实际用户环境下部署SD-WAN的解决方案往往会遇到以下几个问题:  需要
2023-06-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录