中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解析Linux veth pair

發布時間:2021-10-21 17:07:14 來源:億速云 閱讀:169 作者:柒染 欄目:云計算

本篇文章給大家分享的是有關如何解析Linux veth pair,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

Linux veth pair 詳解

veth pair是成對出現的一種虛擬網絡設備接口,一端連著網絡協議棧,一端彼此相連。如下圖所示:

如何解析Linux veth pair

由于它的這個特性,常常被用于構建虛擬網絡拓撲。例如連接兩個不同的網絡命名空間(netns),連接docker容器,連接網橋(Bridge)等,其中一個很常見的案例就是OpenStack Neutron底層用它來構建非常復雜的網絡拓撲。

如何使用?

創建一對veth

ip link add <veth name> type veth peer name <peer name>

實驗

我們改造上一節完成的netns實驗,使用veth pair將兩個的隔離netns連接起來。如下圖所示:

如何解析Linux veth pair

我們首先創建一對veth設備,將veth設備分別移動到兩個netns中并啟動。

# 創建一對veth
ip link add veth0 type veth peer name veth2
# 將veth移動到netns中
ip link set veth0 netns ns0
ip link set veth2 netns ns1
# 啟動
ip netns exec ns0 ip link set veth0 up
ip netns exec ns1 ip link set veth2 up

接下來我們測試一下。

使用ip netns exec ns0 ping 10.0.0.2在命名空間ns0中測試與tap1的網絡連通性。

PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
From 10.0.0.1 icmp_seq=1 Destination Host Unreachable
From 10.0.0.1 icmp_seq=2 Destination Host Unreachable
From 10.0.0.1 icmp_seq=3 Destination Host Unreachable
^C
--- 10.0.0.2 ping statistics ---
5 packets transmitted, 0 received, +3 errors, 100% packet loss, time 77ms
pipe 4

使用ip netns exec ns1 ping 10.0.0.1在命名空間ns1中測試與tap0的網絡連通性。

PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
From 10.0.0.2 icmp_seq=1 Destination Host Unreachable
From 10.0.0.2 icmp_seq=2 Destination Host Unreachable
From 10.0.0.2 icmp_seq=3 Destination Host Unreachable
^C
--- 10.0.0.1 ping statistics ---
4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 108ms
pipe 4

什么情況?為什么網絡還是不通呢?答案就是路由配置有問題。

使用ip netns exec ns0 route -n查看ns0的路由表。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tap0

使用ip netns exec ns1 route -n查看ns1的路由表。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tap1

原來訪問10.0.0.0/24的流量都從tap設備發出去了,又因為tap設備沒有和其他設備相連,發出去的數據報文不會被處理,因此還是訪問不到目標IP,我們來修改一下路由,讓訪問10.0.0.0/24的流量從veth設備發出。

#修改路由出口為veth
ip netns exec ns0 ip route change 10.0.0.0/24 via 0.0.0.0 dev veth0
ip netns exec ns1 ip route change 10.0.0.0/24 via 0.0.0.0 dev veth2

我們再來看一下路由

使用ip netns exec ns0 route -n查看ns0的路由表。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 veth0

使用ip netns exec ns1 route -n查看ns1的路由表。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 veth2

最后我們再來測試一下。

使用ip netns exec ns0 ping 10.0.0.2在命名空間ns0中測試與tap1的網絡連通性。

PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.031 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.035 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.037 ms
64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=0.043 ms
^C
--- 10.0.0.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 103ms
rtt min/avg/max/mdev = 0.031/0.036/0.043/0.007 ms

使用ip netns exec ns1 ping 10.0.0.1在命名空間ns1中測試與tap0的網絡連通性。

PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.027 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.047 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.051 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=0.042 ms
^C
--- 10.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 66ms
rtt min/avg/max/mdev = 0.027/0.041/0.051/0.012 ms

可以看到我們使用veth pair將兩個隔離的netns成功的連接到了一起。

但是這樣的網絡拓撲存在一個弊端,隨著網絡設備的增多,網絡連線的復雜度將成倍增長。 如果連接三個netns時,網絡連線就成了下圖的樣子

如何解析Linux veth pair

而如果連接四個netns時,網絡連線就成了下圖的樣子

如何解析Linux veth pair

如果有五臺設備。。。

有沒有什么技術可以解決這個問題呢?答案是有的,Linux Bridge(網橋)。下一節我們將使用網橋來將多個隔離的netns連接起來,這樣網絡連線就非常清爽了。

以上就是如何解析Linux veth pair,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泰州市| 子长县| 石家庄市| 芮城县| 呼图壁县| 紫阳县| 赫章县| 如东县| 海城市| 洪雅县| 信丰县| 凉城县| 许昌市| 石城县| 黄大仙区| 托克托县| 崇明县| 八宿县| 湾仔区| 禹州市| 和田县| 历史| 北辰区| 垫江县| 宜城市| 姜堰市| 汤阴县| 鹤岗市| 乌鲁木齐市| 阿拉善左旗| 通榆县| 盐城市| 河西区| 玉田县| 宁河县| 宁远县| 奇台县| 老河口市| 且末县| 新津县| 宁国市|