国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Linux 虛擬網絡設備詳解之 Bridge 網橋

tomorrowwu / 3210人閱讀

摘要:創建的為讀寫的文件描述符。如下圖所示圖片來源于網絡,侵權必刪虛擬機發出的數據包通過設備先到達,然后經過發送到物理網絡中,數據包不需要經過主機的的協議棧,效率是比較高的。虛擬機網絡和容器網絡的區別。

本文首發于我的公眾號 CloudDeveloper(ID: cloud_dev),專注于干貨分享,號內有大量書籍和視頻資源,后臺回復「1024」即可領取,歡迎大家關注,二維碼文末可以掃。

前面幾篇文章介紹了 tap/tun、veth-pair,今天這篇來看看 Bridge。

Bridge 是什么

同 tap/tun、veth-pair 一樣,Bridge 也是一種虛擬網絡設備,所以具備虛擬網絡設備的所有特性,比如可以配置 IP、MAC 等。

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

對于普通的網絡設備,就像一個管道,只有兩端,數據從一端進,從另一端出。而 Bridge 有多個端口,數據可以從多個端口進,從多個端口出。

Bridge 的這個特性讓它可以接入其他的網絡設備,比如物理設備、虛擬設備、VLAN 設備等。Bridge 通常充當主設備,其他設備為從設備,這樣的效果就等同于物理交換機的端口連接了一根網線。比如下面這幅圖通過 Bridge 連接兩個 VM 的 tap 虛擬網卡和物理網卡 eth0。

VM 同主機通信

以這個圖來簡單說明下,借助 Bridge 來完成同主機兩臺 VM 的之間的通信流程。

首先準備一個 centos 或 ubuntu 虛擬機,然后創建一個 bridge:

ip link add br0 type bridge
ip link set br0 up

然后通過 virt-manager 創建兩個 kvm 虛擬機:kvm1 和 kvm2(前提得支持嵌套虛擬化),將它們的 vNIC 掛到 br0 上,如下圖:

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

# ps -ef | grep kvm1
libvirt+      3549     1  87 ?        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 驗證下:

# 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 常用使用場景

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,這個工具后面再詳說。


我的公眾號 CloudDeveloper(ID: cloud_dev),號內有大量書籍和視頻資源,后臺回復「1024」即可領取,分享的內容包括但不限于云計算虛擬化、容器、OpenStack、K8S、霧計算、網絡、工具、SDN、OVS、DPDK、Linux、Go、Python、C/C++編程技術等內容,歡迎大家關注。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/11506.html

相關文章

  • 淺談k8s cni 插件

    摘要:即配置網絡和解除網絡配置。類類型的插件,在執行命令時會分配一個給調用者。執行命令時會將調用者指定的放回池。向刪除時,同樣通過請求,解除該的租約。組件通常在組件執行完畢后執行 目前不論是個人還是企業,在使用k8s時,都會采用CNI作為集群網絡方案實現的規范。 在早先的k8s版本中,kubelet代碼里提供了networkPlugin,networkPlugin是一組接口,實現了pod的網...

    fireflow 評論0 收藏0
  • Ubuntu 18.04 LTS安裝KVM虛擬

    摘要:前一陣使用在最新的上安裝了來虛擬一個小的集群,將主要過程和其中遇到的一些問題記錄下來。上面命令執行結果如果返回,表示不支持虛擬化技術。 showImg(https://segmentfault.com/img/bVbcRjF?w=634&h=473); 前一陣使用在最新的Ubuntu 18.04上安裝了KVM來虛擬一個小的VM集群,將主要過程和其中遇到的一些問題記錄下來。 準備工作 首...

    denson 評論0 收藏0

發表評論

0條評論

tomorrowwu

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<