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

資訊專(zhuān)欄INFORMATION COLUMN

網(wǎng)卡也能虛擬化?網(wǎng)卡虛擬化技術(shù) macvlan 詳解

xiyang / 3575人閱讀

摘要:通過(guò)不同的子接口,也能做到流量的隔離。會(huì)根據(jù)收到包的目的地址判斷這個(gè)包需要交給哪個(gè)虛擬網(wǎng)卡,虛擬網(wǎng)卡再把包交給上層的協(xié)議棧處理。總結(jié)是一種網(wǎng)卡虛擬化技術(shù),能夠?qū)⒁粡埦W(wǎng)卡虛擬出多張網(wǎng)卡。

本文首發(fā)于我的公眾號(hào) cloud_dev,專(zhuān)注于干貨分享,號(hào)內(nèi)有大量書(shū)籍和視頻資源,后臺(tái)回復(fù)「1024」即可領(lǐng)取,歡迎大家關(guān)注,二維碼文末可以?huà)摺?/pre>
01 macvlan 簡(jiǎn)介

前面的文章講過(guò)了幾種 Linux 虛擬網(wǎng)絡(luò)設(shè)備:tap/tun、veth-pair、bridge,它們本質(zhì)上是 Linux 系統(tǒng) 提供的網(wǎng)絡(luò)虛擬化解決方案,今天要講的 macvlan 也是其中的一種,準(zhǔn)確說(shuō)這是一種網(wǎng)卡虛擬化的解決方案。因?yàn)?macvlan 這種技術(shù)能將 一塊物理網(wǎng)卡虛擬成多塊虛擬網(wǎng)卡 ,相當(dāng)于物理網(wǎng)卡施展了 多重影分身之術(shù) ,由一個(gè)變多個(gè)。

02 macvlan 的工作原理

macvlan 是 Linux kernel 支持的新特性,支持的版本有 v3.9-3.19 和 4.0+,比較穩(wěn)定的版本推薦 4.0+。它一般是以?xún)?nèi)核模塊的形式存在,我們可以通過(guò)以下方法判斷當(dāng)前系統(tǒng)是否支持:

# modprobe macvlan
# lsmod | grep macvlan
macvlan                24576  0

如果第一個(gè)命令報(bào)錯(cuò),或者第二個(gè)命令沒(méi)有返回,說(shuō)明當(dāng)前系統(tǒng)不支持 macvlan,需要升級(jí)內(nèi)核。

macvlan 這種技術(shù)聽(tīng)起來(lái)有點(diǎn)像 VLAN,但它們的實(shí)現(xiàn)機(jī)制是完全不一樣的。macvlan 子接口和原來(lái)的主接口是完全獨(dú)立的,可以多帶帶配置 MAC 地址和 IP 地址,而 VLAN 子接口和主接口共用相同的 MAC 地址。VLAN 用來(lái)劃分廣播域,而 macvlan 共享同一個(gè)廣播域。

通過(guò)不同的子接口,macvlan 也能做到流量的隔離。macvlan 會(huì)根據(jù)收到包的目的 MAC 地址判斷這個(gè)包需要交給哪個(gè)虛擬網(wǎng)卡,虛擬網(wǎng)卡再把包交給上層的協(xié)議棧處理。

03 四種模式

根據(jù) macvlan 子接口之間的通信模式,macvlan 有四種網(wǎng)絡(luò)模式:

private 模式

vepa(virtual ethernet port aggregator) 模式

bridge 模式

passthru 模式

默認(rèn)使用的是 vepa 模式。

3.1 private

這種模式下,同一主接口下的子接口之間彼此隔離,不能通信。即使從外部的物理交換機(jī)導(dǎo)流,也會(huì)被無(wú)情地丟掉。

3.2 vepa

這種模式下,子接口之間的通信流量需要導(dǎo)到外部支持 802.1Qbg/VPEA 功能的交換機(jī)上(可以是物理的或者虛擬的),經(jīng)由外部交換機(jī)轉(zhuǎn)發(fā),再繞回來(lái)。

注:802.1Qbg/VPEA 功能簡(jiǎn)單說(shuō)就是交換機(jī)要支持 發(fā)夾(hairpin) 功能,也就是數(shù)據(jù)包從一個(gè)接口上收上來(lái)之后還能再扔回去。

3.3 bridge

這種模式下,模擬的是 Linux bridge 的功能,但比 bridge 要好的一點(diǎn)是每個(gè)接口的 MAC 地址是已知的,不用學(xué)習(xí)。所以,這種模式下,子接口之間就是直接可以通信的。

3.4 passthru

這種模式,只允許單個(gè)子接口連接主接口,且必須設(shè)置成混雜模式,一般用于子接口橋接和創(chuàng)建 VLAN 子接口的場(chǎng)景。

3.5 mactap

和 macvlan 相似的技術(shù)還有一種是 mactap。和 macvlan 不同的是,mactap 收到包之后不是交給協(xié)議棧,而是交給一個(gè) tapX 文件,然后通過(guò)這個(gè)文件,完成和用戶(hù)態(tài)的直接通信。

04 實(shí)踐

在 Linux 系統(tǒng)下,創(chuàng)建 macvlan 的命令形式如下:

ip link add link DEVICE name NAME type { macvlan | macvtap } mode { private | vepa | bridge |
              passthru  [ nopromisc ] }

通常,多帶帶使用 macvlan 毫無(wú)意義,一般都是結(jié)合 VM 和容器來(lái)構(gòu)建網(wǎng)絡(luò)。下面我們就簡(jiǎn)單使用 namespace 來(lái)看看 Linux 是怎么使用 macvlan 的。

實(shí)驗(yàn)拓?fù)淙缦拢?/p>

在我的系統(tǒng)中,以接口 enp0s8 為例創(chuàng)建兩個(gè) macvlan 子接口(使用 bridge 模式),配置 IP 并將其掛到兩個(gè) namespace 中,測(cè)試連通性。

# 創(chuàng)建兩個(gè) macvlan 子接口
ip link add link enp0s8 dev mac1 type macvlan mode bridge
ip link add link enp0s8 dev mac2 type macvlan mode bridge

# 創(chuàng)建兩個(gè) namespace
ip netns add ns1
ip netns add ns2

# 將兩個(gè)子接口分別掛到兩個(gè) namespace 中
ip link set mac1 netns ns1
ip link set mac2 netns ns2

# 配置 IP 并啟用
ip netns exec ns1 ip a a 192.168.56.122/24 dev mac1
ip netns exec ns1 ip l s mac1 up

ip netns exec ns1 ip a a 192.168.56.123/24 dev mac2
ip netns exec ns2 ip l s mac2 up

注:enp0s8 的 IP 是 192.168.56.110/24,配置的子接口 IP 也必須是同一網(wǎng)段的。

完了兩個(gè)子接口 ping 一下:

root@ubuntu:~# ip netns exec ns1 ip a show mac1
9: mac1@if3:  mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1
    link/ether 2e:6e:d9:08:c5:05 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.56.122/24 scope global mac1
       valid_lft forever preferred_lft forever
    inet6 fe80::2c6e:d9ff:fe08:c505/64 scope link 
       valid_lft forever preferred_lft forever
root@ubuntu:~# ip netns exec ns1 ping 192.168.56.123
PING 192.168.56.123 (192.168.56.123) 56(84) bytes of data.
64 bytes from 192.168.56.123: icmp_seq=1 ttl=64 time=0.052 ms
64 bytes from 192.168.56.123: icmp_seq=2 ttl=64 time=0.028 ms
^C
--- 192.168.56.123 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.028/0.040/0.052/0.012 ms

可以看到,能夠 ping 通,如果把上面的 mode 換成其他模式就行不通了,這個(gè)就留給大家去實(shí)驗(yàn)了(默認(rèn)是 vepa 模式)。

另外,在 docker 中,macvlan 是一種較為重要的跨主機(jī)網(wǎng)絡(luò)模型,這塊的內(nèi)容就留作下篇文章再做講解了。

05 總結(jié)

macvlan 是一種網(wǎng)卡虛擬化技術(shù),能夠?qū)⒁粡埦W(wǎng)卡虛擬出多張網(wǎng)卡。

macvlan 的四種通信模式,常用模式是 bridge。

思考一下:

macvlan bridge 和 bridge 的異同點(diǎn)

還有一種類(lèi)似的技術(shù),多張?zhí)摂M網(wǎng)卡共享相同 MAC 地址,但有獨(dú)立的 IP 地址,這是什么技術(shù)?

這兩個(gè)問(wèn)題大家可以留言互動(dòng)一下。


我的公眾號(hào) cloud_dev,號(hào)內(nèi)有大量書(shū)籍和視頻資源,后臺(tái)回復(fù)「1024」即可領(lǐng)取,分享的內(nèi)容包括但不限于云計(jì)算虛擬化、容器、OpenStack、K8S、霧計(jì)算、網(wǎng)絡(luò)、工具、SDN、OVS、DPDK、Linux、Go、Python、C/C++編程技術(shù)等內(nèi)容,歡迎大家關(guān)注。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/11503.html

相關(guān)文章

  • Docker 網(wǎng)絡(luò)模型之 macvlan 詳解,圖解,實(shí)驗(yàn)完整

    摘要:首先分別在兩臺(tái)主機(jī)上將物理網(wǎng)口創(chuàng)建出兩個(gè)子接口。然后創(chuàng)建兩個(gè)子接口,一個(gè)作為網(wǎng)絡(luò)的網(wǎng)關(guān),一個(gè)作為的網(wǎng)關(guān)。對(duì)子接口配置網(wǎng)關(guān)并啟用這樣之后再?gòu)暮停涂梢酝恕? 本文首發(fā)于我的公眾號(hào) Linux云計(jì)算網(wǎng)絡(luò)(id: cloud_dev),專(zhuān)注于干貨分享,號(hào)內(nèi)有 10T 書(shū)籍和視頻資源,后臺(tái)回復(fù)「1024」即可領(lǐng)取,歡迎大家關(guān)注,二維碼文末可以?huà)摺?上一篇文章我們?cè)敿?xì)介紹了 macvlan 這種...

    atinosun 評(píng)論0 收藏0
  • Docker 網(wǎng)絡(luò)模型之 macvlan 詳解,圖解,實(shí)驗(yàn)完整

    摘要:首先分別在兩臺(tái)主機(jī)上將物理網(wǎng)口創(chuàng)建出兩個(gè)子接口。然后創(chuàng)建兩個(gè)子接口,一個(gè)作為網(wǎng)絡(luò)的網(wǎng)關(guān),一個(gè)作為的網(wǎng)關(guān)。對(duì)子接口配置網(wǎng)關(guān)并啟用這樣之后再?gòu)暮停涂梢酝恕? 本文首發(fā)于我的公眾號(hào) Linux云計(jì)算網(wǎng)絡(luò)(id: cloud_dev),專(zhuān)注于干貨分享,號(hào)內(nèi)有 10T 書(shū)籍和視頻資源,后臺(tái)回復(fù)「1024」即可領(lǐng)取,歡迎大家關(guān)注,二維碼文末可以?huà)摺?上一篇文章我們?cè)敿?xì)介紹了 macvlan 這種...

    Ajian 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<