Linux 虚拟网络设备 veth-pair 详解,这篇料很足

资讯 2024-06-16 阅读:31 评论:0
美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

本文介绍蜂巢的连通性及其连接,以及两个命名空间之间的连通性。

按定义,Veth-pair是一对虚拟设备界面,与窃听/tun设备不同,它们以对对方式出现。结尾与协议柜台相连,结尾与另一端相连。如下图所示:

  Linux 虚拟网络设备 veth-pair 详解,这篇料很足

由于这一特点,它往往充当连接各种虚拟网络装置的桥梁,一般是“两个名称空间之间的连接”、“桥梁、OVS之间的连接”、“多克集装箱之间的连接”等等,以建造非常复杂的虚拟网络结构,如OpenStack中子。

我们分别对Veth0和Veth1和IP:10.1.1.2 和 10.1.1.3进行配对, 然后我们从Veth0点到Veth1点。

拿一个袋子,tcpdump -nt -i veth0。

  root@ubuntu:~#?tcpdump?-nnt?-i?veth0

  tcpdump:?verbose?output?suppressed,?use?-v?or?-vv?for?full?protocol?decode

  listening?on?veth0,?link-type?EN10MB?(Ethernet),?capture?size?262144?bytes

  ARP,?Request?who-has?10.1.1.3?tell?10.1.1.2,?length?28

ARP,谁? 10.1.1.3?告诉?10.1.1.2?Length.28登录并复制。

可以看出,由于Veth0和Veth1在同一节中,并且首次连接,ARP软件包是提前发放的,但Veth1对ARP软件包没有反应。

经审查后,这是由于我使用的Ubuntu系统中与ARP有关的默认配置限制,需要修改配置:

  echo?1?>?/proc/sys/net/ipv4/conf/veth1/accept_local

  echo?1?>?/proc/sys/net/ipv4/conf/veth0/accept_local

  echo?0?>?/proc/sys/net/ipv4/conf/all/rp_filter

  echo?0?>?/proc/sys/net/ipv4/conf/veth0/rp_filter

/proc/sys/net/ipv4/conf/veth1/rp_ filter 登录

完事后我就没事了

  root@ubuntu:~#?ping?-I?veth0?10.1.1.3?-c?2

  PING?10.1.1.3?(10.1.1.3)?from?10.1.1.2?veth0:?56(84)?bytes?of?data.

  64?bytes?from?10.1.1.3:?icmp_seq=1?ttl=64?time=0.047?ms

  64?bytes?from?10.1.1.3:?icmp_seq=2?ttl=64?time=0.064?ms

  ---?10.1.1.3?ping?statistics?---

  2?packets?transmitted,?2?received,?0%?packet?loss,?time?3008ms

在登录后为0.047/0.072/033/0.025毫秒

我们更关心这个沟通过程, 我们可以看看它。

对于 Veth0 :

  root@ubuntu:~#?tcpdump?-nnt?-i?veth0

  tcpdump:?verbose?output?suppressed,?use?-v?or?-vv?for?full?protocol?decode

  listening?on?veth0,?link-type?EN10MB?(Ethernet),?capture?size?262144?bytes

  ARP,?Request?who-has?10.1.1.3?tell?10.1.1.2,?length?28

  ARP,?Reply?10.1.1.3?is-at?5a:07:76:8e:fb:cd,?length?28

  IP?10.1.1.2?>?10.1.1.3:?ICMP?echo?request,?id?2189,?seq?1,?length?64

  IP?10.1.1.2?>?10.1.1.3:?ICMP?echo?request,?id?2189,?seq?2,?length?64

  IP?10.1.1.2?>?10.1.1.3:?ICMP?echo?request,?id?2189,?seq?3,?length?64

IP? 10.1.1.2? 10.1.1.3: IP? IP? 10.1.1.2? 10.1.3? 10.1.3:? ICMP? echo? request?

蔬菜1:

  root@ubuntu:~#?tcpdump?-nnt?-i?veth1

  tcpdump:?verbose?output?suppressed,?use?-v?or?-vv?for?full?protocol?decode

  listening?on?veth1,?link-type?EN10MB?(Ethernet),?capture?size?262144?bytes

  ARP,?Request?who-has?10.1.1.3?tell?10.1.1.2,?length?28

  ARP,?Reply?10.1.1.3?is-at?5a:07:76:8e:fb:cd,?length?28

  IP?10.1.1.2?>?10.1.1.3:?ICMP?echo?request,?id?2189,?seq?1,?length?64

  IP?10.1.1.2?>?10.1.1.3:?ICMP?echo?request,?id?2189,?seq?2,?length?64

  IP?10.1.1.2?>?10.1.1.3:?ICMP?echo?request,?id?2189,?seq?3,?length?64

IP? 10.1.1.2? 10.1.1.3: IP? IP? 10.1.1.2? 10.1.3? 10.1.3:? ICMP? echo? request?

奇怪,我们没有看到IPIC的回声答录包, 如何运作?

事实上,这里就是我们要去的地方,呃,当地人, 拿一个袋子,看看它。

  root@ubuntu:~#?tcpdump?-nnt?-i?lo

  tcpdump:?verbose?output?suppressed,?use?-v?or?-vv?for?full?protocol?decode

  listening?on?lo,?link-type?EN10MB?(Ethernet),?capture?size?262144?bytes

  IP?10.1.1.3?>?10.1.1.2:?ICMP?echo?reply,?id?2244,?seq?1,?length?64

  IP?10.1.1.3?>?10.1.1.2:?ICMP?echo?reply,?id?2244,?seq?2,?length?64

  IP?10.1.1.3?>?10.1.1.2:?ICMP?echo?reply,?id?2244,?seq?3,?length?64

IP? 10.1.1.3? 10.1.1.2: 国际CMP?echo?repy?id?2244?seq?4?

为什么?

我们会看到整个通讯过程。

首先, ping 程序构建 ICMP 元素, 并通过插座将其发送到协议存储处 。

由于Ping首次指定了Veth0,需要发出ARP请求,否则数据集将直接交给Veth0。

因为 veth0 连接到 veth1, ICMP 直接发送到 veth1 。

收到请求后,在另一端将第1节交给协议柜台。

此 IP 可在协议仓库本地获取, 因此, ICMP 回复软件包会建好, 路线表会经过审查, 返回到10.1.0 部分的数据包会到达本地后端入口, 回复软件包会送到 lo 入口( Proute show 表 0 被优先处理 ) 。

Lo从礼宾室收到了一个答复袋,什么也没做,他回到了协议厅。

收到答复包后,等待包内有一个套座,包裹交给套座。

正在等待用户标注的 ping 程序找到要返回的锁链, 收到IPC 的回复包 。

以下图表说明了整个过程:

  Linux 虚拟网络设备 veth-pair 详解,这篇料很足

命名空间是Linux 2.6.x在内核版本之后支持的一个特征,后者主要用于分离资源。使用命名空间,一个Linux系统可以抽取多个网络子系统,每个系统都有自己的网络设备、协议计数器等,而不会相互影响。

如果需要在不同地名空间之间进行沟通,答案是用蔬菜作为桥梁。

视连接的方式和大小而定,它可分为“直接连接”、“桥梁连接”和“OVS连接”。

直接连接是连接的最容易的方式,如下:一对veth-pair直接连接两个命名空间。

  Linux 虚拟网络设备 veth-pair 详解,这篇料很足

配置 Veth-pair 的 IP 配置, 测试连接 :

创建? 命名空间

  ip?netns?a?ns1

  ip?netns?a?ns2

创造一对情侣?

  ip?l?a?veth0?type?veth?peer?name?veth1

会吗? 蔬菜0 蔬菜1?

  ip?l?s?veth0?netns?ns1

  ip?l?s?veth1?netns?ns2

? 两个? veth0 veth1? 与IP?

  ip?netns?exec?ns1?ip?a?a?10.1.1.2/24?dev?veth0

  ip?netns?exec?ns1?ip?l?s?veth0?up

  ip?netns?exec?ns2?ip?a?a?10.1.1.3/24?dev?veth1

  ip?netns?exec?ns2?ip?l?s?veth1?up

? 从? 蔬菜0? ping?

  [root@localhost?~]#?ip?netns?exec?ns1?ping?10.1.1.3

  PING?10.1.1.3?(10.1.1.3)?56(84)?bytes?of?data.

  64?bytes?from?10.1.1.3:?icmp_seq=1?ttl=64?time=0.073?ms

  64?bytes?from?10.1.1.3:?icmp_seq=2?ttl=64?time=0.068?ms

  ---?10.1.1.3?ping?statistics?---

  15?packets?transmitted,?15?received,?0%?packet?loss,?time?14000ms

在登录后为0.068/0.084/0.201/0.032吗?

Linux桥相当于一个开关 它可以转换两个命名空间的流量, 让我们看看Veth -pair在其中扮演什么角色。

如下,两对Veth-pair将两个命名空间连接到Bridge。

  Linux 虚拟网络设备 veth-pair 详解,这篇料很足

配置具有相同veth-pair 的 IP 配置, 测试它们的连接 :

? 首先创造大桥? Bren

  ip?l?a?br0?type?bridge

  ip?l?s?br0?up?

创造两对对

  ip?l?a?veth0?type?veth?peer?name?br-veth0

  ip?l?a?veth1?type?veth?peer?name?br-veth1

两对 香肠 和两对 ns和br0

  ip?l?s?veth0?netns?ns1

  ip?l?s?br-veth0?master?br0

  ip?l?s?br-veth0?up

  ip?l?s?veth1?netns?ns2

  ip?l?s?br-veth1?master?br0

  ip?l?s?br-veth1?up

? 他们的两个? 蜂窝? 配置? IP?

  ip?netns?exec?ns1?ip?a?a?10.1.1.2/24?dev?veth0

  ip?netns?exec?ns1?ip?l?s?veth0?up

  ip?netns?exec?ns2?ip?a?a?10.1.1.3/24?dev?veth1

  ip?netns?exec?ns2?ip?l?s?veth1?up

  #?veth0?ping?veth1

  [root@localhost?~]#?ip?netns?exec?ns1?ping?10.1.1.3

  PING?10.1.1.3?(10.1.1.3)?56(84)?bytes?of?data.

  64?bytes?from?10.1.1.3:?icmp_seq=1?ttl=64?time=0.060?ms

  64?bytes?from?10.1.1.3:?icmp_seq=2?ttl=64?time=0.105?ms

  ---?10.1.1.3?ping?statistics?---

  2?packets?transmitted,?2?received,?0%?packet?loss,?time?999ms

在登录后为0.060/0.082/0.105/0.024吗?

OVS是一座第三方开源桥, 比Linux桥更强大, 对于同样的实验,我们使用OVS来观察会发生什么。

如下图所示:

  Linux 虚拟网络设备 veth-pair 详解,这篇料很足

两个命名空间之间连接的相同测试 :

? 与命令从???

  ovs-vsctl?add-br?ovs-br

创造两对对

  ip?l?a?veth0?type?veth?peer?name?ovs-veth0

  ip?l?a?veth1?type?veth?peer?name?ovs-veth1

? 你会加吗?

  ip?l?s?veth0?netns?ns1

  ovs-vsctl?add-port?ovs-br?ovs-veth0

  ip?l?s?ovs-veth0?up

  ip?l?s?veth1?netns?ns2

  ovs-vsctl?add-port?ovs-br?ovs-veth1

  ip?l?s?ovs-veth1?up

? 这里的蜂巢? 配置? IP?

  ip?netns?exec?ns1?ip?a?a?10.1.1.2/24?dev?veth0

  ip?netns?exec?ns1?ip?l?s?veth0?up

  ip?netns?exec?ns2?ip?a?a?10.1.1.3/24?dev?veth1

  ip?netns?exec?ns2?ip?l?s?veth1?up

  #?veth0?ping?veth1

  [root@localhost?~]#?ip?netns?exec?ns1?ping?10.1.1.3

  PING?10.1.1.3?(10.1.1.3)?56(84)?bytes?of?data.

  64?bytes?from?10.1.1.3:?icmp_seq=1?ttl=64?time=0.311?ms

  64?bytes?from?10.1.1.3:?icmp_seq=2?ttl=64?time=0.087?ms

  ^C

  ---?10.1.1.3?ping?statistics?---

  2?packets?transmitted,?2?received,?0%?packet?loss,?time?999ms

ltt?min/avg/max/mdev?=0.087/0.199/0.311/0.11?

视网膜作为虚拟网络的桥梁,将多个网络设备与复杂的网络连接起来。

三大经典实验是直接相连的,通过桥梁连接,通过OVS连接。

  http://www.opencloudblog.com/?p=66

  https://segmentfault.com/a/1190000009251098

这些是Linux虚拟网络设备Veth-pair的详情,非常详细。 请多注意中文的php 和其他相关文章!

美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址
文字格式和图片示例

注册有任何问题请添加 微信:MVIP619 拉你进入群

弹窗与图片大小一致 文章转载注明

分享:

扫一扫在手机阅读、分享本文

发表评论
平台列表
美化布局示例

欧易(OKX)

  全球官网 大陆官网

币安(Binance)

  官网

火币(HTX)

  官网

Gate.io

  官网

Bitget

  官网

deepcoin

  官网
热门文章
  • 0.00003374个比特币等于多少人民币/美金

    0.00003374个比特币等于多少人民币/美金
    0.00003374比特币等于多少人民币?根据比特币对人民币的最新汇率,0.00003374比特币等于2.2826 1222美元/16.5261124728人民币。比特币(BTC)美元(USDT)人民币(CNY)0.00003374克洛克-0/22216.5261124728比特币对人民币的最新汇率为:489807.72 CNY(1比特币=489807.72人民币)(1美元=7.24人民币)(0.00003374USDT=0.0002442776 CNY)。汇率更新于2024...
  • 134 USD toBTC Calculator -

    134                            USD                        toBTC                        Calculator -
    For the week (7 days) Date Day 134 USD to BTC Changes Changes % June...
  • 0.00006694个比特币等于多少人民币/美金

    0.00006694个比特币等于多少人民币/美金
    0.00006694比特币等于多少人民币?根据比特币对人民币的最新汇率,0.00006694比特币等于4.53424784美元/32.5436 16人民币。比特币(BTC)美元(USDT)人民币(CNY)0.000066944.53424784【比特币密码】32.82795436 16比特币对人民币的最新汇率为:490408.64 CNY(1比特币=490408.64人民币)(1美元=7.24人民币)(0.00006694USDT=0.0004846456 CNY)汇率更新时...
  • 12年怎么购买比特币?比特币投资,轻松掌控

    12年怎么购买比特币?比特币投资,轻松掌控
    12年怎么购买比特币?买卖比特币可以通过以下交易所进行购买,分别是:欧易官网平台、ZG交易所、艾戴克斯交易所、C2CX交易软件、BaseFEX交易APP、波网交易平台、安银交易所、BitMart交易软件、紫牛币交所交易APP和澳网(AOMEX)交易平台等等十大平台下载,高效安全的数字货币交易平台。How do you buy bitcoins in 12 years? Bitcoins can be purchased through ten major platforms...
  • 0.00015693个比特币等于多少人民币/美金

    0.00015693个比特币等于多少人民币/美金
    0.000 15693比特币等于多少人民币?根据比特币对人民币的最新汇率,0.000 15693比特币等于10.6 1678529美元/76.86554996人民币。比特币(BTC)【比特币价格翻倍】美元(USDT)人民币(CNY)0.000/克洛克-0/5693【数字货币矿机】10.6 167852976.8655254996比特币对人民币的最新汇率为:489,807.72 CNY(1比特币= 489,807.72人民币)(1美元=7.24人民币)(0.00015693 U...
标签列表