SDN交换机在云计算网络中的应用场景

SDN的技术已经发展了好几年了,而云计算的历史更长,两者的结合更是作为SDN的一个杀手级应用在近两年炒得火热,一些知名咨询公司的关于SDN逐年增加的市场份额的论断,也主要是指SDN在云计算网络中的应用。

关于SDN在云计算网络中的应用,目前有两个主要的流派,一个是VMware为代表的”软”派,另外一个则是以思科为代表的“硬”派。前者主要是指整个网络虚拟化方案的核心逻辑都是实现在服务器中的Hypervisor之上,物理网络只是一个管道;而后者则是指网络虚拟化的核心逻辑实现在物理网络中(主要边缘的机顶交换机,即TOR),只有交换机实现不了的部分才放到服务器或者别的专用设备中。这两种方案各有千秋,也各有粉丝。

但是世界从来都不是单极的,也不是两极,而是多极,现实网络中有很多各种非常规的需求,这些需求并不是靠这两个方案就可以解决的,或者说虽然他们能解决,但是不是最优的,包括实现难度、性能和价格。作为一个长期使用硬件SDN为用户提供解决方案的从业者,我在这里想来介绍一下现实世界中硬件SDN交换机是如何来解决一些云计算网络中的特定场景需求的,这些需求无论公有云还是私有云都可能会碰到,私有云(包括托管云)居多,因为定制的需求在私有云中更常见。

需要特别说明的是,这里的这些场景,用思科的ACI都可以做到,因为本质上ACI的思路也是用硬件SDN来支持网络虚拟化。但是由于很多用户因为各种原因并不想使用思科ACI(如价格太贵、厂商锁定、国产化趋势等),所以他们需要另外的方案(我并不是说ACI不好,相反,纯粹从技术的角度,我个人很欣赏ACI)。

云计算网络对SDN控制器和交换机的定制要求

很多人对SDN交换机在云计算网络中的应用都会有一些误解。最典型的误解有两个,一个是总有人问,你们用的控制器是哪个控制器?能跟OpenDayLight/Ryu/ONOS对接吗?另外一个则是,觉得只要拿一台SDN交换机来,就可以支持云计算网络场景,无论是哪个厂商的哪种SDN交换机。之所以有这两个误解,是因为很多人还没理解到SDN就意味着跟应用相关的定制,以为随便拿着一个通用的东西就可以来做云计算网络了。云计算网络作为一种特定的SDN场景,其控制器通常都是专门针对云计算这个场景设计的,功能单一,就是完成云计算网络的需求,甚至都可能没有显式的控制器,而是隐藏在云平台里面(比如直接实现在OpenStack Neutron Server中的代码逻辑)。这种场景中的控制器没法用作通用SDN控制器,反之,通用SDN控制器也没法直接用于云计算网络场景。至于第二个问题为什么说是误解,那也就很容易理解了,连控制器都需要为云计算场景定制,更不要说SDN交换机了。所以并非是随便拿一个SDN交换机过来就能支持云计算网络场景,而需要有专门的深度定制。比如我们盛科网络,就专门针对这个场景,设计了相应的控制器和交换机功能。

场景1:使用硬件SDN交换机提升性能

在这种场景中,用户使用Tunnel Overlay的方式部署网络虚拟化。但是由于vSwitch对Tunnel(VxLAN或者NvGRE)的操作对性能影响比较大(吞吐量偏低,延时偏大,抖动比较大,具体影响大小要看每个公司对它的实现和优化),所以这个时候可以借助SDN TOR交换机来进行tunnel offload,把对性能影响比较大的tunnel操作offload到SDN TOR交换机上,其它所有操作保持在服务器中不变,逻辑上可以认为SDN TOR交换机是vSwitch的扩展。如果更进一步,则可以把分布式东西向L3 Gateway也放到SDN TOR上,这样SDN TOR等于是深度参与到网络虚拟化中。

并非所有用户都认可这种模式,但是有人喜欢。目前这种场景我们已经在几个中小型的私有云和某著名IDC云中部署了,对这些云最大的帮助就是优良的性能和稳定性。数据流程见下图。

SDN交换机在云计算网络中的应用场景

场景2:使用硬件SDN交换机接入物理服务器

在不少人的理解中,以为云计算数据中心里面,所有的服务器都虚拟化了,实际上这个理解跟事实相去甚远,不仅在很多公有云和私有云中有大量物理服务器存在,甚至有些云里面物理服务器还占了大头。我接触到的绝大多数真正有大量客户实践的云,基本上都有这个需求。原因也多种多样,有的是现存的一些老的服务器没有虚拟化能力,有的是客户要跑一些非常消耗资源的应用,使用虚机性能太差或者性能不可预测,有的是客户的某些服务器是定制化的服务器,有的是出于安全考虑,从物理上就不想跟别人共享,还有的则是用户自带服务器,压根就不想云服务提供商来动,等等,总之原因是千奇百怪,但是都是客户真实需求。

对于这个需求,如果使用Vlan组网,那还是比较容易搞定的,不用SDN交换机也勉强可以,因为要做隔离的话,直接在普通交换机上配置Vlan就行了。但是一旦使用Tunnel,那问题就来了,Tunnel VTEP配置在哪里?有人说可以在服务器上只起一个虚机,然后也安装vSwitch,这样当然也可以做,但是性能受损,不是客户希望的,相当于欺骗客户;还有人说专门设计一个特殊的vSwitch,安装在服务器上,这样理论上肯定也行,但是工作量就大了(不仅仅是设计这个vSwitch的工作量,还有云平台控制的工作量),一般人搞不定。更何况,如果是用户自带设备根本不想你去动,这两种办法都行不通。对于这个场景,包括VMware在内的很多专业网络虚拟化解决方案提供商,一般的做法都是通过一台硬件SDN交换机作为VTEP Gateway,来将这些物理服务器接入到虚拟网络中去,物理服务器不需要做任何事情。而且这种场景对作为VTEP Gateway的SDN交换机来说,还有一个比较重要的要求,是目前用某大牌交换芯片的所有交换机都做不到的,那就是需要交换机既能支持Tunnel bridging,也能支持Tunnel Routing(否则没法做分布式L3 Gateway),当前用该大牌芯片的交换机只能支持前者,无法支持后者。思科的ACI之所以能支持后者,是因为他们用了自己一颗芯片。当然,该芯片提供商后面的芯片据说会解决这个问题。

盛科网络的SDN交换机,用的是自研交换芯片,从第一代芯片开始就支持Tunnel bridging & routing。 目前针对这个场景的SDN交换机已经大量部署和即将部署在多个公有云中。该场景架构见下图(注:SDN的控制协议未必是OpenFlow,也可以是私有协议)

SDN交换机在云计算网络中的应用场景


场景3:使用硬件SDN交换机接入硬件防火墙

云计算网络中使用硬件防火墙,这个很常见。特别是企业私有云,托管云,甚至公有云里面也有。很多用户明确提出,我原来用我的硬件防火墙用得很好,你要让我上云可以,一定要把我的硬件防火墙用起来。那问题就来了,以前在传统网络中,用户数据想经过防火墙,很简单,把防火墙串接在网络出口或者配置一个ACL把流引过去就可以了。但是在云计算的网络里面,有可能某个防火墙只是为某几个用户或者某一组应用服务的,甚至这个防火墙压根就这个用户自带的,你不能把它物理上串接在网络出口,必须要将流量引到放在某个机柜的防火墙上,但是这个时候用传统ACL不合适,因为VM是动态产生的,策略也可能动态变化,你需要动态在交换机上配置ACL。用什么来做最合适?毫无疑问是SDN交换机,动态策略跟随,本来就是SDN的强项,思科的ACI最核心的东西就是动态策略跟随。

如果云计算网络中使用了Tunnel,那问题会更麻烦,因为很多硬件防火墙不支持Tunnel,必须要有另外一个地方终结Tunnel,然后将Tunnel转换成Vlan送到防火墙,谁来做这个事情最合适?毫无疑问,那就是支持Tunnel的SDN交换机。

有人说这样的话防火墙仍然会受4K Vlan的限制。其实不然,因为Tunnel向Vlan转换的时候,这里的Vlan可以是每端口唯一的,而不需要是全局唯一的。当然,这个也需要交换机能支持才行。盛科的SDN交换机就可以很好地支持这个需求。

场景4:使用硬件SDN交换机支持多个Hypervisor混合组网

说是多个Hypervisor,其实最多的还是说VMware跟其它Hypervisor的混合组网。因为无论是KVM还是Xen,那些开源的云平台或者第三方中立的私有云平台都能支持得很好,云平台可以完全控制这些Hypervisor。但是VMware是一个闭源的Hypervisor,没办法随心所欲控制。很多客户都用了VMware以前的老产品,现在VPC比较热,无论是赶时髦也好,还是真的有需求也好,他们都想能支持VPC,特别是基于Tunnel Overlay的VPC。有人说,那好办啊,VMware不是有NSX专门来干这事吗?尽管它提供了对OpenStack的driver,但是NSX非常贵,一般客户用不起或者觉得不划算。这些客户要引入一些开源的KVM,XEN,但是又不想丢弃以前的VMware,还想让这些Hypervisor一起组成VPC网络。那怎么办呢?

一个有效的解决方案就是使用SDN交换机接入使用了VMware的服务器,云平台调用vCenter的接口配置VMware,使用Vlan标识租户的network,然后在SDN交换机上,将Vlan转换成Tunnel,如果要让VM的流量送到防火墙去做过滤,也都可以通过SDN交换机去做。该方案已经由我们的一个行业云服务提供商合作伙伴成功在其行业客户中部署,该行业客户群大量使用了VMware产品。而且我们发现有类似需求的私有云很多,说白了就是不想花钱买NSX,而又想有某些NSX的功能。该方案架构见下图。

SDN交换机在云计算网络中的应用场景

场景5:使用硬件SDN交换机按需部署Vlan

这个场景不算是刚需,有些客户不在乎,但是也有客户在乎。当前很多小型私有云中,还是使用了Vlan的组网方式,毕竟简单易部署,且性能好。但是用Vlan来组网除了扩展性不如Tunnel Overlay之外,它还有另外一个小问题,因为VM可以随便迁移,而每个VM都绑到一个特定Vlan,当VM迁移走的时候,Vlan也需要跟着迁移。而在Vlan组网的方案里面,Vlan必须对中间的物理网络可见,这就意味着交换机端口上的Vlan配置要经常动态变化。为了规避这个问题,现在一般的做法都是预先把所有可能用到的vlan在所有的交换机的所有端口上都全部使能。这样带来的问题是,所有广播(如ARP/DHCP)、组播、未知单播的报文每次都会被发送到整个物理网络的所有服务器上,最终在服务器里面才丢弃,这种做法一方面浪费了带宽,另外一方面也有潜在的安全问题。

对于这种问题的一个很简单的解决方案就是引入SDN交换机,动态按需去配置Vlan。

总结

张卫峰(盛科网络SDN云计算CTO 兼 软件研发部门总监,《深度解析SDN》一书作者。):对于SDN交换机在上述场景中的应用,用一句话来总结,就是运用之妙存乎一心。现实中的需求真的是千奇百怪,我这里列出来的还都是相对有一些共性,大家容易理解的需求。还有一些一般人理解不了的,甚至我都无法理解的需求,都还没列出来。面对这些需求的时候,通常你是别指望用常规手段能去解决,而SDN,或许就能帮你一臂之力,这也许就是SDN的魅力之一吧。当然,这里说的SDN交换机,不一定是OpenFlow交换机,更多的时候,通过在传统交换机里面引入一个Cloud Agent,提供开放的API(JSON RPC或者REST API),也许是一种更好的接地气的实现方式,因为它天然可以跟传统网络无缝对接,并且不需要对汇聚和核心设备有任何特殊需求,这是我们在千百次的实践中总结出的宝贵经验。


作者:张卫峰

来源:51CTO

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql server 里面怎么支持数字使用双引号_国查:用中文编写SQL

这两天被 文言(wenyan-lang)刷屏了,这个项目在于使用文言文进行编程,我打算蹭个热度,把年初的作品再捞一捞,即中文SQL。1. 文言Wenyan:吾有一數。曰三。名之曰「甲」。為是「甲」遍。吾有一言。曰「「問天地好在。」」…

七日掌握设计配色基础_掌握正确的基础知识:如何设计网站的导航,搜索和首页...

七日掌握设计配色基础by Anant Jain通过Anant Jain 掌握正确的基础知识:如何设计网站的导航,搜索和首页 (Get the basics right: how to design your site’s navigation, search, and homepage) 一个7分钟的指南,使这三个基础组件正确无误。…

python渲染光线_python模板渲染配置文件

python的mako、jinja2模板库,确实好用!这里做个笔记,好记性不如烂笔头。#!/usr/bin/env python#encodingutf-8import sys,yaml # 配置文件使用yaml格式from mako.template import Template # 加载mako库的Templat…

leetcode114. 二叉树展开为链表(深度优先搜索)

给定一个二叉树,原地将它展开为一个单链表。例如,给定二叉树1/ \2 5/ \ \ 3 4 6 将其展开为:1\2\3\4\5\6代码 class Solution {public void flatten(TreeNode root) {flat(root);}public TreeNode flat(TreeNode root) {if(rootnull)…

eclipse新建web项目

需要点击File—>New—>Other…在Web文件夹下找到Dynamic Web Project—>Next修改server端口可以在启动项目后访问地址是端口号项目名转载于:https://juejin.im/post/5cb4999df265da037b610545

idea tips

AltInsert 自动出现generate ,,里面有构造方法,getter,setter... CtrlO,重写方法 CtrlI...自动出现接口的方法 转载于:https://www.cnblogs.com/bin-lin/p/6247538.html

革新以太网交换机架构 全光网络的风刮进园区

全光网络的风正在刮进园区网,众所周知,光纤入户发展迅速,随着PON(无源光纤网络)技术在运营商通信网络的大规模使用,PON相关产业链逐步成熟,这也使得PON技术逐步在企业园区网得到应用。 基于铜线…

mysql loop循环实例_MySql CURSOR+LOOP循环-使用小实例

转载自https://blog.csdn.net/starinbrook/article/details/77078126转载自https://blog.csdn.net/makang456/article/details/53896346/【简介】游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标充当指针的作用。尽管游标能遍历结果中的所有行&am…

react数据从本地读取_如何将从Google表格读取的React应用程序部署到Netlify

react数据从本地读取In this tutorial, we’re going to cover how to connect to a spreadsheet hosted on Google, display that information inside a React application, and deploy it to Netlify.在本教程中,我们将介绍如何连接到Google托管的电子表格&#x…

leetcode743. 网络延迟时间(迪杰斯特拉算法)

有 N 个网络节点,标记为 1 到 N。 给定一个列表 times,表示信号经过有向边的传递时间。 times[i] (u, v, w),其中 u 是源节点,v 是目标节点, w 是一个信号从源节点传递到目标节点的时间。 现在,我们从某个…

在线python视频教程_【好程序员】2019 Python全套视频教程2

2019千锋好程序员全新Python教程,深入浅出的讲解Python语言的基础语法,注重基本编程能力训练,深入解析面向对象思想,数据类型和变量、运算符、流程控制、函数、面向对象、模块和包、生成器和迭代器。教程列表:千锋Pyth…

洛谷——P1546 最短网络 Agri-Net

P1546 最短网络 Agri-Net 题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。 题目描述 约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享…

漫谈单点登录(SSO)(淘宝天猫)(转载)

1. 摘要 ( 注意:请仔细看下摘要,留心此文是否是您的菜,若浪费宝贵时间,深感歉意!!!) SSO这一概念由来已久,网络上对应不同场景的成熟SSO解决方案比比皆是&…

mysql mdl 锁_MySQL MDL锁

MDL全称为metadata lock,即元数据锁。MDL锁主要作用是维护表元数据的数据一致性,在表上有活动事务(显式或隐式)的时候,不可以对元数据进行写入操作。因此从MySQL5.5版本开始引入了MDL锁,来保护表的元数据信息,用于解决…

Card Game Again CodeForces - 818E (双指针)

大意: 给定序列, 求多少个区间积被k整除. 整除信息满足单调性, 显然双指针. 具体实现只需要考虑k的素数向量, 对每一维维护个指针即可. 这题看了下cf其他人的做法, 发现可以直接暴力, 若当前的前缀积模k为0, 暴力向前求出第一个后缀积为0的位置即可, 复杂度是$O(n)$的并且相当好…

pacf和acf_如何通过Wordpress API,ACF和Express.js使Wordpress更加令人兴奋

pacf和acfby Tyler Jackson泰勒杰克逊(Tyler Jackson) 如何通过Wordpress API,ACF和Express.js使Wordpress更加令人兴奋 (How to make Wordpress more exciting with the Wordpress API, ACF, & Express.js) I’ve been working with Wordpress since it’s pr…

python运行出现数据错误_Python运行出错情况

1、错误内容:You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory str). It is highly recommended that you instead just switch your application to Unicode strings.错误描述&#x…

leetcode95. 不同的二叉搜索树 II(递归)

给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 。示例:输入:3 输出: [[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3] ] 解释: 以上的输出对应以下 5 种不同结构的二叉搜索树…

数据结构探险系列—栈篇-学习笔记

数据结构探险—栈篇 什么是栈? 古代栈就是牲口棚的意思。 栈是一种机制:后进先出 LIFO(last in first out) 电梯 栈要素空栈。栈底,栈顶。没有元素的时候,栈顶和栈底指向同一个元素,如果加入新元…

MYSQL远程登录权限设置 ,可以让Navicat远程连接服务器的数据库

Mysql默认关闭远程登录权限,如下操作允许用户在任意地点登录:1. 进入mysql,GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY WITH GRANT OPTION;IDENTIFIED BY后跟的是密码,可设为空。2. FLUSH privileges; 更新Mysql为了安…