vxlan 手工隧道(头端复制)
一、预习:
//
VxLAN:Network Virtualization Over Layer 3,本质上是一种 VPN 技术,能够在任意路由可达的物理网络(Underlayer)上叠加二层虚拟网络(Overlayer),通过 VxLAN 网关之间的 VxLAN 隧道实现网络内部的互通,同时也可与传统非 VxLAN 网络互通,是云计算必须要用到的其中一种技术。
云计算需要实现虚拟机的热迁移,但传统方式局限于网络架构,无法满足二层和三层的热迁移。云计算支持多租户,需要实现租户之间的隔离和互访。
传统网络的缺点:
1、MAC 地址表项的数量限制,虚拟机数量受限
2、VLAN Tag 字段长度限制:12bit,仅有4096个,网络隔离能力受限
3、虚拟机迁移范围受限,限于本地二层,无法做三层热迁移
VxLAN 由 IETF 定义(https://www.rfc-editor.org/rfc/rfc7348),采用 L2 over L4(MAC-in-UDP)的报文封装模式,将二层报文用三层协议进行封装,可实现二层网络在三层范围内范围互通,由于三层网络没有网络结构的限制,具有大规模扩展能力,满足 DCN 虚拟机的热迁移和多租户通信需求。
VxLAN是一种无控制平面(泛洪),利用底层 IP 网络实现二层通信的隧道技术。
底层的 IP 网络为 UnderLayer 网络(用于支撑 VxLAN 的 VTEP 之间彼此可达的网络),VxLAN 称为 OverLayer 网络(本质是隧道)
概念:
NVE:Network Virtualization Edge,用于 VxLAN 封装和解封装的设备
VTEP:VxLAN Tunnel EndPoint,VxLAN 隧道端点,每个 NVE 至少有一个 VTEP,用 IP 地址来表示
VxLAN Tunnel:由一对 VTEP 定义,报文在 VTEP 设备上封装后,通过 VxLAN 隧道在三层网络中进行传输。
隧道分为静态和动态隧道
静态:通过手工配置 本端和远端的 VNI、VTEP IP 及头端复制列表(Head-End Peer-List)来建立。手动创建 VxLAN 隧道,配置工作量大,此外,VXLAN本身没有控制平面,其 VTEP 发现和主机信息收集通过数据平面的流量泛洪实现,这在数据中心网络中产生了大量泛洪流量。
动态:由 BGP EVPN 协议动态建立 VxLAN隧道,VTEP 间建立 BGP EVPN 对等体 ,并利用 BGP EVPN 路由交换 VNI 和 VTEP IP,实现 VxLAN 的自动创建
BD:Bridge Domain 表示一个大二层广播域,本地有效,桥接VNI和物理二层
VNI:Virtual Network ID 分为 2层 VNI 和 3层 VNI,用于不同的BD域,和 BD 为 1:1 对应关系
OVS:Open vSwitch 开源虚拟交换机,在虚拟化场景下,用 portgroup 做端口隔离,
数据包:
DMAC | SMAC | DIP | SIP | UDP头 | VxLAN | 原始数据包
DVTEPMAC|SVTEPMAC|DVTEPIP|SVTEPIP|源目VxLAN端口长度检测包|Ibit为1标识VNI有效+VNI(24bit)|…
VTEP 上通过一种“二层子接口”的逻辑接口,来判断报文是否进入 VxLAN 隧道。二层子接口要做的事
1、根据配置来检查哪些报文需要进入VxLAN隧道
2、判断对检查通过的报文做何处理,CE交换机目录支持3种不同的流封装类型:
a、dot1q,只允许携带指定vlan tag的报文进入VxLAN隧道。(封装前处理:剥离原始报文vlan tag再封装)(收到VxLAN报文后,若原始报文二层带有vlan tag,则剥离并替换成本接口指定的vlan tag;若不带vlan tag,则加上本vlan tag)
b、untag,只允许不带VxLAN Tag 的报文进入 VxLAN 隧道。(封装前处理:不添加任何 VLAN Tag)(解封后:若原始报文带有 VLAN Tag,剥离再转发)(用于 pvid=1时)
c、default,允许所有报文进入VxLAN隧道,不论报文是否携带 VLAN Tag(封装前,不做任何处理)(收到后,不做任何处理)
//
二、拓扑:
三、配置思路:
1、手工隧道配置思路:
a、在接口上给流量做封装,封装方式为 dot1q、untag、default,并将原始 vlan 和 BD 做关联,让 vlan 的流量进入 BD 域
b、建立 BD 域,指定二层 vni,打开二层 arp代理,允许收集主机 arp
c、建立 vtep 隧道,指定头端复制试
2、简单文字表示:
vlan 关联 BDBD 关联二层 VNIVNI 进入 NVE 源端经过 VxLAN,通过 head-end 头端复制方式到达隧道对端 NVE 的 peer-list
三、检测:
1、看一下 ping 通情况
2、看下BD域中的MAC表项:
3、看下 VxLAN 隧道:
四、详细配置:
CE1:
// bridge-domain 10
vxlan vni 100
bridge-domain 20
vxlan vni 200
bridge-domain 30
vxlan vni 300
rip 1
version 2
network 12.0.0.0
network 1.0.0.0
interface GE1/0/0
undo portswitch
undo shutdown
ip address 12.1.1.1 255.255.255.0
interface GE1/0/1
undo shutdown
interface GE1/0/1.10 mode l2
encapsulation dot1q vid 10
bridge-domain 10
interface GE1/0/1.20 mode l2
encapsulation dot1q vid 20
bridge-domain 20
interface GE1/0/1.30 mode l2
encapsulation untag
bridge-domain 30
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
interface Nve1
source 1.1.1.1
vni 100 head-end peer-list 3.3.3.3
vni 200 head-end peer-list 3.3.3.3
vni 300 head-end peer-list 3.3.3.3
//
CE2:
// rip 1
version 2
network 12.0.0.0
network 23.0.0.0
network 2.0.0.0
interface GE1/0/0
undo portswitch
undo shutdown
ip address 12.1.1.2 255.255.255.0
interface GE1/0/1
undo portswitch
undo shutdown
ip address 23.1.1.2 255.255.255.0
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
//
CE3:
// bridge-domain 10
vxlan vni 100
bridge-domain 20
vxlan vni 200
bridge-domain 30
vxlan vni 300
rip 1
version 2
network 23.0.0.0
network 3.0.0.0
interface GE1/0/0
undo portswitch
undo shutdown
ip address 23.1.1.3 255.255.255.0
interface GE1/0/1.10 mode l2
encapsulation dot1q vid 10
bridge-domain 10
interface GE1/0/1.20 mode l2
encapsulation dot1q vid 20
bridge-domain 20
interface GE1/0/1.30 mode l2
encapsulation untag
bridge-domain 30
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
interface Nve1
source 3.3.3.3
vni 100 head-end peer-list 1.1.1.1
vni 200 head-end peer-list 1.1.1.1
vni 300 head-end peer-list 1.1.1.1
//
五、常用命令:
dis vxlan vni
dis bridge-domain |binding-info
dis mac-address bridge-domain 10 #查看BD下的mac表项
dis vxlan vni #查看vxlan vni
dis vxlan tunnel #查看vxlan tunnel
dis port vlan #查看各端口所属vlan
clear configuration this #在接口下清配置
bridge-domain 10 #创建BD域
vxlan vni 100 #BD绑定VNI
int G1/0/1.10 mode l2 #创建二层子接口,if仅有一个vlan,也可以改为portswitch再进入
encapsulation dot1q vlan 10 | qint | untag | default
bridge-domain 10 #将vlan 10 和 BD 10 关联,所有 vlan 10 流量被注入到 BD 10 中
int nve 1|2 #创建nve
source x.x.x.x #创建vtep源地址
vni 100 head-end peer-list 3.3.3.3 #为vni 100创建头端创建隧道
六、踩过的坑:
1、CE交换机接口默认shutdown,配完后未打开
2、nve 下 source 配成对端的loo0,结果peer-list无法配置成相同的IP
Tips:
因为 trunk 口的 pvid 默认就是 vlan 1,如果发送的数据所属的 vlan 和 trunk 端口的 pvid vlan相同,则发送untagged frame,所以 vlan 1 以untag发送。我们在SW1 上行口抓包,发现默认 vlan 1 是没有进行 802.1q 封装的。