Provider Network与Multi-Segment Network是ML2中非常重要的概念,这里有必要进行说明。
Segment可以描述为对物理网络一部分的描述,比如它可以是物理网络中很多VLAN中的一个VLAN。ML2使用下面结构定义一个Segment
{NETWORK_TYPE,PHYSICAL_NETWORK,SEGMENTATION_ID}
如果Segment对应了物理网络中的一个VLAN,则这里的SEGMENTATION_ID就是这个VLAN的VLAN ID,如果Segment对应了物理网络中的一个Tunnel,则SEGMENTATION_ID就是这个Tunnel的Tunnel ID。
ML2就是用这样简单的方式将Segment与物理网络对应起来。
在Neutron还被称为Quantum的时代,创建虚拟网络时不能指定VLAN ID或Tunnel ID,也就是说,如果此时数据中心有一个VLAN的ID为100,需要部署一些VM在这个VLAN上就比较困难。
当时的一些Plugin,比如Linux Bridge可以做到这一点,但是问题在于并没有一个统一的方法达到这个目的,所有提出了Provider Network API的需求,经过一段时间的发展,名为Provider的Extension API被添加来管理虚拟网络与物理网络之间的映射。换句话说,所谓Provider network目的就是指创建网络时Neutron允许你指定这个虚拟网络所占用的物理网络资源。
2013年初,针对Provider Extension API,又提出了更进一步的改进需求,允许将一个虚拟network与多个物理网络对应起来,换句话来说,就是这个虚拟网络可以包含多个、多种不同的Provider Network,比如:
{
"network":{
"segm