博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网络虚拟化技术
阅读量:5775 次
发布时间:2019-06-18

本文共 3585 字,大约阅读时间需要 11 分钟。

网络虚拟化似于server虚拟化,能够在一个物理网络上创建多个虚拟网络。网络虚拟化出现的时间并不长,是随着IaaS的出现而出现。
IaaS中的核心技术是虚拟化,包含server虚拟化,存储虚拟化和网络虚拟化。当中server虚拟化和存储虚拟化出现的时间远远早于IaaS的概念,能够说非常成熟,有非常多产品。成熟的关键标识就是行业巨头(们)的出现。行业巨头通常会占领绝大多数的市场份额。有一个结论是,在IT行业。行业的前两名会占领80%以上的市场份额。
网络虚拟化出现的时间并不长。市场没有出现行业巨头。另外眼下网络虚拟化的市场应该还处在开发阶段。应该还没有非常多用户開始在自己的IT基础设置中施行网络虚拟化。只是随着IaaS的逐渐推广,网络虚拟化也会随之普及。

当前的网络虚拟化处于一个群雄并起的阶段,终于谁能赢得战争犹未可知。

眼下的网络虚拟化技术主要有这么几种:
VEB技术,代表产品是OpenvSwitch,背后是VMware
VEPA技术,背后是HP,Juniper,brocade等
vn-tag技术。背后是Cisco
二层(L2)网络拓扑结构
本文讨论的网络指二层网络,L2网络拓扑主要有flat和vlan两种:
flat:
平坦结构。全部接入网络的节点(node)都处于单一的地址空间中。网络节点之间能够互相通信。一个节点能够和网络中的随意节点通信。
vlan:
网络被划分为若干个地址空间,每一个地址空间形成一个vlan。

vlan形成了一个二维地址空间。(vlan id, mac address)。仅仅有出于一个vlan中的节点才干互相通信,vlan实现了一定程度的网络隔离。

vlan的上限是4094个,对于私有云来说是足够的,但对于公有云则不足。业界又有了vxlan,gre等技术来克服vlan的数量限制。

网络虚拟技术所解决的问题
一个是虚拟接入:
将虚拟机接入到接入交换机中。而且交换机能够识别虚拟机。

目标是交换机能够像管理物理机一样管理虚拟机,包含配置网络策略,监控虚拟机流量等。传统交换机对物理机的管理,都能够应用到虚拟机上。眼下的交换机中是无法实现对虚拟机的管理的。

关键问题是数据帧不能发往收到改数据帧的port。这个限制是STP协议的主要规则,而传统交换机都是採用STP协议工作的。

虚拟环境中,一个交换机port(port)上能够接入多个虚拟机(传统方式中,一个port仅仅能接入一台物理机,port和物理机一一相应),当这些虚拟机之间须要通信的话,导致该port接受的数据帧被发往该port,违背了STP原则。后面会介绍眼下的 技术方案怎样解决问题。

虚拟通道
解决怎样让虚拟机连到物理接入交换机上。

虚拟机无法直接连接到接入交换机。眼下的多种虚拟化结束中,都 採用一种叫做虚拟交换机(VEB。virtual ethernet bridging)的方式来实现虚拟机到接入交换机的连接

VEB能够通过软件或硬件方式来实现。

软件VEB
软件VEB能够直接实如今Hypervisor中,也能够独立于Hypervisor独立实现。

前者如Vmware exsi, MS hypervisor等,后者如linux bridge。open vswitch等。

系统上的全部虚拟机接入虚拟交换机,虚拟交换机通过本机网卡接入交换机。一个系统中能够存在多个虚拟交换机,虚拟机也能够接入不同的虚拟交换机来实现不同的网络拓扑结构和网络隔离。

硬件VEB
有些虚拟软件中支持bypass with Harware 功能,这个就是指硬件VEB。硬件VEB通常在网卡上实现(SR-IOV(Single Root I/O Virtualization)技术),虚拟机直接接入网卡提供的port。
硬件VEB比软件VEB有更好的转发效率和转发延迟,同一时候有更低的CPU占用率。

以下谈谈主流的网络虚拟化技术:
VEB技术:
VEB技术攻克了前面所说的虚拟通道问题,但没有解决虚拟接入问题。採用VEB技术,传统的接入交换机还是无法对虚拟机进行管理,识别虚拟机流量。VEB技术不在使用传统交换机进行虚拟机管理,而是全然採用虚拟交换机代替传统交换机的角色,传统交换机仅仅用来承载流量。
这样的方案採用虚拟交换机解决虚拟接入问题,採用VEB解决虚拟通道问题。
VEB依据数据帧目的地址决定怎样处理:
该目的地址是该节点上的还有一台虚拟机。直接转发;
是其它节点上的虚拟机,通过物理网卡转发L2网络上,这个虚拟机所在节点的VEB会接受该数据包并转给虚拟机。
VEB技术的代表是Open vswitch。Open vswitch中全然採用虚拟交换机(open vswtich)对虚拟交换机进行管理和流量控制,传统的物理交换机仅仅用来连接个网络节点。

物理交换机的角色类似于传统的集线器(Hub),其上不在进行不论什么网络配置(这导致了VEB无法和已有的L2网络配置兼容)。Open vswitch本身提供了强大的功能来替代传统的物理交换。支持多种管理界面包含远程管理等,支持openflow协议。能够參考Open vswitch官网站点。

VN-Tag技术:
由cisco提出的技术方案。基本思想是在传统的以太网数据帧中增加一个新的标签(vn-tag)以便让物理交换机识别虚拟机并进行管理。
这样的方案中採用vn-tag技术解决虚拟接入问题,採用VEB解决虚拟通道问题。
VEB对虚拟机发出的数据帧加入vn-tag。然后发送到接入交换机。

接入交换机依据vn-tag决定数据转发目的地。目的地上的VEB依据vn-tag转发数据到对应的虚拟机上。

这样的方案中,须要通信的两台虚拟机即使都在一台物理机上。他们的数据交换也须要经过接入交换机处理。VEB能够通过软件或硬件方式实现。在vn-tag方案中。这个VEB被叫做port extender,仅仅提供虚拟通道。不在处理路由寻址。

这项技术主要包含例如以下设备:
vn-tag网卡,用来实现VEB(port extender)。
vn-tag交换机,管理虚拟机,识别虚拟机流量。

支持vn-tag技术的hypervisor,将虚拟机虚拟网卡接入到vn-tag网卡中。眼下vmware的产品能够支持vn-tag网卡。
vn-tag对现有的数据帧做出了改变,所以这套技术和眼下的L2网络无法兼容。

眼下的交换机不能识别vn-tag数据帧。cisco已经将这项技术提交成了技术标准802.1BR - Bridge Port Extension http://www.ieee802.org/1/pages/802.1br.html

VEPA技术:
由HP提出的技术方案,全称是virtual ethernet port aggregator。vepa包含了标准版和增强版。

标准版
标准版没有实现虚拟接入技术。交换机无法识别虚拟机。标准版同意接入同一个port的虚拟机之间通过该port实现数据交换。不在须要VEB实现数据交换。标准版通过改写STP协议,同意来自同一个port的数据被转发回去,叫做发卡弯。

标准版对现有的数据帧没有改动,仅仅要升级VEB和交换机的软件,就能够实现。vepa不须要採购新的网络设备。仅仅须要升级软件就可以。
增强版
实现对虚拟机的管理和流量监控。

vepa的思路也是利用在数据帧中添加标签还识别虚拟机。可是vepa利用了已有的技术标准,而不是引入新的标签。vepa採用了802.1ad标准在vlan标签外添加了S-Tag。以实现虚拟机识别。

这个技术能够实现vn-tag的一切功能。有点还是不须要採购新的网络设别,仅仅须要升级软件就可以。

为了使用vepa,也须要对应hypevisro的支持。

linux中的macvtap驱动能够支持vepa技术。http://virt.kernelnewbies.org/MacVTap

vepa也有对应的技术标准提交,
802.1Qbg - Edge Virtual Bridging
http://www.ieee802.org/1/pages/802.1bg.html
除了HP。该阵营还有诸如juniper,brocade的支持。
本文仅仅是简要介绍了网络虚拟化技术。如需深入了解,还请查找对应资料。这几种技术之间的战争仅仅是刚刚開始,尤其是vepa和vn-tag之间的交锋。
參考书
云计算和大数据时代网络技术揭秘 徐立冰著,文中的图片均来自此书。
补充资源,大家能够看看这篇文章
本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5382678.html,如需转载请自行联系原作者
你可能感兴趣的文章
Dzz任务板初版完成笔记-仿trello私有部署的一款轻量团队任务协作工具。
查看>>
线程基础8-quene讲解
查看>>
echarts - 使用echarts过程中遇到的问题(pending...)
查看>>
C语言字符串与字符数组
查看>>
Asp.net MVC 生成zip并下载
查看>>
POJ-2996 Help Me with the Game 模拟
查看>>
POJ-2676 Sudoku 搜索
查看>>
安装arm-linux-gcc-4.3.2
查看>>
Clear all username or password for login.
查看>>
configparser模块
查看>>
day_05、迭代器、生成器
查看>>
网络对抗技术 实验四 恶意代码技术
查看>>
2012寒假后半部分计划
查看>>
java.lang.IllegalArgumentException: Minimum column number is 0
查看>>
MongoDB学习笔记一 MongoDB安装
查看>>
Java基础学习总结(21)——常用正则表达式列表
查看>>
DB2 触发器使用1
查看>>
Professional Frontend Engineering
查看>>
C++ Primer Plus 笔记第十章
查看>>
浅谈线段树
查看>>