Linux虚拟网络设备veth-pair有什么用

  介绍

这篇文章将为大家详细讲解有关Linux虚拟网络设备veth-pair有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。


01 veth-pair是什么

顾名思义,veth-pair就是一对的虚拟设备接口,和水龙头/桶设备不同的是,它都是成对出现的。一端连着协议栈,一端彼此相连着。如下图所示:

癓inux虚拟网络设备veth-pair有什么用“

正因为有这个特性,它常常充当着一个桥梁,连接着各种虚拟网络设备,典型的例子像”两个名称空间之间的连接”,“桥机汇之间的连接”、“码头工人容器之间的连接”等等,以此构建出非常复杂的虚拟网络结构,比如OpenStack中子。

02 veth-pair的连通性

我们给上图中的veth0和veth2分别配上IP: 10.1.1.2和10.1.1.3,然后从veth0萍一下veth2。理论上它们处于同网段,是能ping通的,但结果却是平不通。

抓个包看看,<代码> tcpdump例数十分我veth0

root@ubuntu: ~ # tcpdump例数十分我veth0   tcpdump:详细输出镇压,使用- v或vv完整协议解码   听>回声1比;/proc/sys/net/ipv4/conf/veth2/accept_local   回声1比;/proc/sys/net/ipv4/conf/veth0/accept_local   回声0比;/proc/sys/net/ipv4/conf/all/rp_filter   回声0比;/proc/sys/net/ipv4/conf/veth0/rp_filter   回声0比;/proc/sys/net/ipv4/conf/veth2/rp_filter

完了再平就行了。

root@ubuntu: ~ #萍我veth0 10.1.1.3 - c 2   从10.1.1.2 veth0萍10.1.1.3(10.1.1.3):56(84)字节的数据。   从10.1.1.3 64字节:icmp_seq=1 ttl=64=0.047 ms   从10.1.1.3 64字节:icmp_seq=2 ttl=64=0.064 ms      推荐- - - - - - - - - 10.1.1.3萍统计数据   2包传输,2,0%包丢失,3008毫秒的时间   rtt min/avg/max/mdev 0.113/0.025/0.072=0.047/

我女士们对这个通信过程比较感兴趣,可以抓包看看。

对于veth0口:

root@ubuntu: ~ # tcpdump例数十分我veth0   tcpdump:详细输出镇压,使用- v或vv完整协议解码   听> root@ubuntu: ~ # tcpdump例数十分我veth2   tcpdump:详细输出镇压,使用- v或vv完整协议解码   听> root@ubuntu: ~ # tcpdump例数十分我瞧   tcpdump:详细输出镇压,使用- v或vv完整协议解码   听alt=" Linux虚拟网络设备veth-pair有什么用“>

03两个名称空间之间的连通性

名称空间是Linux 2.6。x内核版本之后支持的特性,主要用于资源的隔离。有了名称空间,一个Linux系统就可以抽象出多个网络子系统,各子系统间都有自己的网络设备,协议栈等,彼此之间互不影响。

如果各个名称空间之间需要通信,怎么办呢,答案就是用veth-pair来做桥梁。

根据连接的方式和规模,可以分为“直接相连”、“通过桥相连”和“通过ov相连”。

3.1直接相连

直接相连是最简单的方式,如下图,一对veth-pair直接将两个名称空间连接在一起。

癓inux虚拟网络设备veth-pair有什么用“

给veth-pair配置IP、测试连通性:

#创建名称空间   ip netns ns1   ip netns ns2      #创建一对veth-pair veth0 veth2   ip l veth0类型veth veth2同伴的名字      #将veth0 veth2分别加入两个ns   ip l s veth0 netns ns1   ip l s veth2 netns ns2      #给两个veth0 veth2配上IP并启用   ip netns exec ns1 ip 10.1.1.2/24 dev veth0   ip netns exec ns1 ip l s veth0   ip netns exec ns2 ip 10.1.1.3/24 dev veth2   ip netns exec ns2 ip l s veth2      #从veth0平veth2   (root@localhost ~) # ip netns exec ns1萍10.1.1.3   萍10.1.1.3(10.1.1.3)56(84)字节的数据。   从10.1.1.3 64字节:icmp_seq=1 ttl=64=0.073 ms   从10.1.1.3 64字节:icmp_seq=2 ttl=64=0.068 ms      推荐- - - - - - - - - 10.1.1.3萍统计数据   15包传输,15,0%包丢失,时间14000毫秒   rtt min/avg/max/mdev 0.201/0.032/0.084=0.068/女士

Linux桥相当于一台交换机,可以中转两个命名空间的流量,我们看看veth-pair在其中扮演什么角色。

如下图,两对veth-pair分别将两个名称空间连到桥上。

癓inux虚拟网络设备veth-pair有什么用“

Linux虚拟网络设备veth-pair有什么用