前言
網絡設備是使多台計算機互聯互通的硬件。常見的物理網絡設備有:集線器、交換機、網橋、路由器、網關、網卡(又稱網絡接口控制器 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
