Multi-Segment应用——VTEP位于TOR交换机上

VXLAN的实现模型如下图:
在这个实现模型中,VTEP(VXLAN Tunnel End Point)是位于计算节点的br-tun上,但是在实际应用中,VTEP也有位于TOR交换机的情形。
VTEP位于TOR上,而不是Host内的br-tun。我们把这一段组网抽象成下图:
从用户视角,这是一个VXLAN网络,所以Neutron对外暴露的接口(模型)仍然是Network。但是在具体实现时,VTEP位于TOR上,而且,TOR还需要做VNI(VXLAN ID)到VLAN ID的映射(VLAN1、VLAN2、VLAN3、VLAN4)。这个映射并不能随意映射,因为TOR交换机上的VLAN ID,也不能任意取值,需要经过规划。所以Neutron就有了如下模型:
segment实际上是一个列表,这个列表的元素是[provider:physical_network,provider:network_type,provider:segmentation_id],Neutron正是通过这三个字段描述了需要描述的信息(比如VLAN ID,即provider:segmentation_id)。
说到这里,你可能会问,那个VXLAN网络的VNI,在哪里输入?这个VNI的赋值,由Neutron内部自动生成,而它生成的方法是根据配置文件的规则。
通过上述的这个场景(VTEP位于TOR上),我们可以总结出Network模型中的segments字段的用途:
1 使用场景:主要是VTEP位于TOR上。
2 用户体验:用户感觉到的只是一个普通租户,感觉不到实现细节。
3 字段用途:由于VTEP位于TOR上,Neutron内部还需要做一个网络ID的二次转换。TOR的VLAN ID是一个提前规划好的值,不能任意取值。此时,segments字段就承担这个作用,它的取值表达的就是这些提前规划好的值。
在这里,Network模型本身的网络ID相对于外部网络ID,segment字段里的网络ID相当于内部网络ID。Network本身的网络类型是VXLAN,segments字段里的网络类型是VLAN。