SDN Overlay网络中虚机到物理机的数据包的转发

在之前我们讨论了SDN Overlay 网络中5个不同场景下虚机数据包如何转发,今天我们将继续讨论处于Overlay网络中的虚机如何与物理机进行数据转发。有关于微软网络虚拟化HNV的相关概念,如RDID、VSID、虚机网络、虚拟子网、默认网关等,可以参考http://ichbinleo.blog.51cto.com/11948851/1902265和http://ichbinleo.blog.51cto.com/11948851/1903866  进一步了解。

在开始今天的讨论之前,我们需要引入一个概——HNV网关,也即转发网关,转发网关在SDN Overlay场景中的主要目的有3个:

  1. 通过NAT实现Overlay网络中虚机访问外部网络(Internet)
  2. 通过NAT或直接路由功能实现Overlay网络中虚机访问物理网络上的设备
  3. 外部网络到Overlay网络的S2S VPN。

HNV网关可由启用了RRAS功能的Windows Server (2012及后续版本)虚机实现,也可以由支持NVGRE/VXLAN的物理网络设备来支持,如Cisco、F5、Iron Network以及nAppliance等都提供相应的网络设备。

我们这次设定的场景如下图所示,2台虚机VM1和VMgwca在不同的虚拟子网,分别运行在不同的物理机上,VMgwca作为VM1所在的虚拟子网的转发网关。VMgwca具备至少2个网卡:一个网卡关联HNV逻辑网络,连接和VM1相同的虚机网络(RDID相同),一个网卡连接物理网络(我们可称之为外部网络)。启用了HNV网关特性也意味着2块网卡所在的子网也默认启用了静态路由。

VM1的IP地址为172.16.188.2,MAC地址为MACvm1, VSID为11111。

VMgwca的内部IP地址为192.168.188.2,MAC地址为MACgwca,VSID为22222;外部地址为10.1.21.16,外部网卡MAC地址为MAClan。

当虚机VM1需要和外部网络的主机10.1.21.18通信时,数据流是怎样的呢,下面我们对这一场景的数据流进行详细的描述:

  1. 因为源和目的IP地址不在同一个子网,所以VM1发送ARP消息询给默认网关,而不是直接发送给目标IP地址。
  2. Hyper-V虚拟交换机广播ARP到HNV Filter
  3. HNV Filter返回默认网关的MAC地址MACdfgw,MACdfgw就是HNV Filter自身。
  4. VM1学习到默认网关的MAC地址为MACdfgw,其VSID为11111 (默认网关的MAC地址MACdfgw包含在OOB数据里)。
  5. VM1封装IP数据包,目的IP为默认网关的IP地址,目的MAC地址为MACdfgw。
  6. IP数据包发送到Hyper-V虚拟交换机,虚拟交换机获取到发送虚机的网卡VSID 11111的OOB数据。
  7. HNV Filter 查询到去往10.1.21.xx子网的客户路由的下一跳为192.168.188.2(转发网关)。
  8. HNV Filter 使用其查找记录来确定下一跳虚机(转发网关)的PA地址。如果没有找到PA地址记录,那么数据包将被丢弃。
  9. 接着HNV Filter 重写数据包,以将目的MAC地址更改为MACgwca(转发网关的MAC地址)
  10. HNV Filter 在查找记录里查询到gwca的CA地址为192.168.188.2,MAC地址MACdfgw,VSID为22222,PA地址为10.2.41.206,于是HNV Filter将获取到的这些信息和原始IP数据包使用NVGRE/XVLAN进行二次封装。外部数据包中,目的IP地址为gwca的的PA地址10.2.41.206,目的MAC地址为MACdfgw,VSID为22222,如下图绿色部分所示。

  1. 二次封装的数据包通过传输网络栈传输到网络上。
  2. IP地址为10.2.41.206以及MAC地址为MACPA2的Hyper-V物理机接收到数据包,然后发送到HNV Filter
  3. HNV Filter拆开封装的包,获取到原始数据包,以及包含了VSID 22222的OOB数据。
  4. HNV Filter将原始数据包转发到具有VSID为22222的Hyper-V虚拟交换机。
  5. Hyper-V虚拟交换机按照访问控制策略将原始数据包发送到目标虚机(转发网关虚机)。在整个过程中,源和目标虚机都没能感知封装的存在。而此时,数据包已经到达转发网关虚机gwca。
  6. 转发网关虚机将数据包在自己2块不同的网卡之间转发(连接内部网络的网卡转发到连接外部网络的网卡)
  7. 转发网关虚机的连接到物理Underlay网络的网卡将当前MAC地址更改为目的物理服务器的MAC地址MACphy
  8. 物理服务器接收到数据包,但是并不知道该数据包来自虚拟网络。
时间: 2024-10-22 20:17:30

SDN Overlay网络中虚机到物理机的数据包的转发的相关文章

SDN Overlay 网络中虚机数据包的转发(2)

在配置了网络虚拟化(Overlay)的网络结构中,处于Overlay网络中的虚机数据包的封装和MAC地址学习和传统物理网络(Underlay)相似又不尽相同.除了我们了解Overlay网络需要借助Underlay网络进行二次封装之外,其MAC地址学习过程也相对要曲折一些.这些MAC地址学习过程取决于多种因素: 虚机是否在同一虚拟子网? 虚机是否在同一虚机网络的不同虚拟子网? 虚机是否运行于同一台物理机? 虚机是否运行在不同的物理机? 不同的场景,虚机之间学习对方的MAC地址,以及在互相学习到对方

SDN Overlay 网络中虚机数据包的转发(1)

在配置了网络虚拟化(Overlay)的网络结构中,处于Overlay网络中的虚机数据包的封装和MAC地址学习和传统物理网络(Underlay)相似又不尽相同.除了我们了解Overlay网络需要借助Underlay网络进行二次封装之外,其MAC地址学习过程也相对要曲折一些.这些MAC地址学习过程取决于多种因素:     1)  虚机是否在同一虚拟子网?    2)  虚机是否在同一虚机网络的不同虚拟子网?    3)  虚机是否运行于同一台物理机?    4)  虚机是否运行在不同的物理机?不同的

c#中关于udp实现可靠地传输(数据包的分组发送) 升级版

在c#中关于udp实现可靠地传输(数据包的分组发送)中我们讨论了,UDP包的发送,但是上一个程序有一个问题,就是数据比较大,一个Message类序列化后都有2048B,而实际的数据量也就不过 50B罢了,这就说明其中数据有效的很少,这样当传送的数据包过多后,效率会极大的降低.因此我们只有想办法减少冗余数据. 此项目中借用了飞鸽传书中的一个<FSLib.IPMessager>项目中的思想,并加以改善,感谢此项目作者,让我对此有了深刻的理解 我们需要自己定义数据的传输结构    我们可以定义一个数

Vmware虚拟机网络模式及虚拟机与物理机通信方法

Vmware虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows.DOS.LINUX系统,目前Vmware提供行业最专业的虚拟机,而Vmware虚拟机的网卡模式也分为几种,下面诚恺科技小编主要同大家一起分享VMware虚拟机网络模式以及使用何种模式完成虚拟机与物理机通信? 一.虚拟机网卡模式分类 虚拟机网卡模式,共5种,如下,在此主要讲解前三种,即桥接模式,NAT模式,仅主机模式. 二.虚拟机环境 物理机系统:win7旗舰版 虚拟机系统:RedHat6.5 虚

lua中是 ffi 解析 【是如何处理数据包的/pkt是如何传进去的】

lua中的ffi是如何解析的呢? 拿bcc中对proto的解析说起: metatype是有大学问的: ffi.metatype(ffi.typeof('struct ip_t'), { __index = { -- Skip IP header length (stored as number of words) -- e.g. hlen = 5, Header Length = 5 x sizeof(u32) = 20 octets -- Mask first nibble and shift

在Linux系统中,实现将物理机与虚拟机网络共享

编写目的:配置过程对于初学者来说,还是有点复杂:记录下来,即作为分享,也是为了方便阅读. 前提条件:虚拟机系统中已经安装了VMWare Tools. 采用方式:自定义NAT方式(或者自定义NAT方式)共享虚拟机上网. 1.开启虚拟机的网卡 VMnet1和VMnet8网卡 2.设置网卡共享 首先要开启本地网络共享,本地网络设置 -- 属性 -- 共享勾选允许其他网络用户 --  家庭网络VMnet8. 3.设置虚拟机自定义NAT连接方式 VMware中选择菜单 编辑 -- 虚拟网路编辑器 -- 添

openstack中虚拟机怎么与物理机通信

How-to-connection-ns-outside 环境配置 网络接口 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=10.20.0.10 NETMASK=255.255.255.0 vi /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=et

Overlay网络与物理网络的关系

编者按:无论是云计算还是SDN都把注意力集中在数据中心网络的建设上,各种解决方案层出不穷,其中以VMware为代表的软件厂商提出Overlay网络方案后,为数据中心网络的发展提出了新的思路.那么Overlay是如何与物理网络相互依存的? 在以往IT建设中,硬件服务器上运行的是虚拟层的计算,物理网络为了与虚拟服务器对接,需要网络自己进行调整,以便和新的计算层对接(如图1所示). Overlay是在传统网络上虚拟出一个虚拟网络来,传统网络不需要在做任何适配,这样物理层网络只对应物理层的计算(物理机.

利用Openvswitch实现不同物理机中的Docker容器互连

1. 测试环境 75机(10.11.150.75):Red Hat Enterprise Linux Server 7.0,无外网访问权限,已安装Docker Server 74机(10.11.150.74):Red Hat Enterprise Linux Server 7.0,无外网访问权限,已安装Docker Server 73机(10.11.150.73):Red Hat Enterprise Linux Server 7.0,无外网访问权限,已安装Docker Server 183机: