diff options
author | ldejing <ldejing@vmware.com> | 2022-08-16 19:14:32 +0800 |
---|---|---|
committer | Alin-Gabriel Serdean <alin.serdean@canonical.com> | 2022-09-20 02:40:03 +0300 |
commit | 7af5c33c1629b309cbcbe3b6c9c3bd6d3b4c0abf (patch) | |
tree | 445f0e0379b0134bf1bbde32811b05ee59586014 /datapath-windows/ovsext/BufferMgmt.h | |
parent | 54a618f0bd83431a18307a312e5b41e401538bbc (diff) | |
download | openvswitch-7af5c33c1629b309cbcbe3b6c9c3bd6d3b4c0abf.tar.gz |
datapath-windows: Add IPv6 conntrack ip fragment support on windows
Implementation on Windows:
IPv6 conntrack ip fragment feature use a link list to store ip
fragment. When ipv6 fragment module receives a fragment packet,
it will store length of the fragment, until to the received length
equal to the packet length before fragmented, it will reassemble
fragment packet to a complete packet and send the complete packet
to conntrack module. After conntrack processed the packet, fragment
module will divide the complete packet into small fragment and send
it to destination. Currently, ipv6 was implemented in a indenpent
module, for the reason it can reduce the risk of introduce bug to
ipv4 fragmenb module.
Testing Topology:
On the Windows VM runs on the ESXi host, two hyper-v ports attached
to the ovs bridge; one hyper-v port worked as client and the
other port worked as server.
Testing Case:
1.UdpV6
a) UdpV6 fragment with multiple ipv6 extension fields.
b) UdpV6 fragment in normal scenario.
c) UdpV6 fragment in nat scenario.
2.IcmpV6
a) IcmpV6 fragment in normal scenario.
b) IcmpV6 fragment in nat scenario.
Signed-off-by: ldejing <ldejing@vmware.com>
Signed-off-by: Alin-Gabriel Serdean <aserdean@ovn.org>
Diffstat (limited to 'datapath-windows/ovsext/BufferMgmt.h')
-rw-r--r-- | datapath-windows/ovsext/BufferMgmt.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/datapath-windows/ovsext/BufferMgmt.h b/datapath-windows/ovsext/BufferMgmt.h index 2ae32723e..90d2360f7 100644 --- a/datapath-windows/ovsext/BufferMgmt.h +++ b/datapath-windows/ovsext/BufferMgmt.h @@ -25,6 +25,10 @@ #define OVS_DEFAULT_DATA_SIZE 256 #define OVS_DEFAULT_HEADROOM_SIZE 128 #define OVS_FIX_NBL_DATA_SIZE (OVS_DEFAULT_DATA_SIZE + OVS_DEFAULT_HEADROOM_SIZE) +#define OVS_IPV6_OPT_LEN(p) (((p)->hdrExtLen+1) << 3) +#define OVS_FRAG_MAGIC_NUMBER 0x8088405 + + /* Default we copy 18 bytes, to make sure ethernet header and vlan is in * continuous buffer */ |