虚拟网络介绍

Intro

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

Bridge

概况

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

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

bond

概况

Linux的bonding 驱动提供一种将多个网络接口绑定到一个“bonded”接口的机制。Bonded的依赖不同的模式会有不同的行为。通常speaking ,modes既不提供主备或者负载功能。
在这里插入图片描述
使用场景

使用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报文头如下
在这里插入图片描述
适用场景

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

Vxlan

概述

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

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

经典model
在这里插入图片描述

MacVlan

概述

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

在macvlan之前,如果你想要从一个虚拟机/namespace里面连接到物理网络,你需要创造一个tap/veth设备,并且veth的一端需要attach到网桥上,而且网桥需要连接到一个物理网卡上面,拓扑图如下
在这里插入图片描述
现在有了macvlan 你可以直接将物理接口绑定到namespace里面,而不需要网桥。新的拓扑如下
在这里插入图片描述
macvlan有以下几种模型

Private

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

vepa

一个macvlan实例的数据是可以发送到同一个节点的其他macvlan实现的。但是需要支持发夹弯模式,或者支持TCP/IP转发
在这里插入图片描述

Bridge

所有的endpoint可以通过物理接口直接互联
在这里插入图片描述

Passthru

允许单个VM直接连接到物理网卡
在这里插入图片描述

source

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

IPvlan

概述

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

在这里插入图片描述
Ipvlan 支持L2/L3模式。

L2模式

IPVLAN L2模式下更像macvlan的网桥模式。父接口看起来像一个网桥switch.
在这里插入图片描述

L3模式

在IPV3模式下, 父接口扮演者一个路由器的角色。在各个endpoint 路由报文, 这种模式具有更好的扩展性。
在这里插入图片描述
如果有几下匹配到场景那么久可以适用ipvlan

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

MACVTAP/IPVTAP

概述

Macvtap/iptap 是一种新的设备用来简化虚拟桥接网络的。当在物理网卡上创建一个MACVTAP/IPVTAP实例的时候,kernel同样会创建一个字符设备/dev/tapX/(类似TUN/TAP)设备,可以直接被KVM/QEMU使用。
有了MACVTAP/IPVTAP设备,你可以直接用来代替TUN/TAP 或者网桥设备,他们模型如下
在这里插入图片描述
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看起来像下面这样
在这里插入图片描述
Macsec主要适用的场景是在一个标准局域网里面保证所有流量的安全
在这里插入图片描述

Veth

概述

Veth(virtual Ethernet)设备时本地Ethernet tunnel。这种设备时成对创建的,正如下面看起来这样
报文在设备的一端输入,会立马在另外一端接收到。当一端设备down了,那么另外一块会立马显示down的状态。
在这里插入图片描述
当namespace需要和main host namespace进行通信的时候就需要veth这个设备。也是容器常用的一种设备。

原文链接:https://211.159.168.128/2019/09/03/linux-%E8%99%9A%E6%8B%9F%E7%BD%91%E7%BB%9C%E4%BB%8B%E7%BB%8D/

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值