网络虚拟化之FlowVisor:网络虚拟层(下)

在前面两篇文章:网络虚拟化之FlowVisor:网络虚拟层(上)网络虚拟化之FlowVisor:网络虚拟层(中)中分别介绍了FLowVisor的特性和实现,三连载的最后一篇介绍虚拟网络的隔离机制。

虚拟化的一个重要元素是切片之间的隔离,因为不同资源的隔离机制是不相同的,接下来将分别描述。

1. 带宽隔离

FLowVisor可以通过标记数据包的VLAN优先级比特位来利用现存的交换机带宽隔离特性。VLAN标签拥有三个比特域,PCP(VLAN Priority Code Point)有一个将数据包映射到八个优先级队列中的其中一个的标准机制,OpenFlow协议里面有对VLAN标签和优先级比特的管理,所以可以给流中的所有数据包一个优先级。

因为,为了增强带宽隔离,FLowVisor重写了所有切片的转发表,加了一个“set VLAN priority”的操作,将优先级置为八个优先级队列中的某一个,一个虚拟网络实例中的所有流根据资源分配策略映射到相应的流组(流组需要网络管理员通过CLI定义)

使用VLAN PCP比特位并不是FLowVisor所固有的,而是为了和商用硬件协调工作所选择的短期变通方案。

2. 拓扑隔离

控制器通过OpenFlow协议发现网络中的结点和链路,在非虚拟网络中,当一个网络设备连接到控制器的TCP监听端口的时候,控制器就可以发现这个设备。FLowVisor作为交换机和控制器中间的一个代理,他只代理用户虚拟网络中的交换机和控制器的连接,同理,用于罗列交换机所有物理端口的OpenFlow消息,也会被FLowVisor拦截,修改为只有虚拟网络中有的端口。

需要注意的是LLDP消息的处理,在提高SDN控制器的拓扑发现性能(通过改进逻辑)这篇文章中我已经解释了SDN网络中拓扑发现原理和LLDP数据包的详解,这个消息他有特定的格式,所以FLowVisor拦截住这个消息,给其打上标签,标签为虚拟网络号,当他们再被交换机收到传送到控制器的时候,可以根据标签发送到相应的虚拟网络。

3. 交换机CPU隔离

商用交换机上的CPU都是典型的低功耗嵌入式处理器,因此很容易过载,在大多数交换机硬件中,一个高负载的CPU会导致严重的网络破坏。比如,一个CPU高负载的情况下,硬件转发数据会继续进行,但是交换机会停止响应控制器的OpenFlow请求,导致LLDP链路发现协议超时,让交换机误以为网络连接非常不稳定,网络变得不可用。

交换机的CPU负载主要被下面四种程序瓜分,这四个负载来源需要不同的隔离机制:

  1. 产生新流到达的消息:在OpenFlow交换机中,如果一个数据包无法匹配流表,就会向控制器发送PacketIn消息,这个过程消耗了一部分处理资源,如果新流比较多,消息产生很频繁,CPU资源就会耗尽。为了防止饿死,FLowVisor会追踪新流产生的消息到达速率,如果速率超过了阈值,FLowVisor插入一条转发流表规则在一个时间段内丢弃所有的数据包,就这样,FLowVisor利用OpenFlow协议限制了新流的速度。
  2. 处理控制器的请求:对于每个虚拟网络实例,FLowVisor通过限制OpenFlow消息速率来限制CPU消耗,因为不同类型的消息消耗不同的CPU资源,因此这个工作现在还略显不足。
  3. “慢路径”转发:除了很快的专用的硬件转发路径,数据包通过“慢路径”转发,这当然会消耗一部分CPU资源,而这个消耗显然是不确定的。FLowVisor通过重写多个转发规则,将他们分开,分别为为一次数据包转发事件来防止控制器一次插入多个“慢路径”转发规则,比如OpenFlow的PacketOut消息,他可以一次下发很多转发规则,但是FLowVisor可以拦截,将其分为多个。这样,“慢路径”数据包会通过上面提到的两条机制:新流产生的消息和控制器的请求来限速。
  4. 维持内部状态:所有的网络设备会使用CPU去更新他们的内部计算器、处理事件等等,所以必须留有足够的CPU给交换机“记账”。FLowVisor通过限制上面三点的CPU消耗来保障交换机有足够的资源执行内部功能。

和带宽隔离一样,CPU隔离机制不是FLowVisor固有的设计,更像是一个解决现在硬件抽象问题的应急措施,这个方面未来还需要做很多工作。

4. 流空间隔离

每个虚拟网络只能处理他们流空间中的数据流,FLowVisor对OpenFlow消息进行重写,确保每个切片之恩那个控制他自己的流,不能影响别的切片的流。当然,不是所有的规则都能够被重写来满足某个切片的流空间,FLowVisor只能让规则更加详细精确,比如在网络虚拟化之FlowVisor:网络虚拟层(中)这篇文章中用于描述FLowVisor工作原理的例子中,如果Bob的控制器想创建一个规则去影响所有的流,FLowVisor应该重写规则让其只影响TCP数据流。但是FLowVisor不会重写影响22端口的数据流的规则,让其只影响80端口(TCP数据流),在这种情况下,FLowVisor会给控制器发送一个错误消息。

5. 流表项隔离

FLowVisor会统计每个虚拟网络使用的流表项数目,确保其不会超过一个预先给定的值。对于控制器插入到交换机的的每个规则,FLowVisor会给其计数器加一,如果某个流表到期失效,计数器会减一。由于硬件约束,一些交换机会内部扩展规则来满足多个输入端口,FLowVisor需要处理这个情况。OpenFlow协议为FLowVisor协议提供了一个机制来精确的列出交换机中的所有流表项,当控制器超出了流表项预先给定的值,任何新的规则插入都只会收到“table full”的错误提醒消息。

6. OpenFlow控制通道隔离

除了上面提到的所有物理资源外,OpenFlow控制器通道本身也必须虚拟化和隔离。比如,OpenFlow协议中的所有消息包含一个独一无二的传输ID,FLowVisor必须重写这些传输ID以确保不同控制器的消息不会使用同一个ID,类似的,如果一个数据包的处理需要交换机做决定,需要先将数据包存储在交换机队列中,OpenFlow协议使用一个32位的整数去标识这个队列中的不同数据包。FLowVisor需要确保每个交换机只能访问交换机队列中他自己的数据包。

到这里,将FLowVisor的由来,实现原理,隔离机制都分析了一遍,对于未来网络中必不可少的虚拟层有了一些了解和新的想法思路,我相信,书和论文是拓展思路的不二法门,相信FLowVisor只是网络虚拟层的一个先驱,未来将会有更加完善,更加功能强大,更加智能化的系统产生,希望自己能够在这些方面有所贡献。

时间: 2024-10-16 16:02:00

网络虚拟化之FlowVisor:网络虚拟层(下)的相关文章

删除Windows中隐藏的物理网卡和网络虚拟化失败后的虚拟网卡

Windows环境下,在更换硬件服务器主板和网卡等硬件.恢复操作系统或者网络虚拟化失败后,可能会出现网卡方面的问题.例如,设备管理器中多了不应该存在的网卡:因命名冲突无法重命名当前网络连接:IP地址冲突却找不到那个与之冲突的网卡:网络虚拟化失败后出现无法删除的虚拟网卡等等.下面我们就来总结一下如何删除这些可见或不可见的Ghost一样的网卡. 一.识别各类网络设备和网络连接 由于网络虚拟化会在物理机上新增许多虚拟网络设备(包括虚拟网卡),情况会变得复杂,因而首先我们需要分清他们.当然如果没有进行网

网络虚拟化—互联网的下一波革命

boxi • 2012-04-20 07:33 转自 36氪 编者注:最近几天开放网络峰会(Open Networking Summit)的召开掀起了一股软件定义网络(SDN)和OpenFlow的报道热潮.很多人相信,软件定义网络和OpenFlow主导的网络虚拟化必将 引发互联网的下一场革命.本文介绍这一行业的领军者之一,Nicira.其CTO Martin Casado是OpenFlow协议的第一份草案的撰稿人. 成立于5年前的Nicira被 认为是硅谷 最吸引人的初创企业.简单来说Nicir

从SDN鼻祖Nicira到VMware NSX 网络虚拟化平台的简单探讨

以前的大二层技术,一般是在物理网络底层使用IS-IS路由技术,再在此基础之上,实现数据中心网络的二层扩展,如公有的Trill.SPB技术和Cisco私有的OTV.Fabricpath技术:前沿一些的网络虚拟化技术,使用了VXLAN.NVGRE等协议,突破VLAN和MAC的限制,将数据中心的大二层网络扩展的更大.而使用VMware NSX,则更进一步--我们可以对网络提供已对计算和存储实现的相同虚拟化功能.就像服务器虚拟化可以通过编程方式创建.删除和还原基于软件的虚拟机以及拍摄其快照一样,NSX网

Hyper-V 网络虚拟化技术细节

Hyper-V 网络虚拟化技术细节 适用对象:Windows Server 2012 R2 服务器虚拟化能让多个服务器实例在同一台物理主机上同步运行,但各个服务器实例都是相互独立的. 每台虚拟机的运作本质上就像是只有这一台服务器在该物理计算机上运行. 网络虚拟化也有类似的功能,即多个虚拟网络基础结构在同一个物理网络上运行(可能有重叠的 IP 地址),而且每个虚拟网络基础结构的运作就好像只有这一个虚拟网络在此共享的网络基础结构上运行. 图 1 显示了此关系. 图 1:服务器虚拟化与网络虚拟化对比

网络革命:软件定义网络与网络虚拟化

发表于2014-08-28 14:49| 5691次阅读| 来源OpenStack中国社区| 13 条评论| 作者郑晨 摘要:虽然现在SDN或网络虚拟化还没有达到预期的高度,但对于IT从业者来说,拥抱这些技术永远都不算早,目前以太网在每一个数据中心中扮演者举足轻重的角色,但SDN厂商们正在摩拳擦掌准备迎接下一场网络革命. [编者按]网络经过多年的发展,已经来到“后Cisco”时代,软件定义网络.网络虚拟化等名词已经来到大家眼前,本文中着重介绍了传统网络架构与SDN网络的异同,网络虚拟化的发展状况

云计算中心的网络虚拟化

云计算中心面对多租户的需求,需将不同租户的网络进行隔离,租户之间无法获取到不属于自己的网络流量,防止恶意租户的攻击.租户流量泄漏.同时还需满足虚拟机迁移的需求,实现网路通信的不中断. VLAN 传统的网络隔离方法,有VLAN方式.通过在数据帧上添加上VLAN标签(0-4096),并对网络交换机进行配置,规定交换机的哪些端口转发哪些VLAN标签的数据,完成虚拟网络的建设,实现不同租户数据的隔离. 不足:面临云计算虚拟化环境,物理服务器上可能运行着多个租户的虚拟机,导致会出现一个端口映射了多个VLA

网络虚拟化

网络虚拟化技术OpenVSwitch:虚拟交换机VLAN, VXLAN虚拟路由器 什么是VLAN?Virtual LAN:LAN即为广播帧到的节点范围,也即能够直接通信的范围: VLAN:基于MAC地址基于交换机Port实现基于IP地址实现基于用户实现 交换机接口的类型:访问链接:access link汇聚链接:trunk link VLAN的汇聚方式:IEEE 802.1qISL:Inter Switch Link VLAN间路由:路由器:访问链接:router为每个VLAN提供一个接口汇聚链

图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN

Linux的网卡驱动中内含了很多"虚拟网卡".早先的文章曾经详细分析过tun,ifb等虚拟网卡,类似的思路,在虚拟化大行其道的趋势下,Linux源码树中不断增加对"网络虚拟化"的支持,不光是为了支持"虚拟机"技术,更多的是给了用户和程序员更多的选择.       这些对网络虚拟化的支持技术包括任何重量级的虚拟化技术,比较重的比如对虚拟机技术的支持,轻量级的则是net namespace技术.近期的工作基于net namespace技术,关于这个技

[转]数据中心网络虚拟化 隧道技术

http://www.sdnlab.com/12077.html SDNLAB 如何实现不同租户和应用间的地址空间和数据流量的隔离是实现数据中心网络虚拟化首先需要解决的几个问题之一.所谓地址空间的隔离是指不同租户和应用之间的网络(ip)地址之间不会产生相互干扰.换句话说,两个租户完全可以使用相同的网络地址.所谓数据流量的隔离是指任何一个租户和应用都不会感知或捕获到其他虚拟网络内部的流量.为了实现上述目的,我们可以在物理网络上面为租户构建各自的覆盖(overlay)网络,而隧道封装技术则是实现覆盖