[ovs-dev] [PATCH 4/6] datapath-windows: VXLAN Check for flow destination port

Alin Serdean aserdean at cloudbasesolutions.com
Fri Jan 27 02:13:03 UTC 2017


We shouldn't if you look at the userspace code it is set as BE:
https://github.com/openvswitch/ovs/blob/bef503e8c094456ca82fefd044a8c3341d9d21ac/lib/odp-util.c#L2038

I also checked/rechecked with the debugger. Here is a snippet of debugging with the patchset applied:

OvsDoEncapVxlan
2: kd> ??tunKey->dst_port
unsigned short 0xb512
2: kd> k
Child-SP          RetAddr           Call Site
ffffd001`849d9900 fffff800`841e1147 OVSExt!OvsDoEncapVxlan+0x693 [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\vxlan.c @ 293]
ffffd001`849d99f0 fffff800`841aba31 OVSExt!OvsEncapVxlan+0xe7 [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\vxlan.c @ 370]
ffffd001`849d9a80 fffff800`841aad38 OVSExt!OvsTunnelPortTx+0x1b1 [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\actions.c @ 688]
ffffd001`849d9b40 fffff800`841a8dd3 OVSExt!OvsOutputForwardingCtx+0x348 [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\actions.c @ 931]
ffffd001`849d9c10 fffff800`841a7651 OVSExt!OvsDoExecuteActions+0x893 [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\actions.c @ 2128]
ffffd001`849d9e60 fffff800`841d7a0f OVSExt!OvsActionsExecute+0x81 [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\actions.c @ 2175]
ffffd001`849d9ed0 fffff800`841d7f97 OVSExt!OvsExecuteDpIoctl+0x46f [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\user.c @ 469]
ffffd001`849da350 fffff800`841c875e OVSExt!OvsNlExecuteCmdHandler+0x237 [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\user.c @ 319]
ffffd001`849da580 fffff800`841f0bda OVSExt!InvokeNetlinkCmdHandler+0x16e [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\datapath.c @ 1095]
ffffd001`849da650 fffff800`81f5918c OVSExt!OvsDeviceControl+0xa2a [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\datapath.c @ 961]
ffffd001`849da7e0 ffffe000`907bdaf0 0xfffff800`81f5918c
ffffd001`849da7e8 ffffe000`906d32a0 0xffffe000`907bdaf0
ffffd001`849da7f0 00000000`00000000 0xffffe000`906d32a0

OvsTunnelAttrToIPv4TunnelKey
0: kd> ??tunKey->dst_port
unsigned short 0
0: kd> k
Child-SP          RetAddr           Call Site
fffff801`eaf08a60 fffff800`841a9dde OVSExt!OvsTunnelAttrToIPv4TunnelKey+0x20a [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\flow.c @ 1741]
fffff801`eaf08ab0 fffff800`841a8cf7 OVSExt!OvsExecuteSetAction+0x13e [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\actions.c @ 1609]
fffff801`eaf08c60 fffff800`841a7651 OVSExt!OvsDoExecuteActions+0x7b7 [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\actions.c @ 2094]
fffff801`eaf08eb0 fffff800`841ce16e OVSExt!OvsActionsExecute+0x81 [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\actions.c @ 2175]
fffff801`eaf08f20 fffff800`841cd7ca OVSExt!OvsStartNBLIngress+0x5fe [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\packetio.c @ 339]
fffff801`eaf09220 fffff800`81ececc1 OVSExt!OvsExtSendNBL+0xda [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\packetio.c @ 416]
fffff801`eaf09290 ffffe000`8f95d310 0xfffff800`81ececc1
fffff801`eaf09298 ffffe000`90b34030 0xffffe000`8f95d310
fffff801`eaf092a0 00000000`00000000 0xffffe000`90b34030
0: kd> p
OVSExt!OvsTunnelAttrToIPv4TunnelKey+0x220:
fffff800`841bb8a0 eb5a            jmp     OVSExt!OvsTunnelAttrToIPv4TunnelKey+0x27c (fffff800`841bb8fc)
0: kd> ??tunKey->dst_port
unsigned short 0xb512
0: kd> k
Child-SP          RetAddr           Call Site
fffff801`eaf08a60 fffff800`841a9dde OVSExt!OvsTunnelAttrToIPv4TunnelKey+0x220 [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\flow.c @ 1742]
fffff801`eaf08ab0 fffff800`841a8cf7 OVSExt!OvsExecuteSetAction+0x13e [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\actions.c @ 1609]
fffff801`eaf08c60 fffff800`841a7651 OVSExt!OvsDoExecuteActions+0x7b7 [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\actions.c @ 2094]
fffff801`eaf08eb0 fffff800`841ce16e OVSExt!OvsActionsExecute+0x81 [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\actions.c @ 2175]
fffff801`eaf08f20 fffff800`841cd7ca OVSExt!OvsStartNBLIngress+0x5fe [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\packetio.c @ 339]
fffff801`eaf09220 fffff800`81ececc1 OVSExt!OvsExtSendNBL+0xda [c:\_2017\january\26\temp\ovs\datapath-windows\ovsext\packetio.c @ 416]
fffff801`eaf09290 ffffe000`8f95d310 0xfffff800`81ececc1
fffff801`eaf09298 ffffe000`90b34030 0xffffe000`8f95d310
fffff801`eaf092a0 00000000`00000000 0xffffe000`90b34030

> -----Original Message-----
> From: Sairam Venugopal [mailto:vsairam at vmware.com]
> Sent: Tuesday, January 17, 2017 11:51 PM
> To: Alin Serdean <aserdean at cloudbasesolutions.com>;
> dev at openvswitch.org
> Subject: Re: [ovs-dev] [PATCH 4/6] datapath-windows: VXLAN Check for flow
> destination port
> 
> Do we need to convert the tunKey->dst_port to network byte order?
> 
> 
> 
> On 1/10/17, 8:48 AM, "ovs-dev-bounces at openvswitch.org on behalf of Alin
> Serdean" <ovs-dev-bounces at openvswitch.org on behalf of
> aserdean at cloudbasesolutions.com> wrote:
> 
> >Change the UDP destination port(VXLAN header) to check if it was set by
> >the userspace, use it if it was set.
> >If the userspace did not specify a destination port, use the configured
> >vport destination port.
> >
> >Signed-off-by: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>
> >---
> > datapath-windows/ovsext/Vxlan.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> >diff --git a/datapath-windows/ovsext/Vxlan.c
> >b/datapath-windows/ovsext/Vxlan.c index 949e069..84c2f2f 100644
> >--- a/datapath-windows/ovsext/Vxlan.c
> >+++ b/datapath-windows/ovsext/Vxlan.c
> >@@ -289,7 +289,8 @@ OvsDoEncapVxlan(POVS_VPORT_ENTRY vport,
> >         /* UDP header */
> >         udpHdr = (UDPHdr *)((PCHAR)ipHdr + sizeof *ipHdr);
> >         udpHdr->source = htons(tunKey->flow_hash | MAXINT16);
> >-        udpHdr->dest = htons(vportVxlan->dstPort);
> >+        udpHdr->dest = tunKey->dst_port ? tunKey->dst_port :
> >+                                          htons(vportVxlan->dstPort);
> >         udpHdr->len = htons(NET_BUFFER_DATA_LENGTH(curNb) - headRoom
> +
> >                             sizeof *udpHdr + sizeof *vxlanHdr);
> >
> >--
> >2.10.2.windows.1
> >_______________________________________________
> >dev mailing list
> >dev at openvswitch.org
> >https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__mail.openvswitch.o
> >rg_mailman_listinfo_ovs-
> 2Ddev&d=DwICAg&c=uilaK90D4TOVoH58JNXRgQ&r=Z6vow
> >HUOjP5ysP_g372c49Nqc1vEKqHKNBkR5Q5Z7uo&m=5_pKhBH-
> PUBhzkQB9iiJQHwEXF4_z3
> >jQTCICjBvpj1M&s=LmmZoSZ1s-
> GGDQBO7ydyZsKXCOqTZ_QAp99ZVHO633M&e=


More information about the dev mailing list