虚拟网络设备介绍:Bridge 和 VETH

时间:2024-03-11 15:35:17

前言

网络设备是使多台计算机互联互通的硬件。常见的物理网络设备有:集线器、交换机、网桥、路由器、网关、网卡(又称网络接口控制器 Network Interface Controller;网络适配器 Network adapter)。对于 Linux 用户,想要使用网络功能,并不是直接操作硬件设备,而是需要操作一个 Linux 为我们抽象出来的设备,既通用的 Linux 网络设备来完成。以物理网卡为例,Linux 会为其生成一个网络设备实例,如 eth0,用户需要对 eth0 发出命令以配置或使用它。像 eth0 这样连接软件和网络硬件、抽象出来的网络设备称为网络接口

随着网络技术,虚拟化技术的发展,更多的高级网络设备被加入了到了 Linux 中,并广泛运用在容器、云环境中。本文介绍两种虚拟网络设备的工作原理:Bridge 和 VETH。

Bridge

网桥是工作在 TCP/IP 二层协议 的虚拟网络设备,与现实世界中的交换机功能相似。与其他虚拟网络设备一样,可以配置 IP、MAC。Bridge 的主要功能是在多个接入 Bridge 的网络接口间转发数据包。如下图,Bridge (设备名 br0) 充当主设备,连接了四个从设备,分别是 tap1,tap2,veth1,eth0。

VETH

VETH (virtual Ethernet) 设备总是成对出现,彼此相连。 一个设备从协议栈读取数据后,会将数据发送到另一个设备上去。VETH 可以用于两个 namespace 间的网络通信。如果 VETH 设备对中有一个设备不可用,则整个链路也不可用。

延伸阅读

[1] 理解 Linux 网络栈:Linux 网络协议栈简单总结
[2] Introduction to Linux interfaces for virtual networking