先让我们回顾,昨天的文章《虚拟化网络的实现》中,我们提到的一个虚拟网络标准化模型:
在这个模型下面,我们提出了两个问题:
vRouter物理上在什么地方?
为什么vFW和vLB的逻辑位置和物理位置相差如此之大?
先让我们揭开第一个问题的答案。
在Neutron模型中,有一个重要的概念——分布式任意播网关 (Distributed Anycast Gateway, 以下简称为DAG)。DAG又称IRB(Integrated Routing and Bridging)。如下图所示:
在逻辑上,可以将DAG理解为这么一个概念:对于同一个网段的虚拟机执行二层转发,对于不同网段的虚拟机执行三层转发。
熟悉传统网络设备的同学,此时已经会发现,这不就是三层交换机的功能么?没错,只不过,这台三层交换机的各个VLAN,以及实现各VLAN Interface的路由转发引擎,是由vSwitch和vRouter构成的。
vSwitch和vRouter到底运行在什么地方呢?
让我们回顾这一节的标题:“分布式任意播网关”。“分布式”三个字已经揭示了它的本质——原来,上图子网中的三个vSwitch和一个vRouter,都运行在每台物理宿主机上的OVS中。
如下图所示:
如图所示,web/app/db三个虚拟机组所在的网段,分别是10.10.10.0/24; 10.10.20.0/24; 10.10.30.0/24,对应的默认网关分别是10.10.10.254/10.10.20.254/10.10.30.254。
如果这三个虚拟机组分布在若干台宿主机上,那么,每台宿主机的OVS都将同时维护这3个网关IP,并实现同网段之间的二层转发,以及跨网段的三层转发。
所谓“分布式”的含义,指的就是在Neutron的每个VPC中,每个OVS都维护同样的网关地址。换句话说,每个OVS都运行着前面提到的vSwitch和vRouter!
今天大家需要思考的问题是,在图中IP地址为10.10.10.110的虚拟机,是如何将数据包发送到10.10.10.120的呢?10.10.10.110和10.10.20.120又如何通信呢?