虚拟网络介绍

Intro
Linux针对VM/Container提供了丰富的网络功能,下面介绍一些在云环境下常用的网络接口

Bridge
概况

一个Linux网桥扮演一个类似网络交换机的角色。网桥主要负责在连接到它的接口之间转发流量。路由器上流量转发,网关路由观法,或者虚拟机之间,或者同一个主机的不同的namespace之间。支持STP,VLAN过滤,支持多播监听。

file

适用场景

当你需要在虚拟机之间/容器之间/主机之间建立一个通信隧道那么就可以使用bridge

bond
概况

Linux的bonding 驱动提供一种将多个网络接口绑定到一个“bonded”接口的机制。Bonded的依赖不同的模式会有不同的行为。通常speaking ,modes既不提供主备或者负载功能。

file

使用场景

使用bonded接口当你想要增加你的带宽的时候或者针对的服务器做在灾备的时候你就需要用到bonded接口

team
概述

类似Bonded接口,提供了一种在2层让多个网卡绑定到一个逻辑设备里面的机制。

需要注意一点就是team设备并不是复制/模仿bonded接口。

它只不过用了一种不同的机制来解决了同样的问题,无锁的(RCU)TX/RX和模块化设计。Boned和Team之间还是有很多功能上的差异的。例如team支持LACP负载均衡,NS/NA(IPV6),D-BUS接口。这些是bonded接口所不具备的。更多差异可以查看https://github.com/jpirko/libteam/wiki/Bonding-vs.-Team-features

适用场景

当你得团队想要一些boneded所不具备的功能的时候就可以使用team

VLAN
概述

Vlan虚拟LAN,通过在报文里面增加tag来隔离广播域,VLAN允许网络管理员将同一个交换机下或者不同交换机下得主机分组。VLAN报文头如下

file

适用场景

当你想要针对VM/Namespace/或者主机分组得时候,你可以使用VLAN

Vxlan
概述

VXLAN(虚拟机扩展局域网)是一种tunnel协议用来解决VLAN4096个限制的问题的。详情见https://tools.ietf.org/html/rfc7348。
 vlan 网络标识符占24位,因此VXLAN允许支持支持到2^24位的虚拟LANS。而VLAN只有4096个。VXLAN在二层帧上添加一个VXLAN的头部,然后压缩成一个UDP的包。看起来像下面这个

file

适用场景

VXLAN典型的应用场景是在数据中心,将虚拟机主机分割成多个racks。

经典model

file

MacVlan
概述

在VLAN模式下,你在一个网卡之上可以创建多个接口,通过vlan tag号来过滤这些报文。在MACVLAN模式下,你可以在一个网卡之上创造不同mac地址的接口

在macvlan之前,如果你想要从一个虚拟机/namespace里面连接到物理网络,你需要创造一个tap/veth设备,并且veth的一端需要attach到网桥上,而且网桥需要连接到一个物理网卡上面,拓扑图如下

file

现在有了macvlan 你可以直接将物理接口绑定到namespace里面,而不需要网桥。新的拓扑如下
file

macvlan有以下几种模型

Private
绑定在同一个接口上的不同macvlan实例之间是不允许通信的。即使外部设备支持hairpin模式。
通过这种模式,可以将不同namespace放到一个节点上,(确保同一个节点不允许出现同一个namespace里面多个实现,用来实现很挫的基于namespace隔离机制)

file

vepa
一个macvlan实例的数据是可以发送到同一个节点的其他macvlan实现的。但是需要支持发夹弯模式,或者支持TCP/IP转发

file

Bridge
所有的endpoint可以通过物理接口直接互联

file

Passthru
允许单个VM直接连接到物理网卡

file

source
Source模式被用来基于source mac(这个mac是由mac vlan模式下创造出来的)列表来过滤报文。

IPvlan
概述

ipvlan有点类似macvlan,只不过IPVLAN模式下后面的endpoint都带有相同的mac address.

file

Ipvlan 支持L2/L3模式。

L2模式
IPVLAN L2模式下更像macvlan的网桥模式。父接口看起来像一个网桥switch.

file

L3模式
在IPV3模式下, 父接口扮演者一个路由器的角色。在各个endpoint 路由报文, 这种模式具有更好的扩展性。

file

如果有几下匹配到场景那么久可以适用ipvlan

Linux主机连接到的外部交换机已经做了一端口一mac的绑定。
有创建mac个数限制/NIC处于混杂模式/性能的考虑。
如果slave设备放置在一个容易改变的/错误使用的二层环境里面。
MACVTAP/IPVTAP
概述

Macvtap/iptap 是一种新的设备用来简化虚拟桥接网络的。当在物理网卡上创建一个MACVTAP/IPVTAP实例的时候,kernel同样会创建一个字符设备/dev/tapX/(类似TUN/TAP)设备,可以直接被KVM/QEMU使用。
有了MACVTAP/IPVTAP设备,你可以直接用来代替TUN/TAP 或者网桥设备,他们模型如下

file

note:

特别的,macvlan/ipvlan 使得guest./host直接连接到和主机连接的switch。 MACVTAP和IPVTAP之间的区别和MACVLAN/IPVLAN的区别一样的。

Macsec
概述

MACsec(Media Access Control Security)是IEEE针对wired Ethernet LANS安全指定的一个标准。和IPSEC类似,2层macsec 可以保护IP通信,包括ARP,临近网络发现,DHCP。Mac看起来像下面这样

file

Macsec主要适用的场景是在一个标准局域网里面保证所有流量的安全
file

Veth
概述

Veth(virtual Ethernet)设备时本地Ethernet tunnel。这种设备时成对创建的,正如下面看起来这样
报文在设备的一端输入,会立马在另外一端接收到。当一端设备down了,那么另外一块会立马显示down的状态。

file

当namespace需要和main host namespace进行通信的时候就需要veth这个设备。也是容器常用的一种设备。

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 帮助IT小伙伴学到真正的技术