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

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仍然可以对用户数据应用策略,进行监控,极大缓解了纯软件方案带来的网络不可视问题。
Perception Neuron系统,让动作捕捉技术不再高冷 2014年DevOps实践调查报告 .NET程序性能的基本要领 百度手机卫士宣布开放三大能力 构建互联网安全生态 火速围观,AMD APU新芯片架构A68H呼之欲出! 对于测试人员而言,TDD意味着什么? 年用电910亿度,那些庞大的数据中心该用什么支撑 走近黑客们的世界,感受网络空间的心跳 VMworld 2014 Day One:Docker、数据中心、混合云新举措 Docker和Kubernetes或将加速SDN发展 前端开发框架三剑客—AngularJS VS. Backone.js VS.Ember.js 【CTO俱乐部读书会】《流程的永恒之道》辛鹏:企业的本质就是流程运营 紧扣微信研发痛点 2014微信开发者大会吸引大量外地参会者 Mobile First!jQuery UI组件集Wijmo五年最大更新 首届TCL杯HTML5智能电视—应用开发大赛火热开启! MDCC智能硬件征集关键词:智能家居、机器人、健康生活 采集颜色、自动同步,还有比这更牛叉的儿童触控笔么? AppCan移动平台:为企业移动化进程加速 学生强则国强,访天猫推荐算法大赛Top 9团队 Mozilla与三星之子——Servo特性解读 360天巡启动公测 打造新一代企业级无线安全解决方案 继Storm和Spark之后,Hortonworks添加对Kafka的支持 一周消息树:国产操作系统最快10月发布,并支持应用商店 技术团队看板方法实践的难点分析 SAP云服务加速转型:调动资源瞄准中国市场 开发测试全承包!移动应用开发工具Telerik平台 火火火火火!看HomeKit如何改变物联网和智能家居? MDCC应用与工具关键词:平台、社交、垂直、解决方案 Leap Motion正式入华 将发布第二代软件SDK 120万操作/秒Redis Cloud 集群单一服务器非基准测试程序 2014微信开发者大会顺利结束 TOP10优秀微信开发商名单公布 服务器是否打开支持FileSystemObject对象的权限 我的数据表列宽为7个字符 , 而我只输入3个字符 , 当我输入4个字符后 , 再次运行程序却看不到所有数据 从新做人 求救:在NT Server下调用GetVolumeInformationA取分区序列号,返回结果为负数!!!怎么回事啊? 正式到新公司上班,送300分,感谢在我最困难的时候在“软件工程”版给过我帮助的朋友们!! 请问斑竹及所有人,怎样得到QuickReport的总页数? Websphere3.5的一个BUG.希望有人反对.多谢.. 什么是DAMAP的对象 哪里有 winpcap 或 libnet 及其他网络编程辅助包下载? 谁能提供PSP文档?最好是Humphrey的那本书! 代码出现bebug.请大家帮我找!!!! TO:net_lover(孟子E章),详情请入内! 有谁用过DEV express系列的dxdbgrid??它是如何把一个文本文件txt读到dxdbgrid1.columns[i]的picklist中去,作为picklist的内容的啊? 我想在Linux下做数据库开发,用什么数据好? 我的pws可能出了问题,那位高手能解决一下 关于控制winamp 各位同行你们有这个的源程序吗(Cacio DT-900数据采集器) Html Help 制作方法 luodi(无知者无畏), 请进: 我用shell(app.path+"\mdac.exe"),来调用微软数据访问控件2.0,提示出错:命令行语法错误, 求救:如何将剪贴板中的内容放到image控件上 how to get the sytax of customer user object ? jsp中的打印问题 pb中有没有类似iif之类的语句 大虾们,怎样将String 类型转换成float 请问在及时战略中,怎么实现寻路的 我想在状态栏显示时间,有没有属性可以让时间自动变化,而不用其它辅助控件? 不会没人愿意回答这个问题吧,都贴第二次了!! 吃西瓜 我在注冊自創構件時總是出錯,請各位幫忙解決. 关于ado连接sybase的问题,紧急求救!!!(我的最高分了) 29分:flexcell定位 请教一下,关于Delphi COM类型库的问题 大家来谈谈申奥成功对我们的影响吧,我想知道怎么利用这个契机大赚一笔 各位谁喜欢“后街男孩”??喜欢的给分! 请问在DBGRID中改变当前选定行的颜色? 我想在DataSourceDataChange()中实现。 客户端怎么与服务器端通信 为什么我在窗口里修改了一个记录的图片字段后,在数据窗口内不能正常显示? 我要在RedLinux71下安装WEB服务器软件,请部如何做? 如何计算某年某月的天数和每天对应的星期 help!!! 为什么我的D6在编译时出现错误:“Fatal Error QuickRpt.pas(23):File not found:'Dsgnintf.dcu' 帝国时代之农民搞笑版……哈哈 如何用DEBUG的命令取消cmos密码!!!急急急! 请教一个Redhat安装的问题 该死的创新virba128…… 急!!!给tripofdream(梦之旅)和能解决全文检索的高手! 有台WIN95机器启动是时出错缺文件mtrr.vxd,udf.vxd谁能帮我! 对于BMP图象的旋转(90、180)的处理。用BitBlt()能否实现。 《Windows网络编程技术》例子中的一个问题。 急!各位帮忙!!!!!!!!!!! 这个java程序有什么问题吗? 编写程序,计算圆柱体,球体,正方体和长方体的表面积和体积(提示:本题中,可先定义一 1.一个高10cm的圆柱,如果把高减少3cm,表面积就比原来减少18.84cm.这个圆柱的体积是多少立方厘米?2.把一个高8dm的圆柱体割拼成一个等底的近似长方体后,表面积增加了24dm²,圆柱体的体积是多 如图:一个圆柱体被截去5厘米后,圆柱的表面积减少了31.4平方厘米,求原来圆柱的表面积是一个圆柱体被截去5厘米后,圆柱的表面积减少了31.4平方厘米,求原来圆柱的表面积是多少?图没标圆柱 正方体、长方体、圆柱体的体积都可以用S乘以H来计算对吗? 一个圆柱体底面周长是18.84cm,高是10cm,这个圆柱体的占地面积是多少? 一个圆柱体,如果把它的高截短了3厘米,表面积就减少了94.2立方CM,体积就减少了多少立方厘米 用正方体,长方体,圆柱体,球体的盒子可以拼什么东西 数学题一个圆柱体高减少4厘米,表面积减少125.6厘米,它的体积是多少? 一个圆柱的高是10cm,若高减少4cm,则表面积减少125.6平方cm,求圆柱体的体积? 一个圆柱体如果它的高截短3厘米表面积减少94.2平方厘米它的底面半径减少多少体积减少多少 把一个圆柱体的高减少4厘米后,表面积减少50.24平方厘米,求减少部分的体积 从一个圆柱上截下一个高10cm小圆柱体.表面积比原来减少了188.1平方cm截下的圆柱的体积是多少 9、一个圆柱体,如果把它的高截短3厘米,表面积就减少94.2平方厘米.它的底面半径体积减少了( )立方厘米9、一个圆柱体,如果把它的高截短3厘米,表面积就减少94.2平方厘米.它的底面半径是( 一段圆柱体钢材,截去10cm长的一段后,表面积减少了314,体积减少了( ) 一个底面直径是8cm,高是16cm圆柱体从中间劈开后得到的图形,这个图形的表面积是多少? 一个圆柱体,如果把它的高截短3厘米,表面积就减少94.2平方厘米.它的底面半径是多少厘米?体积减少了多少立方厘米? 把一个直径是10CM的圆柱体沿直径纵向切开以后,表面积增加了100CM,原来这个圆柱的体积是多少立方厘米?把一个直径是8CM的圆柱体沿直径纵向切开以后,表面积增加了112CM,原来这个圆柱的体积是 一个底面直径是8cm,高是16cm的圆柱,如果它的高增加了10cm,它的表面积是多少? 一个圆柱体的底面半径是2cm,高5cm,它的侧面积是多少,表面积是多少,体积是多少列出算式 一个圆柱体的高是10CM,如果高减少4CM,则表面积减少125·6.原来圆柱的体积是()立方厘米.最好有算式 一个底面直径是8cm,高是16cm圆柱体从中间劈开后得到的图形,这个图形的表面积是多少?,说清每步 一个圆柱体的底面半径是4CM,高6CM,现在把这个圆柱体的高增加5CM,表面积和体积各增加多少? 一个圆柱体,如果把它的高截短3里厘米,表面积就减少94.2平方厘米,体积就减少了( )立方厘米? 把长2米的圆柱体木料锯成两段,表面积增加了6平方米,原来这个圆柱体的体积是() 一个圆柱体已知他的a=5cm h=2cm 求他的表面积和体积.(要有算式.) 一个圆柱体如果它的高截短3CM,表面积就减少94.2平方厘米,体积就减少了多少立方厘米 把一个高8分米的圆柱体割拼成一个与圆柱体等底等高的近似长方体后,表面积增加了24平方分米,把一个高8分米的圆柱体割拼成一个与圆柱体等底等高的近似长方体以后,表面积增加了24平方分 一个高为5CM的圆柱体,如果它的高增加3CM,那么它的表面积就增加18.84CM平方.原来的圆柱体的体积是多少? 一个圆柱体,如果把它的高截短2厘米,表面积就减少62.8平方厘米,体积就减少多少立方厘米?请把具体步骤都写一遍谢谢 把一个高8分米的圆柱体割拼成一个与圆柱体等底的近似长方体后,表面积增加24平方分把整个过程写下来 一个圆柱体的底面周长是31.4厘米,如果高增加2厘米 底面大小不变 那么表面积比原来增加了多少平方厘米一个圆柱体的底面周长是31.4厘米,如果高增加2厘米 底面大小不变 那么表面积比原来 把1张周长是80的圆柱体木柴锯成三段相等的圆柱,表面积增加了48平方厘米,原来的圆柱体木柴的体积是 把一个高8分米的圆柱体割拼成一个与圆柱体等底的近似长方体后,表面积增加24平方分米,原来圆柱体体积是多少 一个圆柱体的底面周长是31.4米,高增加2厘米,底面大小不变,则表面积增加了多少急用,明天就要 一个高5厘米的圆柱体,沿底面直径将圆柱体锯成两块,其表面积增加40平方厘米,原来这个圆柱的体积? 把一个高8dm的圆柱体,割拼成一个等底的近似长方体,表面积增加了24平方分米,圆柱体体积是多少? 一个圆柱体的底面周长是3.14cm,如多高增加2cm,底面大小不变,那么表面积比原来增加了多少?讲一讲,【必须列算式】 一个高为5厘米的圆柱,沿底面直径将圆柱锯成两块,其表面积增加了40平方厘米,原来这个圆柱的体积是() 圆柱体表面积公式是什么? 一个圆柱体底面周长是31.4厘米表面积是 408.2平方厘米这个圆柱的高是多少厘米? 一个圆柱体的体积是125.6立方厘米,底面直径是4厘米,它的侧面积是多少平方厘米?2.把一个棱长是6分米的正方体木块,削成一个最大的圆柱体,这个圆柱体的体积是多少立方分米? 求所有计算公式!和所有简算,还有求长方体正方体圆柱体圆锥体的表面积公式的体积公式!(包括字母公式)圆锥不求表面积.计算公式如:axb=bxa 一个圆柱体底面周长与高相等,若高减少3cm,表面积减少188.4平方厘米,求原来圆柱体体积. 一个圆柱体,高10厘米,如果高增加2厘米,它的表面积就增加12.56平方厘米,求这个圆柱的侧面积 圆柱体体积公式(字母)急.55555555 把一个长80厘米的圆柱体,沿与底面平行方向平均裁成4段,表面积增加了188.4平方厘米,求每段的体积.详细解说一下,看不懂. 一个圆柱体侧面积是62.8平方厘米,地面积是12.56平方厘米,它的表面积是多少平方厘米? 求圆柱体和圆锥体体积的公式 把一个长80厘米的圆柱体,沿与底面平行方向平均截成4段表面积增加188.4平方厘米求每段的体积 一个圆柱体,他的直径是10cm,高是10cm,它的表面积是多少? 圆柱体,圆锥体的表面积和容积公式分别是什么?请大家讲清楚点,还有我想知道这个公式几年级教的啊?答案能清晰点不,譬如圆柱体1 表面积2 容积(体积)圆锥体1 表面积2 容积(体积) 从一个圆柱体截下一段高为5CM的小圆柱后,表面积比原来减少188.4平方厘米,被截下的小圆柱的体积是多少 底面直径是4cm,高是10cm的圆柱体,表面积、侧面积和表面积分别怎么算? 圆锥体 体积 表面积 面积公式 圆柱体 体积 表面积 面积公式看好了 6个公式 已知圆柱体的直径是4厘米和高6厘米求它的表面积和体积 圆柱的底面半径是2厘米,高是5厘米,圆柱体的底面积\表面积\体积,分别是多少? 若上面圆柱表面积展开图中侧面的长是25.12cm,宽是10cm.本这个圆柱的表面积. 把长方体、正方体、圆柱体、圆锥体、球体分为两类为什么?请具体说明。如果考试?怎么办? 个高是10cm的圆柱,如果它的高减少2cm,表面积就减少18.84cm²,原来圆柱的体积是多少? 一个高为10cm的圆柱,如果他的高增加2cm,那么它的表面积就增加125.6平方厘米,求原来圆柱的表面积.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn