tungsten fabirc vgw报文流向分析:1.浮动ip 2.非浮动ip

tungsten fabirc vgw报文流向分析:1.浮动ip 2.非浮动ip_第1张图片

环境:  ctrl---cmp1---cmp2

vhost(10.x; eth2(public):20.x)

创建vgw:

docker exec -it vrouter_vrouter-agent_1 python /opt/contrail/utils/provision_vgw_interface.py --oper create --interface vgw1 --subnets 192.168.20.128/25 --routes 0.0.0.0/0 --vrf default-domain:admin:public:public

虚机关联浮动ip(1.1.11.5在cmp1,浮动ip:192.168.20.131)

从外部ping虚机浮动ip,在源主机看arp条目如下:

192.168.20.131           ether   52:54:00:f0:de:da   C                     eth2=>该网卡在cmp1(eth2)

即报文会发到eth2(host OS 网卡),查看host路由,目的为同一网段:

192.168.20.0/24 dev eth2 proto kernel scope link src 192.168.20.2

并且已经有arp条目:

192.168.20.131           ether   00:00:5e:00:01:00   C                     vgw1

送到vgw1:

#vif --list|grep vgw1 -C 3
            TX packets:343  bytes:14742 errors:0
            Drops:0

vif0/27     OS: vgw1
            Type:Gateway HWaddr:00:00:5e:00:01:00 IPaddr:0.0.0.0
            Vrf:6 Mcast Vrf:65535 Flags:L3L2Er QOS:-1 Ref:2
            RX packets:15  bytes:1238 errors:7

#rt --dump 6 |grep 131
192.168.20.131/32      32            P          -             38        2:cf:55:fa:d7:ad(9716)

#nh --get 38
Id:38         Type:Encap          Fmly: AF_INET  Rid:0  Ref_cnt:5          Vrf:7
              Flags:Valid, Policy, Etree Root, 
              EncapFmly:0806 Oif:26 Len:14
              Encap Data: 02 cf 55 fa d7 ad 00 00 5e 00 01 00 08 00 

#vif --get 26
Vrouter Interface Table

Flags: P=Policy, X=Cross Connect, S=Service Chain, Mr=Receive Mirror
       Mt=Transmit Mirror, Tc=Transmit Checksum Offload, L3=Layer 3, L2=Layer 2
       D=DHCP, Vp=Vhost Physical, Pr=Promiscuous, Vnt=Native Vlan Tagged
       Mnp=No MAC Proxy, Dpdk=DPDK PMD Interface, Rfl=Receive Filtering Offload, Mon=Interface is Monitored
       Uuf=Unknown Unicast Flood, Vof=VLAN insert/strip offload, Df=Drop New Flows, L=MAC Learning Enabled
       Proxy=MAC Requests Proxied Always, Er=Etree Root, Mn=Mirror without Vlan Tag, Ig=Igmp Trap Enabled

vif0/26     OS: tapcf55fad7-ad
            Type:Virtual HWaddr:00:00:5e:00:01:00 IPaddr:1.1.11.5

送到主机完成。

vgw和虚机不在同一节点的情况:

IPaddr:211.0.0.6 浮动IP:192.168.20.132

从ping的源主机看:

arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.20.132           ether   52:54:00:f0:de:da   C                     eth2

arp代理 由cmp1所在的eth2(public网卡)完成:

eth2: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:f0:de:da

即报文会发到eth2(host OS 网卡),查看host路由,目的为同一网段:

192.168.20.0/24 dev eth2 proto kernel scope link src 192.168.20.2

并且已经有arp条目:

192.168.20.132           ether   00:00:5e:00:01:00   C                     vgw1

直接发到vgw1

#vif --list|grep vgw1 -C 3
            TX packets:405  bytes:17346 errors:0
            Drops:0

vif0/27     OS: vgw1
            Type:Gateway HWaddr:00:00:5e:00:01:00 IPaddr:0.0.0.0
            Vrf:6 Mcast Vrf:65535 Flags:L3L2Er QOS:-1 Ref:2
            RX packets:20  bytes:1616 errors:7

#rt --dump 6 |grep 132     
192.168.20.132/32      32           LP         60             21        2:fb:36:7c:87:53(74884)

#nh --get 21
Id:21         Type:Tunnel         Fmly: AF_INET  Rid:0  Ref_cnt:20         Vrf:0
              Flags:Valid, MPLSoUDP, Etree Root, 
              Oif:0 Len:14 Data:52 54 00 65 b5 1e 52 54 00 54 da 66 08 00 
              Sip:192.168.10.2 Dip:192.168.10.3

发往cmp2:(tcpdump vhost0用的网卡)(从上表可以看到,label为60,报文分析如下:)

21:36:00.603484 IP 192.168.10.2.57317 > cmpt2.6635: UDP, length 88
        0x0000:  5254 0065 b51e 5254 0054 da66(源mac/目的mac) 0800 4500
        0x0010:  0074 b735 0000 4011 2dee {c0a8 0a02}(192.168.10.2为隧道源地址) c0a8
        0x0020:  0a03{目的地址) dfe5 19eb(源端口目的端口) 0060(报文长度)  0000(checksum) {一下开始mpls:}0003 c13e(前20位为mpls label,此处为60) 4500
        0x0030:  0054(报文长) b735(标识) 4000 3e(TTL)01(协议ICMP) db94(checksum) {源ip/目的ip:c0a8 140a c0a8
        0x0040:  1484} 0800 bc72 41a8 0061 002a 2d5d 0000
        0x0050:  0000 042a 0900 0000 0000 1011 1213 1415
        0x0060:  1617 1819 1a1b 1c1d 1e1f 2021 2223 2425
        0x0070:  2627 2829 2a2b 2c2d 2e2f 3031 3233 3435
        0x0080:  3637

#从报文可知送过来封装label是60: mpls --get 60
MPLS Input Label Map

   Label    NextHop
-------------------
      60        75

#nh --get 75
Id:75         Type:Encap          Fmly: AF_INET  Rid:0  Ref_cnt:5          Vrf:10
              Flags:Valid, Policy, Etree Root, 
              EncapFmly:0806 Oif:30 Len:14
              Encap Data: 02 fb 36 7c 87 53 00 00 5e 00 01 00 08 00 

#vif --get 30
Vrouter Interface Table

vif0/30     OS: tapfb367c87-53
            Type:Virtual HWaddr:00:00:5e:00:01:00 IPaddr:211.0.0.6

 

非浮动ip的情况:给211.0.0.0/24建立vgw在cmp1:

docker exec -it vrouter_vrouter-agent_1 python /opt/contrail/utils/provision_vgw_interface.py --oper create --interface vgw11 --subnets 211.0.0.0/24 --routes 0.0.0.0/0 --vrf default-domain:admin:left-VN-fw:left-VN-fw

在非计算节点添加到211.0.0.0的路由:

route add -net 211.0.0.7 netmask 255.255.255.255 gw 192.168.20.2

(route add -net 211.0.0.0 netmask 255.255.255.0 gw 192.168.20.2)

从cmp1开始分析:

报文从eth2上收到,走OS协议栈:

211.0.0.0/24 dev vgw11 scope link

送给vgw11:

#vif --list |grep vgw11 -C 3

vif0/28     OS: vgw11
            Type:Gateway HWaddr:00:00:5e:00:01:00 IPaddr:0.0.0.0
            Vrf:16 Mcast Vrf:65535 Flags:L3L2Er QOS:-1 Ref:2

#(vrouter-agent)[root@cmpt1 /]$ rt --dump 16|grep 211.0.0.
211.0.0.7/32           32           LP         50             21        -

#nh --get 21
Id:21         Type:Tunnel         Fmly: AF_INET  Rid:0  Ref_cnt:20         Vrf:0
              Flags:Valid, MPLSoUDP, Etree Root, 
              Oif:0 Len:14 Data:52 54 00 65 b5 1e 52 54 00 54 da 66 08 00 
              Sip:192.168.10.2 Dip:192.168.10.3

发送cmp2,label为50

#nh --get 55
Id:55         Type:Encap          Fmly: AF_INET  Rid:0  Ref_cnt:4          Vrf:10
              Flags:Valid, Policy, Etree Root, 
              EncapFmly:0806 Oif:33 Len:14
              Encap Data: 02 48 e1 d6 da 86 00 00 5e 00 01 00 08 00 

#vif --get 33
Vrouter Interface Table

vif0/33     OS: tap48e1d6da-86
            Type:Virtual HWaddr:00:00:5e:00:01:00 IPaddr:211.0.0.7

如果虚机和vgw在同一节点:(211.0.0.8在cmp1节点)

211.0.0.7/32           32           LP         50             21        2:48:e1:d6:da:86(232268)
211.0.0.8/32           32            P          -             91        2:f0:34:dd:34:3(167608)

#nh --get 91
Id:91         Type:Encap          Fmly: AF_INET  Rid:0  Ref_cnt:4          Vrf:16
              Flags:Valid, Policy, Etree Root, 
              EncapFmly:0806 Oif:22 Len:14
              Encap Data: 02 f0 34 dd 34 03 00 00 5e 00 01 00 08 00 

(vrouter-agent)[root@cmpt1 /]$ vif --get 22
Vrouter Interface Table

vif0/22     OS: tapf034dd34-03
            Type:Virtual HWaddr:00:00:5e:00:01:00 IPaddr:211.0.0.8

直接送到虚机。

 

你可能感兴趣的:(Linux,命令,cloud)