Kubernetes网络学习-Vxlan(kubernetes最佳实践)

网友投稿 386 2022-09-09


Kubernetes网络学习-Vxlan(kubernetes最佳实践)

vxlan介绍 文章非常好

VTEP对VM发送的原始以太帧(Original L2 Frame)进行了以下“包装”: VXLAN Header增加VXLAN头(8字节),其中包含24比特的VNI字段,用来定义VXLAN网络中不同的租户。此外,还包含VXLAN Flags(8比特,取值为00001000)和两个保留字段(分别为24比特和8比特)。UDP HeaderVXLAN头和原始以太帧一起作为UDP的数据。UDP头中,目的端口号(VXLAN Port)固定为4789,源端口号(UDP Src. Port)是原始以太帧通过哈希算法计算后的值。Outer IP Header封装外层IP头。其中,源IP地址(Outer Src. IP)为源VM所属VTEP的IP地址,目的IP地址(Outer Dst. IP)为目的VM所属VTEP的IP地址。Outer MAC Header封装外层以太头。其中,源MAC地址(Src. MAC Addr.)为源VM所属VTEP的MAC地址,目的MAC地址(Dst. MAC Addr.)为到达目的VTEP的路径上下一跳设备的MAC地址。抓包如下:

192.168.40.232机器配置如下

创建 namespaceip netns add ns1ip netns add ns2创建 bridgeip link add br0 type bridgeip link set br0 up创建两对 veth-pair (相当于网线,网线两头对应)ip link add veth0 type veth peer name br0-veth0ip link add veth1 type veth peer name br0-veth1将两对 veth-pair 加入两个 ns 和 br0(相当于把网线插入到设备上,一头一个)ip link set veth0 netns ns1 (服务器端插上)ip link set br0-veth0 master br0 (网桥端插上)ip link set br0-veth0 up (打开端口)ip link set veth1 netns ns2ip link set br0-veth1 master br0ip link set br0-veth1 up 给两个ns中的veth配置IP,并启用x信的网卡设备,和local要对应起来。 ip -d link show 查看它的详细信息把vxlan0加入到网桥ip link set vxlan0 master br0 (这样整个线的连接都已经ok)配置vxlan0 ip并请用ip addr add 10.88.88.254/24 dev vxlan0ip link set vxlan0 up配置完IP以后会增加一条路由[root@k8s-node-192-168-40-232 ~]# route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0 192.168.40.1 0.0.0.0 UG 100 0 0 ens19210.88.88.0 0.0.0.0 255.255.255.0 U 0 0 0 vxlan0

192.168.40.233 机器配置如下

创建 namespaceip netns add ns1ip netns add ns2创建 bridgeip link add br0 type bridgeip link set br0 up创建两对 veth-pair (相当于网线,网线两头对应)ip link add veth0 type veth peer name br0-veth0ip link add veth1 type veth peer name br0-veth1将两对 veth-pair 加入两个 ns 和 br0(相当于把网线插入到设备上,一头一个)ip link set veth0 netns ns1 (服务器端插上)ip link set br0-veth0 master br0 (网桥端插上)ip link set br0-veth0 up (打开端口)ip link set veth1 netns ns2ip link set br0-veth1 master br0ip link set br0-veth1 up 给两个ns中的veth配置IP,并启用ip netns exec ns1 ip address add 10.88.88.4/24 dev veth0ip netns exec ns1 ip link set veth0 up ip netns exec ns1 ip link set lo upip netns exec ns2 ip address add 10.88.88.5/24 dev veth1ip netns exec ns2 ip link set veth1 up ip netns exec ns2 ip link set lo up创建vxlanip link add vxlan0 type vxlan id 42 dstport 4789 remote 192.168.40.232 local 192.168.40.233 dev ens192 id 42:指定 VNI 的值,这个值可以在 1 到 2^24 之间dstport:vtep 通信的端口,linux 默认使用 8472(为了保持兼容,默认值一直没有更改),而 IANA 分配的端口是 4789,所以我们这里显式指定了它的值。如果是用默认 wirheshare分析包的时候需要encoderemote 192.168.40.232:对方 vtep 的地址,类似于点对点协议local 192.168.40.233:当前节点 vtep 要使用的 IP 地址dev ens192:当前节点用于 vtep 通信的网卡设备,和local要对应起来。 ip -d link show 查看它的详细信息把vxlan0加入到网桥ip link set vxlan0 master br0配置vxlan0 ip并请用ip addr add 10.88.88.253/24 dev vxlan0ip link set vxlan0 up配置完IP以后会增加一条路由[root@k8s-node-192-168-40-233 ~]# route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0 192.168.40.1 0.0.0.0 UG 100 0 0 ens19210.88.88.0 0.0.0.0 255.255.255.0 U 0 0 0 vxlan0

测试

验证:从192.168.40.232主机的 ns1里面去ping 1921.68.40.233主机的ns1[root@k8s-node-192-168-40-232 ~]# ip netns exec ns1 ping -c3 10.88.88.4PING 10.88.88.4 (10.88.88.4) 56(84) bytes of data.64 bytes from 10.88.88.4: icmp_seq=1 ttl=64 time=27.7 ms64 bytes from 10.88.88.4: icmp_seq=2 ttl=64 time=29.0 ms64 bytes from 10.88.88.4: icmp_seq=3 ttl=64 time=0.653 ms


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:tracert 路由追踪功能(tracert参数详解)
下一篇:ensp 基础命令(ensp安装详细步骤)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~