[GENIUS-20] Cannot have same vtep both on vxlan TZ and vxlan-gpe TZ Created: 12/Sep/16 Updated: 27/Feb/18 Resolved: 27/Feb/18 |
|
| Status: | Resolved |
| Project: | genius |
| Component/s: | General |
| Affects Version/s: | (unspecified) |
| Fix Version/s: | None |
| Type: | Bug | ||
| Reporter: | Jaime Caamaño Ruiz | Assignee: | Hema Gopalakrishnan |
| Resolution: | Won't Do | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
Operating System: All |
||
| External issue ID: | 6697 |
| Description |
|
On a context of:
consider the following transport zone configuration: { , { "dpn-id": 5274128771036, "portname": "dovs-vtep-2", "ip-address": "172.17.0.3" } ], , { "dpn-id": 5274128771036, "portname": "tunnel_port", "ip-address": "172.17.0.3" } ], Zone "49e000d3-2812-4c81-bc7a-3c113e98e350" is created by netvirt. Zone "dovs-tz" is created for SFC. We look into the resulting OVS configuration of DPN 263936438496426: > ovs-vsctl show fbeb6060-1a19-4a35-a37f-3a6913dee417 Port "tun445ad3536e6" Port br-int As you can see we have two vxlan ports, with equal configuration regarding source IP, destination IP and key. Main difference being one of them is vxlan while the other is vxlan-gpe. But then when we check how things are at openflow level: — OFPT_FEATURES_REPLY (OF1.3) (xid=0x2): dpid:0000ac2034e48141 One of the tunnel ports, "tunb32255ba66c", is missing it's openflow definition. This cause various problems down the line. It looks like OVS forms a tuple with some of the tunnel ports configuration parameters that uses to distinguish one tunnel port from another, and that in our case the basic difference of gpe vs non gpe is not part of this tuple; and results in the problem observed. There are some alternatives:
Also, it looks like genius is using the port-name of each vtep inside the transport zone definition (i.e. dovs-vtep-1 in the example above) to generate the tunnel port name (i.e. tunb32255ba66c). Probably that is not the best approach as that is not a meaningful parameter at OVS level. Genius also uses the tunnel type for the tunnel port name and in this case vxlan and vxlan-gpe should not be considered different tunnel types for this purpose either. Basically the data used to generate the port name should be the same data that OVS uses to tell tunnel ports apart. |
| Comments |
| Comment by Jaime Caamaño Ruiz [ 21/Nov/16 ] |
|
I made a test making sure to use the same portnames for both the vxlan transport zones created by netvirt and the extra vxlan-gpe transport zone created manually for sfc { , { "dpn-id": 5274128771036, "portname": "tunnel_port", "ip-address": "172.17.0.3" } ], , { "dpn-id": 5274128771036, "portname": "tunnel_port", "ip-address": "172.17.0.3" } ], This example is just for two compute nodes and a tunnel between them. The result was a normal vxlan tunnel endpoint on one side and a vxlan-gpe endpoint on the other: > docker exec dovs-node-2 ovs-vsctl show Port br-int > docker exec dovs-node-1 ovs-vsctl show Port "tap5de268d2-bc" This gave me the perfect opportunity to test if a vxlan endpoint could talk with a vxlan-gpe endpoint (bidirectional). An, indeed, it does seem to work: > sudo ip netns exec dovs-node-1-guest-1 ping -c 1 10.0.0.2 > sudo ip netns exec dovs-node-2-guest-1 ping -c 1 10.0.0.1 After that, I could add the gpe extions to the existing vxlan interface: > docker exec dovs-node-2 ovs-vsctl set interface tunb1ca1a033ef options:exts=gpe options:nshc1=flow options:nshc2=flow options:nshc3=flow options:nshc4=flow options:nsi=flow options:nsp=flow > docker exec dovs-node-2 ovs-vsctl show Port br-int And still have connectivity: > sudo ip netns exec dovs-node-2-guest-1 ping -c 1 10.0.0.1 So I think this maybe workable with a few genius patches:
|
| Comment by Jaime Caamaño Ruiz [ 27/Feb/18 ] |
|
I am closing this due to inactivity. Reopen if necessary. This has not been a problem for a long time since a specific meshes for SFC are not being used, instead gpe is enabled deployment wise for all meshes. |