Vn-link的作用就是将虚拟机对应的虚拟网卡(Vnic)和CISCO交换机(具有VN-LINK功能的)之间建立一个逻辑的链路。这就好比是服务器(虚拟机)的网卡和接入交换机之间用一条线连起来。实现VN-link 有两种途径,一种是通过nexus 1000v来实现,另一种叫NIV(network interface virtualization)是通过硬件交换机(带VN-LINK功能)配合特殊网卡(带interface virtualizer功能,比如思科的polo卡)来实现。
一、 通过nexus 1000V实现VN-LINK
VMware提供了第三方在母鸡上布署软件交换机的API接口。Nexus 1000v 交换机其功能主要是建立一些ACCESS接口(功能NIV件环境下的vEth口)用于连接虚拟机,和一些uplink口,uplink口对应到物理网卡,和上游真实网络交换机相联(该口一般为trunk口,因为要为多个ACCESS口所接的虚拟机做数据转发,这些虚拟机有可能不在同一个vlan)。
1. Nexus1000V由以下两部分组成:
1)Virtual Ethernet module (VEM)-data plane ------Each hypervisor is embedded with one VEM
2)Virtual supervisor module (VSM)-control plane----独立装在一个物理或虚拟的服务器上(可以和vCenter装在一台服务器上)用来管理所有的Nexus 1000V system(包括VSM自已)。一个VSM可以管理64个VEM,VSM也可以工作在Active/Standby的HA模式。VSM负责运行控制层面协议以及管理VEM,但是不会参与数据转发。
VEM负责在同一个母鸡中各虚拟机之间的数据转发(数据不出母机),同时还负责将去往其他母鸡的数据转发到物理的接入层交换机。
2. 在NEXUS1000V中有两种交换接口:
1) Eth指的是母机上的NIC,比如(config) #int eth2/1,这里的模块号是ESX作为VEM加入nexus 1000时被分配的。接口号则跟网卡的先后顺序号有关。
2) vEth就是N1K中的ACCESS口,这种口完全是虚拟的,是通过命令来建立的,为了方便vMotion这种口是没有模块号的,也就是说这种口是和具体某台母机(ESX)没有关系的,可以在所有母机中移动,具体会停留在哪个母机中由对应的虚拟机在哪台母机中决定(其实是一个vEth pool)。
1. NEXUS 1000V VN-LINK实现过程
1) 建立profile
(config)# port-profile webservers
(config-port-prof)# switchport access vlan 10
(config-port-prof)# ip access-group 500 in
(config-port-prof)# inherit port-profile server
The port profile can then be assigned to a given vEth interface as follows:
(config)# interface veth1
(config-if)# inherit port-profile webservers
先建profile,然后将profile应用到对应的vEther interface上,如果profile修改,会立即对所有调用了该profile的vEther 口产生影响。
在N1K的VSM中定义port-profile,再将port-profile应用到N1K的vEth上。port-profile还分为up-link 和非UP-LINK,连虚拟机的口应用非UP-LINK的profile,连上游物理交换机的口应用UPLINK profile,uplink一般都是trunk。Up-link profile还分为system port-profile(用于传递系统信息,比如VSM和VEM间的控制数据)和uplink port-profile(用于传递网络数据)然后并将这些port-profile推送到vCenter,在vCenter中就会看到N1K中定议的port-profile,其表现为port group(相当于是一个端口池),管理员在创建虚拟机时可以选择所需的port group应用到虚拟机的Vnic上,创建好的虚拟机启动后vNIC就会连接到这个port group中的一个接口。
2) 数据转发过程
同一母机下的数据转发由VEM本地完成,不出母机网卡。不同母机间通讯。。。。。。
其所有的通讯过程就会一台物理的交换机完全一样。所不一样的就是他可以实现虚拟机的vMotion。
3)NEXUS 1000V下的vMotion
Nexus 1000V和VMware的vCenter是高度集成的,他能够完全了解所有服务器虚拟化活动,例如 VMware VMotion。
vCenter kick off 一个vMotion(可以是手动的也可以是自分理处的),并发现一个通知信息NEXUS 1000V交换机;vCenter转移VM文件到新的母机,N1K复制VM的端口状态信息(包括port policy等)到新的母机;VM文件移动完毕,接口up,VM的vNIC和N1K port group池中的一个接口发生Connect。网络接通后VM会通过ARP包宣告自已的MAC在网络中的新的位置。
这里有个问题,在vMotion后虚拟机怎么知道自已和哪个vEth对应(重启也存在这个问题),我想可能是在vCenter中用VM的UUID和profile作了绑定。只要vMotion后UUID不变,其对应的profile也就不会变,那么接到哪个(或什么样的)vEth也就确定了。
二、 通过NIV实现VN-LINK
NIV通过硬件交换机(带VN-LINK功能)配合特殊网卡(带interface virtualizer功能,比如思科的polo卡)来实现。带VN-LINK功能的交换机和带interface virtualizer功能网卡都支持VN-Tag技术。实际上就靠VN-Tag建立起了一条VN-LINK(其实就是标签技术)。
2. NIV 简单原理
NIV(network interface virtualization),是CISCO提出的近似于硬件的解决方案,他将所有的交换功能从母机(hypervisor)移走,放到硬件交换机中,从而与物理服务器无关。NIV模式的VIS(virtual interface switch)是不遵从802.1D的,802.1D规定从某个接口收到的数据不可以再从该接口发出去,VIS必须允许此种数据转发才能实现同一母机下不同虚拟机之间的通讯。但是这种转发还是需要适当的标准来防止环路的发生的,思科定义了VNTag协议用于VIS中,利用Tag可以识别数据的来源和要去的目的是不是同一个地方。此协议标准已提交给IEEE802.3工作组。
NIV还需要物理服务器上有interface virtualizer功能来配合,此功能可以通过hypervisor内建的软件实现,也可通过带有此功能的网卡实现。interface virtualizer的功能就是在网卡上建立很多的vEth端口用来和VM的vNIC对应,当vNIC有数据进入vEth时,vEth就会给他打上VN-Tag再发出去,配合VN-Tag功能完成VN-link功能。也就是说NIV解决方案中需要用到interface virtualizer+VNTag+VN-link功能的交换机,最终实现VN-link技术。
3. 其工作流程如下:
1) VN-LINK形成
IV其实可以把他当着一个小的交换机来看待,他俱有很多的vEth口,俱备数据交换功能。在IV和VIS之间运CIV协议(Virtual Interface Control Protocol)。当IV中有新的vNIC建立时,IV使用这个协议请求VIS建立新的VIF,如果要建的VIF在VIS中已经存在且符合IV的要求则不用再新建,如果不存在就按照IV的要求新建一个(IV也可以请求VIS删除已建立的VIF)。新建完VIF后IV可以进一步请求VIS 为某个vNIC enable对应的VIF接口,VIS enable完后会返回一个VIF ID给IV,IV将VIF ID 和vNIC对应到自已的转发表中。这样vNIC和VIF就有了绑定关系,就形成了一条VN-LINK。Link形成后还需要进行地址注册才可以使用该VIF,也就是将vNIC的MAC关联到VIF(就好比是传到交换机的地址学习),这样VIS才会跟据数据帧中目的MAC找到对应的VIF转发出去(并且会打上VN-TAG)。
猜测:在IV的转发表中应该是没有MAC的,只需要根据tag做转发就可以了。
2) 数据转发过程
当有数据从服务器到网络时,interface virtualizer会识别数据的源vNIC,并将从此vNIC产生的数据打上一个唯一的tag(即VN-tag)发送出去(VN-Tag封装源目的MAC之内,此Tag的作用应该就是可以让VIS可以据此Tag来决定由哪个VIF来接收此帧或者也有可能是为了防止环路)àVIS收到数据后解出VN-Tag,并根据转发表选择对应的出接口和出VIF,并加上新的VN-Tag(此Tag的作用应该是让目的端的interface virtualizer可以据此选择某个vEth作为出接口,从而对应到相应的vNIC上)à数据到interface virtualizer,interface virtualizer解出VN-Tag,移除VNtag 并将此数据分发到对应的Vnic。
interface virtualizer从来不会执行本地不同虚拟机之间的数据交换,交换处理被从hypervisor中解放出来放到物理网络设备上来执行。和interface virtualizer相连的交换机称为virtual interface switch (VIS),此交换机不仅负责不同物理接口间的数据交换,还负责不同virtual interfaces (VIFs)间的数据交换,VIF和vNIC间会有对应关系(通过vEth),不同VIF间的数据交换其实就是不同虚拟机间的数据交互。任何数据交换和策略的实施都是在VIS中,并不是在hypervisor。VIS可以是任意的支持NIV(network interface virtualization)功能的交换机。
4. NIV中 的VMotion
1) vMotion 目前只能在同一个二层网内发生
2) vCenter发送vMontion包(从源母鸡发向目标母鸡)
3) 虚拟机的状态信息被copy到目标母鸡
4) 虚拟接口(vEth)状态信息被相应copy到目标母鸡上
5) 通过RARP广播完成MAC在网络中的迁移(从一个理交换机端口到另一个交换机)