本文首发于我的公众号码农之屋(id: Spider1818),专注于干货分享,包含但不限于Java编程、网络技术、Linux内核及实操、容器技术等。欢迎大家关注,二维码文末可以扫。
导读:云化场景到处都是虚拟机和容器,它们背后的网络管理都离不开虚拟网络设备,了解虚拟网络设备将有助于我们更好地理解云化场景的网络架构。本篇文章将对Linux的veth进行介绍。
一、veth设备
Virtual Ethernet,即veth设备,从字面意思可以理解为是虚拟网口,它总是成双成对出现(有时也用veth-pairs表示)。和其他网络设备一样,一端连接的是内核协议栈,而另一端则是两veth相连。veth的一端收到数据包发送请求之后,会将数据包发往另一veth上去(工作在L2数据链路层,转发数据包时不会篡改数据包内容)。
VETH: Typically usedwhen you are trying to connect two entities which would want to "get holdof" (for lack of better phrase) an interface to forward/receive frames.These entities could be containers/bridges/ovs-switch etc. Say you want toconnect a docker/lxc container to OVS. You can create a veth pair and push thefirst interface to the docker/lxc (say, as a phys interface) and push the otherinterface to OVS. You cannot do this with TAP.
从维基百科查询veth的描述信息,不同容器间的通信(包含本宿主机和跨宿主机场景),单靠veth-pairs设备是不够的,还需要结合bridge相关的技术,才能实现容器访问网络。
二、示例
我们将以示例的方式,一步步地观测veth的特点。
示例一
1、我们先创建一对veth设备(veth0和veth1),并配置veth0和veth1的IP,接着将2个设备都启动起来。
[root@nod