深入浅出Hyper-V网络虚拟化技术

运维 系统运维
本文主要从操作系统层面入手,概要性的总结一下Hyper-V网络虚拟化技术。最近几天利用system center 2012 R2做了个demo,其中也涉及到了网络虚拟化这块,把遇到的经验和问题和大家做个分享。

年后综合症刚刚消失殆尽,转眼就要迎接各种新的工作任务了;之前写过一篇有关hyper-v网络虚拟化内容的博文,主要是从操作系统层面入手,概要性的总结了一下,基本也都是参考了大部分官方内容再加以个人修饰;最近几天利用system center 2012 R2做了个demo,其中也涉及到了网络虚拟化这块,于是乎打算把遇到的经验和问题和大家做个分享,因为“SDN(软件定义网络)”包含的信息量挺大的,所以我会按三个章节来写,循序渐进。


接下来的内容与之前最大的区别在于把操作转向system center并通过SCVMM来实现网络虚拟化,凸显出这套产品在私有云管理方面的强大之处。

那么说道网络虚拟化,就不得不提及SCVMM的几个关键概念:

1.物理网络
2.逻辑网络
3.VM网络
4.VM子网

下图是我本人理解的一个面向租户的场景,用户A通过自助服务的途径来申请并获取他想要的网络资源,对应到SCVMM里面就是VM network,然后VM子网就不难理解了,它实际上是用户自行在独享的VM network所做的分配,也就是说VM subnet中的IP资源才是最终呈现出来的可见网络,或者你也可以把它视为整个网络延伸的终点,但是从大的角度来说,VM network就可以说是直接交付给用户的最终产物了。

我们接着往后看,VM network是构建在逻辑网络之上的,逻辑网络对用户来讲是不可见的,当然它是面向后台管理者的,逻辑网络存在的最大意义在于,它是用来修饰最底层物理网络的;举个简单的例子,比如你一台服务器单网卡想做个虚拟化环境这没问题,但是由于资源有限,带宽有限,你所有的流量负载都要经由一个网卡和一条链路,但是你可以通过多个逻辑网络命名来区别不同的业务,例如:研发组网络、测试组、运维。。等等,他们虽然在本质上共享同样的资源,但是你可以通过逻辑网络来进行区分,并且针对逻辑网络做限制和管理,例如QOS等等。

有的朋友一直存在一个误区,认为说逻辑网络就是物理网卡映射到了SCVMM里,其实根本不是,对于第一次添加主机时,逻辑网络只是默认把你本机的NIC名称抓过来当作逻辑网络名称罢了。

接下来demo环境中将要实现的就是图中门户申请背后的所有内容,我们只有将底层搭建好了才可以把“软件定义网络”这样的服务打包给用户;至于门户的选择可以是微软官方的AzurePack,也可以是定制化开发的门户产品。

再正式进行之前再稍微看一下拓扑图,在我的上一篇博客里对CA、PA、VSID、RDID已经做过比较详细的介绍,可以先回顾一下。

VM彼此之间通信会以CA地址进行,也就是用户自己的VM subnet地址;如果VM是分布在不同主机上,那么这种跨主机的通信会经过NVGRE重封包来解决,发起端经由NVGRE打包并贴上PA地址标记,也就是一个专用的逻辑网络地址池,然后提交给接受主机,接收端同样使用PA地址收取然后拆包拿出CA地址标签转发给最终VM,其实是很简单的原理,NVGRE与cisco等厂商提倡的VXLAN都是差不多的初衷。

DEMO中会需要一台独立的物理主机做网关主机,并且要支持虚拟化并在其上创建一台VM网关;VM网关内口接SCVMM的逻辑交换机(下一篇重点),外口直接走外网段;其实也是非常基本的网关拓扑。

刚才上面说了一大嘟噜话其实是怕有的筒子们越往后看越闹心,我也是想尽量把概念类的东西先铺垫一下,现在马上开始正题:演示平台WS2012R2+SC2012R2。

下图中的gateway是专门用来做网关物理主机的,它上面还有一台NVGRE网关虚机:

在主机组Lenovo中,host01主要用来放置管理服务器用,例如一些SC角色;host02主要是专门申请虚机用的,winserver10就是一台测试虚机。

点击Virtual Switch这个逻辑网络就可以看到启用“网络虚拟化”的选项,不起用的话那么一个逻辑网络就只能创建一个VM network,这个Virtual Switch是流向外网的逻辑网络。

在Virtual Switch逻辑网络上创建了一个站点,叫shangdi,不是上帝而是上地(欢迎志同道合者约饭),站点的作用就是来分配逻辑网络的使用权的,这个逻辑网络下的站点包含了哪些主机资源,那么这些主机的物理网络就可以与这个逻辑网络相绑定,今后通过对逻辑网络加以控制就起到了直接管理物理网络的效果。

在逻辑网络下面创建一个地址池,如果平时我们不需要网络虚拟化的功能,那么这个地址池是可以直接分配给虚机来使用的,此时地址池通常是与物理网络相匹配的;这个test IP pool就是直接可以访问外网的IP,在后面NVGRE网关会通过NAT从这个池里面拿IP来给CA做转换。

IP地址范围我给了40-50,显然这个IP范围并不是我们实际的公网IP资源,但是没关系,软件定义网络就是这么灵活自如。

之后的网关、DNS等设置都以我办公环境的接入设备为参考:

在看另外一个逻辑网络Tenant,这个网络是专门给用户申请虚机使用的,并且勾选了启用“网络虚拟化”,特别注明一点:我这个主机也只是接了一根网线,正如我上面提到的,逻辑网络的作用不是1:1的来映射你的物理网卡。

这个逻辑网络也同样创建一个站点,并且允许所有主机关联,网络地址为192.168.0.0/24,区别于我的外网地址192.168.10.0/24。

接下来创建一个IP地址池,这些IP就是PA,也就是专门给主机间通信用的;因此无需DNS、网关等配置。

接下来再瞅一眼VM network,virtual switch是构建在“virtual switch”这个逻辑网络上的;它也是这个逻辑网络上仅有且唯一的VM network;上面那个tenant VM network将在第三篇提起。

端口配置文件

端口配置文件有两种,一个是给虚拟网卡用的,一个是给上行链路用的,分别是什么意思呢?看下面图中默认选择“虚拟网卡端口配置文件”。

然后下一步可以看到针对虚拟网卡我们可以启用的一些硬件支持功能,比如IPsec卸载和单根虚拟化;记住前提是硬件环境支持,而且有的功能并不是仅仅要求网卡支持,例如SR-IOV:

然后针对虚拟网卡可以启用的一些功能,mac欺骗,自定义IP地址等等;大家可能会发现其实这里的设置和hyper-v管理器中的设置是一一对应的。

最后还可以针对该端口配置文件进行QOS设置,带宽大小及权重。

刚才是“虚拟网卡端口配置文件”,再来看看“上行端口配置文件”当选择到上行端口配置文件之后,会发现左侧列表少了很多内容:

上行端口配置文件可以支持NIC Teaming,可以选择负载平衡算法,比如地址哈希或者hyper-v端口方式:

在teaming模式下可以选择是否依赖交换机,例如端口聚合LACP;我直接创建一个“上行端口配置文件”,保持默认选择(反正我的设备只有一个NIC启用):

在下一步中可以选择已有的站点及对应的逻辑网络,这里是什么意思呢?我们通过SCVMM创建出这两种端口配置文件(虚拟网卡和上行),然后可以再创建“逻辑交换机(下一篇介绍)”把这些端口配置文件关联在一起;这样只要把物理主机的某一个网卡指向“逻辑交换机”,那么这个网卡(物理网络)就会自动关联到所包含的所有“逻辑网络”,如果你的主机运行windows2012而且想使用网络虚拟化,那么就需要把下面的勾选上,R2可忽略。

下面是我依据DEMO环境所创键的几个上行端口配置文件,“uplinke port profile”这个是给host02主机用的,也就是跑用户虚机的那台宿主机用的。

让这台虚机可以使用tenant与virtual switch两个逻辑网络(因为host02既要有PA地址又要上外网)。

inbound这个配置文件是给gateway那台物理网关主机的内口网卡用的,因为它只需要PA地址,所以不给它选virtual switch这个可以访问外网的逻辑网络了(我觉得看到这里大家应该对逻辑网络已经有很深刻的理解了吧?)

同样outbound顾名思义,是gateway物理主机的外口网卡专用配置文件,无需PA地址所以就不选Tenant。

接着我再创建一个名为“Tenant”的虚拟网卡配置文件,这个文件专门用来给用户VM的网卡做标记,offload设置保持默认(当然如果你的硬件足够横,那么你可以启用SR-IOV等功能),带宽设置这里给个1,应该是最小值了,这个权重值的意义是当不同业务流量共享同一物理网络时,会根据这个权重来平衡带宽占用优先级;可能有的童鞋会说“我的VM专门绑定一个网卡或者一组teaming,管理网络用另外一个网卡或者一组teaming”是吧?那么通常我们这做的时候还要单独的去规划网段,配置每一个网卡等等,运维工作会比较繁琐;下一篇中会结合逻辑交换机来介绍如何解放运维工作。

在安全设置里,注意要启用“允许来宾定义IP地址”:

为了给下一篇提前做个预习,咱们先来看看逻辑交换机的设置;下图中我已经提前创建好了几个逻辑交换机,打开“test logical switch”这个属性可以看到下方有“启用SR-IOV”功能。

下图是关于SR-IOV功能在hyper-v管理器中配置的地方,虚机网卡中可以设置(对应虚拟网卡端口配置文件设置)。

hyper-v虚拟交换机设置中的SR-IOV(对应刚才逻辑交换机中的设置)话说如果条件允许的话,建议使用单根虚拟化功能,即SR-IOV,可以让虚机直接与物理资源交互而无需经过中间的虚拟化层;当然正如下图中标记的“SR-IOV只有在创建之前配置才行,之后无法更改”。

逻辑交换机的扩展选项2选1,保持默认就行。

上行端口模式是否要用teaming功能,并且选择我们刚才创建的“上行端口配置文件”。

点击“添加”可以选择相应的配置文件:

这样一个逻辑交换机就创建完成了,它包含两种端口配置文件:

在接下来的一篇中,我会展示如何把物理服务器的网卡接入逻辑交换机,以及接入后的效果并且如何简化部署实施工作,为我们最终的网络虚拟化演示做好铺垫。

责任编辑:黄丹 来源: 51TCO博客
相关推荐

2019-02-13 16:22:53

网络虚拟化大二层

2011-07-04 10:39:57

Web

2021-03-16 08:54:35

AQSAbstractQueJava

2009-03-16 13:44:29

双向复制实例MySQL

2015-09-23 11:19:18

数据中心SDN

2013-06-27 14:32:13

华为网络虚拟化虚拟化Hyper-V

2022-09-26 09:01:15

语言数据JavaScript

2021-07-20 15:20:02

FlatBuffers阿里云Java

2019-01-07 15:29:07

HadoopYarn架构调度器

2012-05-21 10:06:26

FrameworkCocoa

2017-07-02 18:04:53

块加密算法AES算法

2017-11-24 11:10:39

神经网络卷积神经网络全连接神经网络

2010-01-27 16:13:43

2022-05-06 07:19:11

DOMDiff算法

2010-06-03 10:42:36

Hyper-V服务器虚拟化

2009-11-03 12:45:51

2021-07-19 11:54:15

MySQL优先队列

2009-11-17 17:31:58

Oracle COMM

2016-10-14 13:53:05

JavascriptDOMWeb

2016-10-14 14:32:58

JavascriptDOMWeb
点赞
收藏

51CTO技术栈公众号