Linux 虛擬網路裝置詳解之 Bridge 網橋

2021-09-19 17:52:35 字數 2754 閱讀 1753

linux 虛擬網路裝置詳解之 bridge 網橋

同 tap/tun、veth-pair 一樣,bridge 也是一種虛擬網路裝置,所以具備虛擬網路裝置的所有特性,比如可以配置 ip、mac 等。

除此之外,bridge 還是乙個交換機,具有交換機所有的功能。

對於普通的網路裝置,就像乙個管道,只有兩端,資料從一端進,從另一端出。而 bridge 有多個埠,資料可以從多個埠進,從多個埠出。

bridge 的這個特性讓它可以接入其他的網路裝置,比如物理裝置、虛擬裝置、vlan 裝置等。bridge 通常充當主裝置,其他裝置為從裝置,這樣的效果就等同於物理交換機的埠連線了一根網線。比如下面這幅圖通過 bridge 連線兩個 vm 的 tap 虛擬網絡卡和物理網絡卡 eth0。

以這個圖來簡單說明下,借助 bridge 來完成同主機兩台 vm 的之間的通訊流程。

首先準備乙個 centos 或 ubuntu 虛擬機器,然後建立乙個 bridge:

copy

ip link add

br0 type bridge ip link set br0 up然後通過virt-manager建立兩個 kvm 虛擬機器:kvm1 和 kvm2(前提得支援巢狀虛擬化),將它們的 vnic 掛到 br0 上,如下圖:

kvm 虛機會使用 tap 裝置作為它的虛擬網絡卡,我們驗證下:

copy

# ps -ef | grep kvm1 libvirt+ 3549

187 ? 00:22:09 qemu-system-x86_64 -enable-kvm -name kvm1 ... -netdev tap,fd=26,id=hostnet0,vhost=on,vhostfd=28

...可以看到,其中網路部分引數,-netdev tap,fd=26表示的就是連線主機上的 tap 裝置。

建立的 fd=26 為讀寫/dev/net/tun的檔案描述符。

使用lsof -p 3549驗證下:

copy

# lsof -p 3549 command pid user fd type device size/off node name ... qemu-system 3549 libvirt-qemu 26u chr 10,200 0t107 135 /dev/net/tun ...可以看到,pid 為 3549 的程序開啟了檔案/dev/net/tun,分配的檔案描述符 fd 為 26。

因此,我們可以得出以下結論:在 kvm 虛機啟動時,會向核心註冊 tap 虛擬網絡卡,同時開啟裝置檔案/dev/net/tun,拿到檔案描述符 fd,然後將 fd 和 tap 關聯,tap 就成了一端連線著使用者空間的 qemu-kvm,一端連著主機上的 bridge 的埠,促使兩者完成通訊。

下面分別給兩虛機配上 ip:10.1.1.2/2410.1.1.3/24,ping 一下:

在 bridge 上抓個包看看:

可以看到,br0 上抓到 ping 的 icmp echo 包和 arp 包。

bridge 裝置通常就是結合 tap/tun、veth-pair 裝置用於虛擬機器、容器網路裡面。這兩種網路,在資料傳輸流程上還有些許不同,我們簡單來看下:

首先是虛擬機器網路,虛擬機器一般通過 tap/tun 裝置將虛擬機器網絡卡同宿主機裡的 bridge 連線起來,完成同主機和跨主機的通訊。如下圖所示:

【**於網路,侵權必刪】

虛擬機器發出的資料報通過 tap 裝置先到達 br0,然後經過 eth0 傳送到物理網路中,資料報不需要經過主機的的協議棧,效率是比較高的。

其次是容器網路(容器網路有多種引申的形式,這裡我們只說 bridge 網路),容器網路和虛擬機器網路類似,不過一般是使用 veth-pair 來連線容器和主機,因為在主機看來,容器就是乙個個被隔離的 namespace,用 veth-pair 更有優勢。如下圖所示:

【**於網路,侵權必刪】

容器的 bridge 網路通常配置成內網形式,要出外網需要走 nat,所以它的資料傳輸不像虛擬機器的橋接形式可以直接跨過協議棧,而是必須經過協議棧,通過 nat 和 ip_forward 功能從物理網絡卡**出去,因此,從效能上看,bridge 網路虛擬機器要優於容器。

linux bridge 是虛擬交換機,功能和物理交換機一樣,用於連線虛擬機器和容器。

虛擬機器網路和容器網路的區別。

bridge 是偏低階的工具,更高階的工具是 open vswitch,這個工具後面再詳說。

Linux 虛擬網路裝置詳解之 Bridge 網橋

前面幾篇文章介紹了 tap tun veth pair,今天這篇來看看 bridge。同 tap tun veth pair 一樣,bridge 也是一種虛擬網路裝置,所以具備虛擬網路裝置的所有特性,比如可以配置 ip mac 等。除此之外,bridge 還是乙個交換機,具有交換機所有的功能。對於普...

Xen的虛擬網路裝置

作為虛擬機器與外界通訊的途徑,虛擬網路裝置在xen的虛擬裝置中具有代表性。虛擬網路裝置的前後端須要通過共享記憶體進行通訊。由於後端須要為多個虛擬機器提供網路服務,因此後端具有網橋的功能。每個虛擬機器擁有乙個或多個網路裝置,通過軟體模擬的網橋進行資料報 虛擬網路裝置包含位於dom n中的前端和位於do...

字元裝置 塊裝置 網路裝置詳解

字元裝置 塊裝置 網路裝置 裝置模型 裝置驅動的 量佔核心程式的50 裝置模型的意義 為了降低裝置多樣性帶來的linux驅動開發的複雜度,以及裝置熱拔插處理 電源管理等,linux核心提出了裝置模型 也稱作driver model 的概念。裝置模型將硬體裝置歸納 分類,然後抽象出一套標準的資料結構和...