说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

OpenFlow多级流表在云计算网络中的应用

HTML文档下载 WORD文档下载 PDF文档下载
OpenFlow多级流表是当前的热点话题,但缺少实际应用案例,本文中盛科张卫峰分享了OpenFlow多级流表在实际网络方案中的运用。该方案是基于SDN的性能优化方案,将影响网络性能的工作从服务器Offload到TOR交换机上。

编者按:OpenFlow多级流表是当前的热点话题,但目前缺少实际的应用案例,盛科基于SDN提出一种性能优化方案,将影响网络性能的一些工作从服务器Offload到TOR交换机上去做,将TOR交换机作为服务器网卡的一部分,并且该方案已经在实际网络中进行了部署。本文中,盛科张卫峰分享了OpenFlow多级流表在这个方案中的运用。以下为原文:


作者简介:盛科张卫峰,熟悉二三层路由交换、PTN/IPRAN技术、芯片设计,对SDN/OpenFlow技术也有深刻的研究和理解。著有《深度解析SDN》。新浪微博ID:@盛科张卫峰


先说个题外话

众所周知OpenFlow里面很多行为都是协议无关的,在很多人看来都是脱离实际地要求任意灵活,纯属瞎胡闹。比如要求流规则中至少匹配12元组,比如要求任意数量的多级流表,既难实现又找不到应用。但是事实上,它的要求是否合理,完全取决于你怎么去理解它。在讲正文前,先顺便聊一下这个题外话。如果你对OpenFlow标准的理解是:厂家的实现必须要能同时匹配12元组,必须要能支持任意数量的多级流表,必须要能在流表之间任意跳转,那我可以告诉你,这种要求是做不到的,也是不合理的,这并不是OpenFlow的本意,OpenFlow的本意在于要求你能满足各种实际应用的需求,场景一中需要匹配Mac,那你要能匹配Mac;场景二中需要匹配IP,那你要匹配IP。场景三种需要你先匹配Mac,再匹配IP,你要能做到;而场景四种要求你先匹配IP,再匹配Mac,你也要能做到。换句话说,公司要求你懂中英日韩四国语言,不是要求你同时能讲这四种语言,而是要求你碰到日本人能讲日文,碰到英国人能讲英文,碰到韩国人能讲韩文。

现有的纯软件Tunnel Overlay云计算网络解决方案

题外话说完了,再回头讲正题。尽管如此,就算是理性的人,也还是觉得难以找到OpenFlow多级流表的实际应用案例。今天我就来分享一个在实际生产网络中对OpenFlow多级流表的运用,这个实际生产网络就是IaaS云计算网络,已经在客户那里实际部署。

我们都知道现在最主流的IaaS云计算网络的解决方案就是纯软件的Tunnel Overlay,为什么最主流?因为灵活嘛,而且能解决问题。包括现在最火的OpenStack,使用Tunnel Overlay方式来组网的也很多,它在转发面的大概工作流程就是一个VM发送报文到vSwitch,vSwitch加上Tunnel Header(VxLAN或者NvGRE)后,从服务器网卡发出去,通过中间的物理网络,送到目的服务器上的vSwitch, vSwitch将Tunnel解封装后,原始报文转发到目的VM。如下图所示。


基于硬件的OpenFlow四级流表架构

纯软件Tunnel Overlay方案虽然灵活,但是有不同程度的性能问题(程度取决于每个云平台研发团队对它的优化力度),而且云计算网络中通常都会因为各种各样的原因,有非虚拟化的设备,这些设备如果要接入到tunnel overlay的网络中去,必须借助于硬件TOR交换机作为tunnel gateway。

盛科网络一直都在为各种应用场景进行SDN定制,云计算网络作为SDN的目前最重要的应用领域,自然也不例外。现在盛科基于SDN提出一种性能优化方案,将影响网络性能的一些工作从服务器Offload到TOR交换机上去做,从理念上讲并不是把TOR交换机作为物理网络的一部分,而是作为服务器网卡的一部分。该方案已经在部分客户网络中部署。现在我们来分享一下OpenFlow多级流表在这个方案中的运用。

在该方案中,云平台(如OpenStack)跟SDN TOR交换机紧密集成,通过Controller控制SDN TOR交换机的流表下发,来完成虚拟网络转发路径的建立。VM将报文送到vSwitch,vSwitch直接将报文加上Vlan通过网卡送到TOR交换机,TOR上查流表,去掉VlanTag,识别VM,进而识别Tenant,可选地,可以对VM或者Tenant应用一些策略(如限流,安全过滤),然后查表,如果是跨机架送到别的TOR,则加上Tunnel,经过中间物理网络,送到目的TOR,目的TOR剥去Tunnel Header后查表转发(仍然可以先应用策略),到了服务器上,vSwitch查本地流表(只需要维护本地VM信息)后,转发到目的VM。整个架构和报文流程如下图所示。

为了完成整个过程,盛科专门针对云计算的应用场景,利用交换机芯片内置的N-FlowTM技术,专门研发出一种四级流表的OpenFlow模型。


每张Flow Table完成的具体功能如下:

Table ID为0的功能:

  • VM识别(基于macSa);
  • 租户识别(基于macSa or Vlan);
  • Tunnel识别(基于Tunnel VniId);
  • 基于VM或者租户的策略应用
  • 传递metadata到后面
Table ID为1的功能:

  • 全局安全或者QoS策略应用
  • 决定下一级table跳转到2还是3
Table ID为2的功能:

  • 二层流表转发到Port或者Tunnel
Table ID为3的功能:

  • 三层流表转发到Port或者Tunnel

跟云平台的集成

云平台直接通过盛科提供的(或者用户自己写的)插件跟一个集中式的Controller打交道(当然用户也可以出于可扩展性的考虑自己设计分布式Controller),通过这个Controller的标准OpenFlow接口去控制交换机,大量的工作(抽象信息翻译成流表)是在插件里面做的。这种架构的一个好处是可以兼容不同厂商的设备,只要这些设备都能支持云平台所需要的OpenFlow的能力(比如多级流表),支持足够数量的Tenant和VM。

Controller跟TOR交换机之间的消息不仅仅有OpenFlow消息,还需要OVSDB消息,用来创建Tunnel(OpenFlow并不支持创建Tunnel)。

原则上这种架构可以跟任何云平台集成,我们以OpenStack为例来说明如何将多级流表SDN TOR交换机集成到云平台中。

如下图所示,计算节点上的OVS Agent跟盛科 插件之间只有Query消息,是OVS Agent主动发过来查询VlanId/TunnelId的。所有的流表项配置消息都仅仅发生在Controller和SDN TOR之间,将Neutron Server所需要控制的节点数量从Hypervisor的数量级降低到TOR的数量级,可以大大缓解控制面的压力,提高云平台的可扩展性。

总结

SDN时代的网络,不再是以设备为中心,而是以应用为中心,应用驱动网络变革。这就需要很多深度定制的工作,云计算网络尤其如此。OpenFlow协议设计了多级流表,一直以来我们都没看到有什么典型的应用场景。本文所介绍的这个例子,可以算是OpenFlow多级流表的一个绝佳实践,我们能看到这个方案带来的明显的优势。

  1. 它基于标准的OpenFlow接口,可以防止厂商锁定,只要厂商支持OpenFlow多级流表,且能支持相应的匹配字段和编辑动作。
  2. 让Server专注于计算,将流表查找、Tunnel加解封装、QoS、Security Group等网络处理功能都Offload到TOR,可以大大减轻Server负担,提升网络性能。
  3. 分布式L3 Gateway的设计,特别是将L3 Gateway做到TOR上,可以避免集中式L3 Gateway带来的single point failure的风险,并消除它的性能瓶颈。而且是将router功能做在TOR而非hypervisor,可提升路由性能。
  4. 将云平台需要控制的网络节点数量从Hypervisor的数量变为TOR的数量,降低了一个数量级,有效减轻云平台的可扩展性压力。特别是在VM迁移的时候,需要去更新的节点数量降低一个数量级。
  5. 可以很好地支持非虚拟化环境。
  6. TOR仍然可以对用户数据应用策略,进行监控,极大缓解了纯软件方案带来的网络不可视问题。
Turbo C 2.0集成开发环境的使用(下)-C语言教程 程序的灵魂—算法-C语言教程 数据类型、运算符与表达式(上)-C语言教程 数据类型、运算符与表达式(下)-C语言教程 最简单的C语言顺序程序设计-C语言教程 分支结构程序-C语言教程 循环控制-C语言教程 数值数组-C语言教程 字符数组-C语言教程 函数(上)-C语言教程 函数(下)-C语言教程 预处理命令-C语言教程 C语言指针(上)-C语言教程 C语言指针(下)-C语言教程 结构体与共用体-C语言教程 位运算-C语言教程 文件处理-C语言教程 谭浩强C语言教程 C语言创建链表并实现插入、删除数据 C语言中队列Queue的操作 C语言实现堆栈stack操作 C语言建立和遍历二叉树 C语言冒泡排序法演示代码 C语言实现堆排序(Heap Sort) jQuery Ajax以JSON格式传递结果数据 微软称为WP8开发的应用不兼容WP7手机 WP8开发者必读 关于WP8开发者程序开发语言选择倾向的问题 强大的C#随机字符串生成器 C#上传文件到WEB服务器 WebClient的超时设置 新手求助?谁有较好的打印控件,或较好的解次方案? 如何在程序部署时授予某文件夹对文件的写访问权? 不能重定向是什么原因? 想用Mediaplaer控件播放某个声音文件若干次,怎么控制? 如何通过窗口句柄来获得窗口所在进程的ID 怎么找到DataGrid中的Table呢? 请问用VB怎么才能把1个数据库里的表全部读入LISTBOX里? JmaiL 发邮件的问题?? 备份还原问题 如何用钩子得到中文啊? interbase的存储过程中如果想返回多条结果应该怎么办? 请问!谁能提供算命、测字等原代码和后台库!!500分相送!!!! 我的用客户端连上ORACLE,怎么我的SQLPULS打开中文全是乱码,执行语句后看不到结果是什么 方案讨论:如何自定义并实现错误与例外Exception处理对象,并建立里统一的ErrorMsg 读数据库错误??急急急,在线等(马上给分) 缓存 到的 是什么定义啊 (斑竹来 告诉我吧) 系统分析师、系统设计师有什么区别? DB2技术讨论(1)如何简单理解表空间的定义 vc的ado数据库连接问题 请问linux的个人版和服务器版到底有什么区别?? DB2技术讨论(2)如何简单理解表模式的定义 int& operator[] (unsigned i); 存储过程问题 DB2技术讨论(3)如何处理索引 马上结:我用ASP和JSP分别写了一个人主页,可是服务器只支持PHP,所以我要写PHP.. 我要构建一个网吧?回答问题者都有分 DB2技术讨论(4)如何处理大量数据的增删 郁闷,没有理由,再散分一百,随便进来聊聊 昨天真的真的受了刺激 怎樣將dbedit控件的事件和它所在的form方法相關起來? 如何实现DOS工作站连接到LINUX服务器 DB2技术讨论(5)如何在建好的数据库中设定数据库和表的维护信息 feeboby(诺曼之路) 请进,刚才IE出现js的问题,帖子结了,但分没加上去,另开新帖,100分送上 如何把两个系统合并为一个系统(两个独立的系统) 如何实现集成?? 请教一个apache2.0加tomcat4.3.x时访问目录控制问题 那里有Zend的反编译软件下啊? 大家给我提建议拉,java项目该如何做?交友 这样的asp.net程序消耗是不是太高? 满分求救: 通过 scope="session" 定义的bean 我想继续在包含页中使用。。 大家给个名字建议吧 BDE问题 那个说我骗你手提电脑的进来!!!!!!! 谁知道啊? 直接写内存的Win32 API? 向高手请教.NET下怎样实现聊天室功能? 请教一个apache2.0加tomcat4.3.x时访问目录控制问题 关于JFC的问题 如何鼠标指到单元格中,把单元格中的文字颜色改变 小弟菜鸟,请教一个小问题 初学者问题:关于Serialize()用法 寻求好的解决方法 曾 竹 用拼音字母怎么打,我只会5笔,所以寻找帮忙. important to后加什么,可以加从句吗? 为什么有的从句后面加to do 有的直接就是动词呢? 学而知 知而智 智达高远. 写出“智而获胜,智达高远”的含义(公益广告) 知而获智智达高远繁体字怎么写 幼儿园教育应遵循哪些原则 3.她对打篮球感兴趣,闲暇时经常打篮球? 关于离子化合物和共价化合物的分类,谁知道有什么特例?类似于AlCl3的 狷客是什么意思 “不知我之实狷”是什么意思?知道“狷”的意思,也知道“狷”是和“狂”相对的,但是“实狷”是什么意思呢,这句古话的整体意思又是什么呢? 图书馆名著借阅率降低 “去经典化”阅春晚语言类节目今日一审 赵本山是否亮央视春晚语言类节目今日一审 开心麻花瑞士确认两人在空军战斗机坠毁事件中死青藏铁路格尔木站两辆火车相撞已造成一伊朗议员称伊朗已暂停提炼纯度20%浓浙江永康华溪再遭劫 “牛奶河”变“凉日外务省前官员说安倍“积极和平主义”俄希望联合国继续充当和平的主要保障伊拉克又一媒体人员遭杀害德外长因总理手机遭窃听召见美大使 最乌克兰长途客车中弹20余人死伤冬天,环卫工到哪歇歇脚(倾听·转型中切实维护人民群众健康权益中央财政支持地下综合管廊试点中国“永磁高铁”首秀“三声”响起听故事(中国故事)国家主席习近平任免驻外大使点赞中国·随手拍图片报道治理科技管理乱象的一剂良药(人民时评农村“空巢老人”如何养老(委员手记)裂空心诀易剑乾坤化元皈道潜龙武帅青春没有失败无限神寂陶花小事之泰安危情大秦帝国风云玡月入侵脑细胞少年斗魔龙湾潭旅游林坑旅游王家皂旅游桃花岛风情园旅游林则徐纪念馆旅游沈从文墓地旅游鲸鱼沟旅游古文化街老戏楼店旅游雁滩公园旅游财神湾旅游昌珠寺旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘