Support vlan insertion in vxlan header
Signed-off-by: Allen Chen <[email protected]>
---
After vxlan encapsulation,an underlay packet becomes vxlan packet.
OVS will report an debug info if a vlan is inserted in vxlan header after vxlan
encapsulation.
We can find the debug info "unsupported nested action inside clone(),action
type:4" by
"cat /var/log/openvswitch/ovs-vswitchd.log",so the ovs flow can not be
offloaded successfully.
For example,an underlay packet can be:Eth header/IP header/Payload,
after vxlan encapsulation,it can be:Outer Eth header/Outer IP header/Outer
UDP/Vxlan header/Inner Eth header/Inner IP header/Payload,
after vlan insertion,it can be:Outer Eth header/Vlan header/Outer IP
header/Outer UDP/Vxlan header/Inner Eth header/Inner IP header/Payload.(the
debug info occur at this point)
This commit can fix the problem in this case.
The ovs configuration is listed:
ovs-vsctl add-br br-jmnd -- set bridge br-jmnd datapath_type=netdev --
br-set-external-id br-jmnd bridge-id br-jmnd -- set bridge br-jmnd
fail-mode=standalone
ovs-vsctl add-br br-ext -- set bridge br-ext datapath_type=netdev --
br-set-external-id br-ext bridge-id br-ext -- set bridge br-ext
fail-mode=standalone
ovs-vsctl add-port br-ext dpdk0 -- set Interface dpdk0 type=dpdk
options:dpdk-devargs=0000:01:00.0 options:n_txq=8 options:n_rxq=8
options:n_rxq_desc=2048 options:n_txq_desc=2048 ofport_request=1
ovs-vsctl add-port br-jmnd vxlan0 -- set interface vxlan0 type=vxlan
options:{remote_ip="192.188.2.222",local_ip="192.188.2.210",in_key=100,out_key=100}
ovs-vsctl add-port br-jmnd net0 -- set Interface net0 type=dpdk
options:{dpdk-devargs="net_jmnd0,iface=/tmp/sock0,client=1,queues=8",n_rxq="8",n_rxq_desc="256",n_txq_desc="256"}
ovs-vsctl set Bridge br-ext other_config:hwaddr="02:02:03:04:05:06"
ovs-appctl tnl/arp/set br-ext 192.188.2.222 0A:00:27:00:00:0C
ovs-ofctl del-flows br-jmnd
ovs-ofctl add-flow br-jmnd in_port=vxlan0,action=output:net0
ovs-ofctl add-flow br-jmnd
in_port=net0,ip,nw_src=172.0.1.2/32,nw_dst=172.0.1.1/32,action=output:vxlan0
ifconfig br-ext 192.188.2.210
ovs-vsctl set o . other_config:max-idle=5000
ifconfig br-ext up
ifconfig br-jmnd up
ovs-ofctl add-flow br-ext
priority=1,ip,udp,nw_src=192.188.2.210,nw_dst=192.188.2.222,actions=mod_vlan_vid:3001,output:dpdk0
---
lib/netdev-offload-dpdk.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c
index b1c848f4d..d0b0d4c62 100644
--- a/lib/netdev-offload-dpdk.c
+++ b/lib/netdev-offload-dpdk.c
@@ -2137,6 +2137,9 @@ parse_clone_actions(struct netdev *netdev,
if (add_output_action(netdev, actions, ca)) {
return -1;
}
+ } else if (clone_type == OVS_ACTION_ATTR_PUSH_VLAN) {
+ const struct ovs_action_push_vlan *vlan = nl_attr_get(ca);
+ parse_vlan_push_action(actions, vlan);
} else {
VLOG_DBG_RL(&rl,
"Unsupported nested action inside clone(), "
--
2.33.0.windows.2
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev