1、VLAN
Vlan:virtual local area network 虚拟局域网,该协议可以将一个局域网分成多个虚拟局域网,也可以将不同的局域网组成一个虚拟局域网。我们使用vlan可以做以下的事情:
- 变更网络中的设备时,通过vlan直接配置,可以省去物理线路的重新调整。
- 将一个lan下的设备分到不同的虚拟的lan中,虚拟lan之间在链路层相互隔离,每个虚拟lan拥有自己的广播域,解决因为ARP引起的广播风暴问题。
- vlan可以将使用同一条线路、物理端口的设备隔离开来,使其互不影响,保证安全性。
- 跨地域构建vlan。
一条网络线路可以承载多个vlan(trunk)。为了能确定网络帧属于哪个vlan,会在帧的信息中添加相应的tag,网络中相连的交换机、路由器的端口也必须支持识别、处理这样的帧,在帧中添加或取出相应的tag。添加tag最常用的协议为IEEE 802.1Q。802.1Q在Mac地址段后、以太网类型字段(EtherType)前添加了32bit的802.1Q Header信息,如下:
- TPID(Tag protocol identifier):值为0x8100,表明此帧为802.1Q-tagged帧。如果不是添加tag的帧,这部分的16bit为以EtherType段,所以通过读取这个位置的16bit是不是0x8100就可以判断是不是添加了标记的帧。
- TCI(Tag control information)
- PCP(Priority code point):设置帧优先级,为IEEE 802.1p协议中指定的Class of Service(CoS)。
- DEI(Drop eligible indicator):可以与PCP一起使用或者分开使用表明如果网络阻塞,此帧可以丢弃。
- VID(VLAN identifier):12bit,通过ID表明是哪一个vlan的帧。0x000和0xFFF为保留值,不能配置(0x000表示帧中不包含VLAN ID,0xFFF表示某种用途)。0x001为默认值。
2、VXLAN
vlan的VID段只能表示4094(2^12-2)个虚拟局域网,随着云平台规模的扩大,这个数量无法满足网络管理需要,我们需要更大的字段来对虚拟网络进行标识。
Vxlan:Virtual Extensible LAN 虚拟可扩展局域网。vxlan在原始的二层报文的基础上封装了一个头部信息,然后再通过udp进一步封装,udp的目标地址使用4789端口,如下:
其中vxlan头部信息是这样的:
- vxlan flags:固定值,0x08。
- VNI(vxlan network identifier):24bit,与vlan中的VID用法一致,表示局域网信息。
- reserved:固定值,两个reserved段都为0。
通过VXLAN,我们可以构建几乎不限局域网数量的overlay大二层网络,满足云化网络管理的需求。