缩略语 |
OSI中的概念 |
NVE |
Network Virtualization Edge,网络虚拟边缘节点 |
VTEP |
VXLAN Tunnel Endpoints,VXLAN隧道端点 |
VNI |
VXLAN Network Identifier,VXLAN 网络标识符 |
VAP |
Virtual Access Point,虚拟接入点 |
(1)虚拟机规模受网络设备表项规格的限制
●对于同网段主机的通信而言,报文通过查询MAC表进行二层转发。服务器虚拟化后,数据中心中VM的数量比原有的物理机发生了数量级的增长,伴随而来的便是虚拟机网卡MAC地址数量的空前增加。此时,处于接入侧的二层设备表示“我要Hold不住了”。
(2)传统网络的隔离能力有限
●VLAN作为当前主流的网络隔离技术,在标准定义中只有12比特,也就是说可用的VLAN数量只有4000个左右。对于公有云或其它大型虚拟化云计算服务这种动辄上万甚至更多租户的场景而言,VLAN的隔离能力显然已经力不从心。
(3)虚拟机迁移范围受限
●虚拟机迁移,顾名思义,就是将虚拟机从一个物理机迁移到另一个物理机,但是要求在迁移过程中业务不能中断。要做到这一点,需要保证虚拟机迁移前后,其IP地址、MAC地址等参数维持不变。这就决定了,虚拟机迁移必须发生在一个二层域中。而传统数据中心网络的二层域,将虚拟机迁移限制在了一个较小的局部范围内。
●通过堆叠、SVF、TRILL等技术构建物理上的大二层网络,可以将虚拟机迁移的范围扩大。但是,构建物理上的大二层,难免需要对原来的网络做大的改动,并且大二层网络的范围依然会受到种种条件的限制。
(4)VXLAN是什么
●VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一,采用L2 over L4(MAC-in-UDP)的报文封装模式,将二层报文用三层协议进行封装,可实现二层网络在三层范围内进行扩展,同时满足数据中心大二层虚拟迁移和多租户的需求。
(5)VXLAN网络架构
●VTEP(VXLAN Tunnel Endpoints,VXLAN隧道端点)
VXLAN网络的边缘设备,是VXLAN隧道的起点和终点,VXLAN报文的相关处理均在这上面进行。总之,它是VXLAN网络中绝对的主角。VTEP既可以是一***立的网络设备(比如华为的CE系列交换机),也可以是虚拟机所在的服务器。
●VNI(VXLAN Network Identifier,VXLAN 网络标识符)
前文提到,以太网数据帧中VLAN只占了12比特的空间,这使得VLAN的隔离能力在数据中心网络中力不从心。而VNI的出现,就是专门解决这个问题的。VNI是一种类似于VLAN ID的用户标示,一个VNI代表了一个租户,属于不同VNI的虚拟机之间不能直接进行二层通信。VXLAN报文封装时,给VNI分配了足够的空间使其可以支持海量租户的隔离。
●VXLAN隧道
“隧道”是一个逻辑上的概念,它并不新鲜,比如大家熟悉的GRE。说白了就是将原始报文“变身”下,加以“包装”,好让它可以在承载网络(比如IP网络)上传输。从主机的角度看,就好像原始报文的起点和终点之间,有一条直通的链路一样。而这个看起来直通的链路,就是“隧道”。顾名思义,“VXLAN隧道”便是用来传输经过VXLAN封装的报文的,它是建立在两个VTEP之间的一条虚拟通道。
●VXLAN报文结构
●VXLAN Header
增加VXLAN头(8字节),其中包含24比特的VNI字段,用来定义VXLAN网络中不同的租户。此外,还包含VXLAN Flags(8比特,取值为00001000)和两个保留字段(分别为24比特和8比特)。
●UDP Header
VXLAN头和原始以太帧一起作为UDP的数据。UDP头中,目的端口号(VXLAN Port)固定为4789,源端口号(UDP Src. Port)是原始以太帧通过哈希算法计算后的值。
●Outer IP Header
封装外层IP头。其中,源IP地址(Outer Src. IP)为源VM所属VTEP的IP地址,目的IP地址(Outer Dst. IP)为目的VM所属VTEP的IP地址。
●Outer MAC Header
封装外层以太头。其中,源MAC地址(Src. MAC Addr.)为源VM所属VTEP的MAC地址,目的MAC地址(Dst. MAC Addr.)为到达目的VTEP的路径上下一跳设备的MAC地址。
(1)控制平面
在 VXLAN的实现中, 当通过组播实现控制平面路径发现时, VTEP设备之间使用无状态 tunnel ,VTEP设备之间不会维持状态化的长连接。 VXLAN需要通过控制平面学习远端设备地址信息, 在本地构建控制平面表项。 控制平面表项由 VNI、Inner Source MAC 、Outer Source IP 三元组组成。
(2)转发平面
控制平面学习地址映射信息后, 转发平面负责实际数据的转发。 VTEP为原始数据帧增加 UDP报头,新的报头到达目的 VTEP后才会被去掉,中间路径的网络设备只会根据外层包头内的目的地址进行数据转发。
(3)VXLAN ARP请求
如上图所示,VM1和VM2属于同一网段,且VNI相同,需要通信
●VM1发送送 ARP请求,请求VM2 的 MAC地址;
●VTEP-A收到VM发送的 ARP请求,此时 VTEP-A还没有VM对应的地址映射表项, VTEP-A将 ARP请求进行 VXLAN封装, VNI 设置为100,outer-src-ip 是 IP-A,outer-dst-ip 是加入的组播组地址,封装完成后转发至 VXLAN组播组(可以选择单播学习,单播到VTEP Peer)
●VTEP-B、VTEP-C收到VTEP-A发送的组播报文,解封装后检查 VNI 与本地 VNI 是否匹配,如匹配将 ARP请求发送至本地网络,同时记录 VNI、inner MAC、outer IP 的对应关系,构建控制平面地址映射表项。如 VNI 不匹配则丢弃数据包。
●VM-2 收到 ARP请求后以单播方式发送 ARP响应;
●VTEP-B收到VM-2 的 ARP响应后进行 VXLAN封装,此时 VTEP-B已经构建控制平面地址映射表项,通过 VXLAN封装后以单播方式发送。Outer-src-ip 是 VTEP-2的 IP 地址,outer-dst-ip 是 VTEP-1的 IP 地址;
●VTEP-1收到封装后的 ARP响应后,解封装比对 VNI,如匹配将 ARP响应发送至终端设备 A,同时记录 VNI、inner MAC、 outer IP 的对应关系,构建控制平面表项;
此时 VTEP-A、VTEP-B均已成功构建控制平面地址映射信息,后续 VXLAN数据使用单播在 VTEP-A和 VTEP-B之间传输。
(1)测试目的
验证Vxlan ARP学习流程
验证Vxlan流量封装
(2)测试说明
由于交换机不支持Vxlan,所以只能测试仪背靠背来模拟VTEP
测试仪两端配置Vxlan VTEP以及下挂主机后,运行Vxlan。抓包验证ARP和数据报文封装
(3)测试步骤
●按图连接好拓扑
●使用配置向导在P1上配置Vxlan业务
●使用配置向导在P2上配置Vxlan业务
●开启Vxlan业务
●开启抓包,在VM接口上发送ARP请求,并抓包
●创建、发送Vxlan流并抓包查看封装
(4)预期结果
Vxlan业务运行后,两个VTEP下的VM可以学习到对方的ARP
查看抓包,ARP报文做了Vxlan封装
数据流量可以通,抓包可以看到数据流量也做了Vxlan封装
(1)添加机框
(2)占用Ports
(1)配置Vxlan
(2)选择端口,配置端口VTEP数
(3)每VTEP的Vxlan Segment数
(4)设置VM
(5)设置学习模式
(6)设置Non-Vxlan端口
(7)查看配置
(1)开启抓包
(2)运行Vxlan协议
(3)检查抓包结果
4.配置流量
5.验证数据流量封装