weavenet简介

Weavenet简介

1 概览

Weavenet是一种跨主机容器网络解决方案,weavenet可以自动为容器分配IP地址,并基于VxLAN协议为容器提供跨主机通信能力。在weavenet中,每台主机都运行着一个weave peer(据我理解就是weave进程),weave peer之间维护着一个TCP连接,并且weave peer之间会通过gossip协议交换信息,交换的信息包括:

(1) 整个weavenet topology

(2) 容器的IP/MAC地址信息以及该容器所对应的host IP

在这里插入图片描述

2 weavenet单主机内数据包流向

在这里插入图片描述

2.1 weavenet用到的虚拟网络设备

(1) weave-bridge: weave启动后会创建一个网桥weave-bridge,容器通过虚拟网卡对(veth pair)连接到weave-bridge上。

(2) openvswitch datapath module: weavenet使用了linux kernel中的openvswitch datapath模块,weave-bridge通过veth-pair与datapath模块中的datapath-bridge相连,数据包在datapath module中进行VxLAN封装,再通过物理网卡发送出去。

2.2 weavenet中数据包流向

(1) 容器调用内核协议栈封装成一个完整的MAC帧从容器的虚拟接口veth0发送到weave-bridge;

(2) weave-bridge收到数据包后转发到内核中的openvswitch datapath module,数据包进入datapath module处理流程;

(3) datapath module收到数据包后,会查找flow table以确定该数据包该从哪个port转发出去,若在flow table中找不到匹配的表项,则会产生一个upcall,即向weave-proc发送一个请求,weave-proc会下发flow table表项给datapath module,一旦匹配到相应的flow table表项,数据包即可进行转发;

(4) 在datapath-bridge中,会有一个接口会被配置成vxlan类型的接口,一个vxlan类型的接口会对应一个UDP socket: 数据包从vxlan类型的接口出来后还要经过该UDP socket封装成VxLAN类型的数据包,然后发送到物理网络。例如上图datapath-bridge中有一个vxlan类型的接口vxlan-6784,当数据包要从vxlan-6784接口转发出去时,因为vxlan-6784是vxlan类型的接口,所以该数据包会经过监听在6784端口的UDP socket封装成VxLAN类型的数据包,然后发送出去。

root@guolab-5-1:/home/guolab# ovs-dpctl dump-flows datapath
tunnel(tun_id=0xc7fb46,src=192.168.10.1,dst=192.168.5.1,flags(+key)),in_port(2),eth(src=12:91:2d:4e:97:59,dst=6e:c5:04:90:25:f3),eth_type(0/0x0000), packets:109, bytes:9954, used:0.088s, actions:1
in_port(1),eth(src=6e:c5:04:90:25:f3,dst=12:91:2d:4e:97:59),eth_type(0/0x0000), packets:108, bytes:9856, used:0.088s, actions:set(tunnel(tun_id=0xb46c7f,src=192.168.5.1,dst=192.168.10.1,ttl=64,flags(df|key))),2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值