本文首發於我的公眾號 Linux雲計算網絡(id: cloud_dev),專注於干貨分享,號內有 10T 書籍和視頻資源,后台回復「1024」即可領取,歡迎大家關注,二維碼文末可以掃。
Linux 虛擬網絡的背后都是由一個個的虛擬設備構成的。虛擬化技術沒出現之前,計算機網絡系統都只包含物理的網卡設備,通過網卡適配器,線纜介質,連接外部網絡,構成龐大的 Internet。
然而,隨着虛擬化技術的出現,網絡也隨之被虛擬化,相較於單一的物理網絡,虛擬網絡變得非常復雜,在一個主機系統里面,需要實現諸如交換、路由、隧道、隔離、聚合等多種網絡功能。
而實現這些功能的基本元素就是虛擬的網絡設備,比如 tap、tun 和 veth-pair。
tap/tun
tap/tun 提供了一台主機內用戶空間的數據傳輸機制。它虛擬了一套網絡接口,這套接口和物理的接口無任何區別,可以配置 IP,可以路由流量,不同的是,它的流量只在主機內流通。
tap/tun 有些許的不同,tun 只操作三層的 IP 包,而 tap 操作二層的以太網幀。
veth-pair
veth-pair 是成對出現的一種虛擬網絡設備,一端連接着協議棧,一端連接着彼此,數據從一端出,從另一端進。
它的這個特性常常用來連接不同的虛擬網絡組件,構建大規模的虛擬網絡拓撲,比如連接 Linux Bridge、OVS、LXC 容器等。
一個很常見的案例就是它被用於 OpenStack Neutron,構建非常復雜的網絡形態。
總結
最后,總結一下,我們提到幾種網絡設備,eth0、tap、tun、veth-pair,這些都構成了如今雲網絡必不可少的元素。
我的公眾號 「Linux雲計算網絡」(id: cloud_dev) ,號內有 10T 書籍和視頻資源,后台回復 「1024」 即可領取,分享的內容包括但不限於 Linux、網絡、雲計算虛擬化、容器Docker、OpenStack、Kubernetes、工具、SDN、OVS、DPDK、Go、Python、C/C++編程技術等內容,歡迎大家關注。