On 14/02/2025 03:16, Allen Chen via dev wrote:
> Support vlan insertion in vxlan header
>
> Signed-off-by: Allen Chen <[email protected]>
>
Thanks Allen. I fixed the commit message and updated the dpdk.rst doc.
With that, applied.
> ---
> 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(), "
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev