| Message ID | 20250214031622.684-1-allen.chen@jaguarmicro.com |
|---|---|
| State | Accepted |
| Delegated to: | Kevin Traynor |
| Headers | show |
| Series | [ovs-dev,v2] netdev_offload_dpdk: Support vlan insertion in vxlan header. | expand |
| Context | Check | Description |
|---|---|---|
| ovsrobot/apply-robot | success | apply and check: success |
| ovsrobot/github-robot-_Build_and_Test | success | github build: passed |
| ovsrobot/cirrus-robot | success | cirrus build: passed |
On 14/02/2025 03:16, Allen Chen via dev wrote: > Support vlan insertion in vxlan header > > Signed-off-by: Allen Chen <allen.chen@jaguarmicro.com> > 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(), "
Hi Kevin, Thank you for reviewing my commit and updating the dpdk.rst.doc, but I think the author is me, Because I did the main work,including modifying code and testing work. So can you give me reasonable explanation. Thanks. -----邮件原件----- 发件人: Kevin Traynor <ktraynor@redhat.com> 发送时间: 2025年2月21日 23:59 收件人: Allen Chen <allen.chen@jaguarmicro.com>; ovs-dev@openvswitch.org 主题: Re: [ovs-dev] [PATCH v2] netdev_offload_dpdk: Support vlan insertion in vxlan header. External Mail: This email originated from OUTSIDE of the organization! Do not click links, open attachments or provide ANY information unless you recognize the sender and know the content is safe. On 14/02/2025 03:16, Allen Chen via dev wrote: > Support vlan insertion in vxlan header > > Signed-off-by: Allen Chen <allen.chen@jaguarmicro.com> > 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=mo > d_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(), "
On 24/02/2025 01:45, Allen Chen wrote: > Hi Kevin, > Thank you for reviewing my commit and updating the dpdk.rst.doc, but I think the author is me, > Because I did the main work,including modifying code and testing work. > So can you give me reasonable explanation. > Hi Allen, Apologies, you are right, that was an unintentional reset-author while I was updating the patch. I have updated the commit now to show you as author. I do need to keep my 'Signed-off-by:' as I handled the patch. thanks, Kevin. > Thanks. > -----邮件原件----- > 发件人: Kevin Traynor <ktraynor@redhat.com> > 发送时间: 2025年2月21日 23:59 > 收件人: Allen Chen <allen.chen@jaguarmicro.com>; ovs-dev@openvswitch.org > 主题: Re: [ovs-dev] [PATCH v2] netdev_offload_dpdk: Support vlan insertion in vxlan header. > > External Mail: This email originated from OUTSIDE of the organization! > Do not click links, open attachments or provide ANY information unless you recognize the sender and know the content is safe. > > > On 14/02/2025 03:16, Allen Chen via dev wrote: >> Support vlan insertion in vxlan header >> >> Signed-off-by: Allen Chen <allen.chen@jaguarmicro.com> >> > > 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=mo >> d_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(), " >
Hi Kevin, Thank you again for reviewing my commit and handling the patch. Best wishes. -----邮件原件----- 发件人: Kevin Traynor <ktraynor@redhat.com> 发送时间: 2025年2月24日 18:03 收件人: Allen Chen <allen.chen@jaguarmicro.com>; ovs-dev@openvswitch.org 主题: Re: 答复: [ovs-dev] [PATCH v2] netdev_offload_dpdk: Support vlan insertion in vxlan header. External Mail: This email originated from OUTSIDE of the organization! Do not click links, open attachments or provide ANY information unless you recognize the sender and know the content is safe. On 24/02/2025 01:45, Allen Chen wrote: > Hi Kevin, > Thank you for reviewing my commit and updating the dpdk.rst.doc, but I > think the author is me, Because I did the main work,including modifying code and testing work. > So can you give me reasonable explanation. > Hi Allen, Apologies, you are right, that was an unintentional reset-author while I was updating the patch. I have updated the commit now to show you as author. I do need to keep my 'Signed-off-by:' as I handled the patch. thanks, Kevin. > Thanks. > -----邮件原件----- > 发件人: Kevin Traynor <ktraynor@redhat.com> > 发送时间: 2025年2月21日 23:59 > 收件人: Allen Chen <allen.chen@jaguarmicro.com>; ovs-dev@openvswitch.org > 主题: Re: [ovs-dev] [PATCH v2] netdev_offload_dpdk: Support vlan insertion in vxlan header. > > External Mail: This email originated from OUTSIDE of the organization! > Do not click links, open attachments or provide ANY information unless you recognize the sender and know the content is safe. > > > On 14/02/2025 03:16, Allen Chen via dev wrote: >> Support vlan insertion in vxlan header >> >> Signed-off-by: Allen Chen <allen.chen@jaguarmicro.com> >> > > 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=10 >> 0 ,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=m >> o >> d_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(), " >
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(), "
Support vlan insertion in vxlan header Signed-off-by: Allen Chen <allen.chen@jaguarmicro.com> --- 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(+)