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

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

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

Eddie Millsopp, Dermot Flanagan - Asidua

1. OpenFlow

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

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

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

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

·        在最后一次分类完毕后,运行动作集

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

图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控制器必需要可以通知交换机来自己主动产生这些消息。

产生分组的能力与代表工作者与保护者的小组容器实体相关。

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

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方向的保护倒换和故障监測

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

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

    可编程数据平面将OpenFlow扩展至电信级应用(二) 案例:基于WinPath网络处理器的电信极OpenFlow (CG-OF)client实现 作者:Liviu Pinchas, Tao Lang ...

  2. 阅读 用P4对数据平面进行编程

    引言 关于题目,对数据平面进行编程,在之前读过the road to SDN,软件定义网络的思想在于数控分离,其对网络行为的编程暂时只局限于网络控制平面.其转发平面在很大程度上受制于功能固定的包处理硬 ...

  3. 用P4对数据平面进行编程

    引言 SDN架构强调了对控制平面的可编程,数据平面只负责转发,导致数据平面很大程度上受制于功能固定的包处理硬件. P4语言的特性: 目标无关性:P4语言不受制于具体设备,所有可编程芯片都可以使用P4编 ...

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

    主要介绍SDN架构和转发模型 一:传统网络设备 (一)传统设备控制平面和数据平面 (二)数据平面的任务 数据平面对数据包的处理,主要通过查询由控制平面所生成的转发信息表来完成 (三)传统网络数据平面数 ...

  5. 解析与动作联动得SDN数据平面

    一种解析与执行联动的SDN可编程数据平面 现有问题和目标 在传统协议处理方式中,各层的协议类型和组合方式固定,使得添加或修改协议很困难(因为需要修改网络设备的解析模式) 基于解析和执行联动结构的可编程 ...

  6. 数据平面可编程与SDN关系理解,以及数据平面可编程的理解

    数据平面可编程与SDN关系 狭义 广义 数据平面可编程的理解 狭义 广义

  7. 实验8:数据平面可编程实践——P4

    一.实验目的 掌握V1Model框架下P4_16的程序结构和基本语法 能够运用 P4 进行简单数据平面编程 二.实验报告 在修改basic_tunnel.p4的内容之后输入make run 验证创建结 ...

  8. P4简介:数据平面的编程语言

    15-05-29          http://p4.org/join-us/ 由两位SDN大师----来自普林斯顿的Jennifer Rexford和斯坦福的Nick McKeown---- 共同 ...

  9. 计算机网络自顶向下方法第4章 网络层:数据平面 (Network layer)

    4.1 网络层概述  网络层主要功能为转发(将数据从路由器输入接口转移到合适的输出接口)和路由选择(端到端的路径选择),每台路由器都有一张转发表,用最长前缀匹配规则来转发. 4.1.1 转发和路由选择 ...

随机推荐

  1. CF814C An impassioned circulation of affection

    思路: 对于题目中的一个查询(m, c),枚举子区间[l, r](0 <= l <= r < n),若该区间满足其中的非c字符个数x不超过m,则可以将其合法转换为一个长度为r-l+1 ...

  2. bootstrap3无间距栅格/grid no-gutter

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  3. Fiddler抓取Intellij Idea中执行的web网络请求

    首先可以打开命令行 输入:ipconfig 找到本机配置的IP地址 这里是: 192.168.97.122 或者打开Fiddler 点击如下图片中的小三角符号:将鼠标放在online的位置,也可以看到 ...

  4. 远程监视jboss应用java内存的配置(实测) .

    前言 因为最近一个项目部署在客户那边运行一个月左右就会出现java内存溢出的问题,为了时时监控java内存的情况需要,需要远程查看服务器上java内存的一些情况.在公司模拟部署了远程监视linux下项 ...

  5. 【Python-2.7】删除空格

    有时我们在编程过程中,需要去除字符串两边的空格,可以用如下函数解决问题: rstrip():去除字符串右边的空格: lstrip():去除字符串左边的空格: strip():去除字符串两边的空格. 示 ...

  6. 接口与抽象类的区别-Java

    概念-抽象类: 类是对某一个对象的具体描述,抽象类则是对有共通之处的对象,描述共通之处的类;包含抽象方法的类一定的抽象类,抽象类并不一定包含抽象方法;抽象类中可以有数据成员,但数据成员必须是stati ...

  7. 【sqli-labs】 less65 GET -Challenge -Blind -130 queries allowed -Variation4 (GET型 挑战 盲注 只允许130次查询 变化4)

    双引号括号闭合 http://192.168.136.128/sqli-labs-master/Less-65/?id=1")%23

  8. Jmeter的面板介绍

    一.jmeter面板介绍,这里是5.1.1版本 1.jmeter面板大致分为菜单区,图标区,目录树以及详细配置区域. 2.大多数人用着英文的面板不太舒服,可以在options里切换jmeter的语言 ...

  9. python3 操作excel表

    python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库可从这里下载https://pypi.python.org/pypi.下面分别记录py ...

  10. datatable 分组

    public static void PrintPersons() { //准备数据 DataTable dt = new DataTable(); dt.Columns.Add(new DataCo ...