可编程数据平面将OpenFlow扩展至电信级应用(一)

可编程数据平面将OpenFlow扩展至电信级应用(一)

案例:基于WinPath网络处理器的电信极OpenFlow (CG-OF)客户端实现

作者:Liviu Pinchas, Tao Lang - PMC-Sierra

Eddie Millsopp, Dermot Flanagan - Asidua

1. OpenFlow

OpenFlow定义了软件定义的网络(SDN)中的开放通信协议,从而将控制平面与转发平面分隔开来,并将控制平面集中在控制器之中,数据平面则位于网络设备之上(OpenFlow交换机),而控制平面的决策如高层路由决策等则转移至一个独立的控制器。此交换机和控制器通过OpenFlow协议来进行通信。

在OpenFlow交换机上实现的机制包括:

·        多次分类,其间将分组头域组合而成的关键字与规则集进行匹配

·        依照分类结果,收集动作规则集中的指令

·        在最后一次分类完成后,执行动作集

指令可包括:删除分组、将分组转发给控制器、转发到特定端口/队列,改变头、头进栈/出栈、转发至特定逻辑端口(链路汇聚)或组(组播、扩散)及测量。

图1  OpenFlow交换机的概念图

2. 从数据中心的OpenFlow 到电信级OpenFlow

由于SDN和OpenFlow承诺会降低CAPEX和OPEX,因此对运营商而言很有吸引力。Strategy Analytics的最新研究表明,截至2017年,软件定义的网络可以为移动运营商节省大约40亿美元的资本支出[1]。举例来说,中国移动近期公布了一项雄心勃勃的计划,拟将整个分组传送网络(PTN)升级为基于SDN的超级PTN。超级PTN的特点之一是在转发平面与控制平面之间采用了OpenFlow。但是,OpenFlow标准(1.3.2)缺乏对电信级功能的支持。比如,无法用OpenFlow对PTN(MPLS-TP、QoS和同步功能)的全部功能进行映射。

要想让OpenFlow为运营商所采纳,就必须使之达到电信级标准。这包括支持多项功能,如流量管理(包括流量管制及流量整形)、多种OAM(以太网、MPLS、BFD)、50ms之内快速重新路由的保护倒换、定时与同步、L2/L3 VPN、用于测量的统计数据搜集及记录、可观测度及调试等等。数据平面的灵活性在实现这一复杂的功能集时意义非凡。

以MPLS-TP为例。MPLS-TP对于故障监测和保护倒换有明确要求。虽然OpenFlow目前对故障监测或故障恢复并没有明确的支持,FlowEntries在理论上可以构建成将故障监测的PDUs转发给控制器,使之可以基于网络中的故障作出相应决策。由于很多故障监测机制均依赖于对每个监测实体毫秒级的传输及监测,该方法可能会存在严重的性能和扩展性方面的问题。指望控制器和交换机之间的通信在这些时间关键型功能之前完成几乎是不可能的。

除了MPLS-TP OAM以外,许多其他关键性的要求,如定时和同步、流量管理、MEF规范中描述的各种业务等、L2/L3 VPN、以及快速重路由均需要对OpenFlow进行同样的扩充来应对电信网络的需要。

要在OpenFlow要求的框架内支持如此丰富的电信级功能,并且能够在标准反复更新的情况下增加这些功能,可编程的数据平面架构是必不可少。

可编程数据平面架构能带来一定的灵活度和可扩展性,在此基础之上,我们将展示,无需与控制器之间明确的互动,即可在与OpenFlow兼容的交换机上支持所需的OpenFlow 1.3.2规范之外的扩展功能,从而实现高效的故障监测和保护倒换机制。

3. 实例:MPLS-TP OAM

  由于故障监测和保护倒换能力需要OpenFlow交换机给与实时的反应,现有的OpenFlow 1.3.2规范缺少必需的协议或信息来支持MPLS-TP及OAM。例如,CFM(ITU-TY.1731)需要3.3ms的分组生成能力,而线性保护RFC6378则需要<50ms的保护倒换。

  本文倡导,OpenFlow交换机中的MPLS-TP和OAM支持需要OpenFlow规范作出几个方面的扩展,并建议如何在可编程数据通道架构上支持这些扩展功能。

3.1 故障监测

  故障监测在NNI到UNI方向进行。将OAM分组从MPLS-TP流中抽取出来,再重新发送给合适层级的监测实体,如段层、LSP和PW层等等。Y.1731的故障监测运用了一个名为RMEPs(RemoteMEPS or Maintenance Endpoints)的实体。REMPs通过中断及处理由远端发送的连续性检测信息(CCMs)来监测MEP和其同伴MEP之间的活跃度。

  要支持故障监测则需要对OpenFlow规范作出几方面的扩展:

·        首先,需要扩展OXMMATCH域,以便进行OAM分组中OAM专用域的匹配,如CFM、MA_ID、MEP ID和MD级别。

·        其次,需要一个新的ACTION类型来指示出需要进行OAM处理。这一全新ACTION类型包含在 代表链路的RMEP端点的间接组对象(INDIRECT group)的唯一容器成员(bucket)所包含的动作集合(ActionSet)。该类型对所需的OAM处理而言是特定的,因此会需要几个ACTION类型,如MPLS_OAM_CCM,MPLS_OAM_DMM等。

  下图概要性地描述了故障监测功能。其中展示了实时和非实时两种情况。实时情况下的CCM表明故障监测功能是如何由一个组来代表,这个组观测着相应的执行者或保护者实体。

  OAM实体将运行适当的OAM状态机,如Y.1731 CCM,来监测及上报监测组的状态。它将会生成各类事件并上报给控制器,以便监测组作出相应的状态变更,如活跃度等。这些事件都会作为新的async信息传送给控制器。

2  MPLS-TPOAM 故障监测

3.2 监测分组的产生

  分组的产生在UNI到NNI方向进行。OAM分组会在特定频率生成并插入恰当的MPLS-TP 通道。

  Y.1731要求监测分组的生成必须支持3.3ms的时间间隔。显而易见,运用常见的PACKET_OUT OpenFlow 方法无法实现。OpenFlow控制器必须要能够通知交换机来自动产生这些消息。产生分组的能力与代表工作者与保护者的小组容器实体相关。

必须创建出新的逻辑端口来对分组生成进行初始化,该逻辑端口应该具备与分组生成相关的一些特殊属性,包括:

1.       使能/禁止状态

2.       频率

3.       分组模板

4.       分组种类

5.       输出行为

3.3 保护倒换

  由于在G.8131和RFC 6378中说明了线性保护的保护倒换的实时性要求,保护倒换必须无需控制器的任何干涉而由交换机自动进行。

  故而,需要对OpenFlow协议进行扩展来帮助控制器指明某一特定保护实体的保护倒换能力。线性保护(LP)堆栈需要标识出,该交换机在信号故障时将自动进行保护倒换(由CCM故障作出通知)。

  实现方法为扩展容器的属性,含纳一个新的属性,以实现基于容器观察组的状态来说明是否允许自动切换。

  此外,控制器可能希望进行手动的切换。这一点可以通过GROUP_MOD来实现,通过改变容器的顺序,使得保护容器当前占据最高优先极,从而获取流量承载。

  在UNI到NNI方向的1+1保护倒换模式中,交换机可以作为工作者与保护者路径上流量之间的桥梁。因此,控制器可以将适当保护层的GROUP配置为ALL种类,该GROUP可以提供组播行为。

  在1:1保护倒换模式中,交换机只能作为通往活跃路径的流量的桥梁。因此,控制器可以将适当保护层的GROUP配置为FAST_FAILOVER种类,这样就只会用到活跃路径。

图3  UNI到NNI方向的保护倒换和故障监测

时间: 2024-11-10 06:22:38

可编程数据平面将OpenFlow扩展至电信级应用(一)的相关文章

可编程数据平面将OpenFlow扩展至电信级应用(二)

可编程数据平面将OpenFlow扩展至电信级应用(二) 案例:基于WinPath网络处理器的电信极OpenFlow (CG-OF)客户端实现 作者:Liviu Pinchas, Tao Lang - PMC-Sierra Eddie Millsopp, Dermot Flanagan - Asidua 4. 软件考量 4.1 数据通道 为达到理想目标,可编程数据通道设备还需要配备一套丰富的数据通道软件协议. 开发该软件的目的在于满足电信级以太网协议严格的实时性要求,并提供所需的灵活度与便利性,从

探索通用可编程数据平面

引言:相比传统网络数据平面,通用可编程数据平面让网络用户可以自定义数据包的完整处理流程,实现理想的协议无关网络数据处理.作为一种理想的SDN数据平面,通用可编程数据平面还不够完善,还需要在不断的尝试中摸索前进. 本文选自<重构网络:SDN架构与实现>. 相比传统网络数据平面,通用可编程数据平面让网络用户可以自定义数据包的完整处理流程,实现理想的协议无关网络数据处理.而当下的OpenFlow模型还无法成为一种完全的通用可编程数据转发模型,还无法实现协议无关的转发.只有实现了真正的通用可编程数据平

软件定义网络基础---SDN数据平面

主要介绍SDN架构和转发模型 一:传统网络设备 (一)传统设备控制平面和数据平面 (二)数据平面的任务 数据平面对数据包的处理,主要通过查询由控制平面所生成的转发信息表来完成 (三)传统网络数据平面数据包的处理流程 (四)传统网络数据转发处理特点 比如某一设备的数据平面,只能对某几种特定协议的数据包进行解析 功能模块固定,在网络生产时就已经固定.例如: 二:SDN数据平面架构 (一)主要变化 第一:在该SDN数据平面中,包处理流程中的所有模块,包括解析.转发和调度,都是可编程.协议无关的 第二:

编程之美-2.11 扩展 寻找距离最远的两个点

一.问题描述 平面上有n个点,如何寻找距离最远的两个点? 二.解题思路 第一步,寻找凸包(因为最远距离的两个点一定在凸包上) 第二步,用旋转卡(qia)壳 寻找距离最大的点 凸包和旋转卡壳算法参见http://blog.csdn.net/kaytowin/article/details/5140111 三.代码实现 #include<iostream> #include<vector> #include<algorithm> #include<cmath>

编程之美 2.10 扩展问题

编程之美 2.10 扩展问题 题目如下: 如果需要找出N个数组中的第二大数,需要比较多少次呢?是否可以使用过类似的分治思想来降低比较的次数呢? 解法一 我们最容易想到的方法就是:我们数组进行排序,取倒数第二个数即为所求.但是比较次数是很高的,不可取. 解法二 用2个中间变量来保存最大值和第二大的值,遍历一次数组即可得到最大值和第二大的值.比较次数为:2*N 实现代码如下: package com.wrh.firstpro; import java.util.Arrays; /* * 寻找数组中的

范式编程--数据交换

利用指针来进行数据的交换:2014-08-01 函数的设计如下: void swap(void *ap,void *bp,int size){ char *buffer=(char *)malloc(size); memcpy(buffer,ap,size); memcpy(ap,bp,size); memcpy(bp,buffer,size);} 调用方式,以char*为例 char * x=strdup("FRED"); char * y=strdup("NILMA&qu

交换机的数据平面、控制平面、管理平面

交换机数据平面: 交换机的基本任务是处理和转发交换机各不同端口上各种类型的数据,L2/L3/ACL/QOS/组播/安全防护等各种具体的数据处理转发过程,都属于交换机数据平面的任务范畴. 交换机控制平面: 交换机的控制平面用于控制和管理所有网络协议的运行.控制平面提供了数据平面数据处理转发前所必须的各种网络信息和转发查询表项. 交换机管理平面: 交换机的管理平面是提供给网络管理人员使用TELNET.WEB.SSH.SNMP.RMON等方式来管理设备,并支持.理解和执行管理人员对于网络设备各种网络协

百亿级数据10万字段属性的秒级检索解决方案以及实现

课程下载地址: https://pan.baidu.com/s/1zr5riwZtdRgnVQRetQnG7A 提取码: 5xg8 平台型创业型公司,会有多个品类,像生活信息服务类网站的有:58同城,赶集网等等,他们的类别非常多,每个垂直领域都会分为很多类别,每 个类别下又分很多子类别,每个类别或者子类别的属性都不一样,像这么庞大的数据,字段属性可以达到10万级别,同时数据量可以达到百亿级别 ,很多异构数据的存储需求.基于这么庞大的数据,我们需要达到秒级查询. 那么我们该怎么设计呢?本课程讲手把

大数据学习笔记3--HDFS扩展和mapreduce工作过程

HDFS配置: 客户端中的配置参数可以覆盖服务端的参数. 例如:副本数,切块大小 HDFS文件存储: 服务端存储block的实际大小,但是不适合存储小文件,小文件会占用namenode的元数据空间. 对于小文件数据的优化,可以在上传之前先合并再上传. 例如:压缩.文本文件合并 HDFS扩展: hdfs支持rest API,与平台无关 jetty 容器 hdfs支持rest command 分布式任务传统方式: 任务资源分发 jar配置文件...硬件资源的分配 任务在各个任务节点上设置运行环境,启