[ovs-dev] [PATCH] dpif-netdev: Fix crash when PACKET_OUT is metered
When a PACKET_OUT has output port of OFPP_TABLE, and the rule table includes a meter and this causes the packet to be deleted, execute with a clone of the packet, restoring the original packet if it is changed by the execution. Add tests to verify the original issue is fixed, and that the fix doesn't break tunnel processing. Reported-by: Tony van der Peet Signed-off-by: Tony van der Peet --- lib/dp-packet.h | 13 ++ lib/dpif-netdev.c| 19 +- tests/ofproto-dpif.at| 21 +++ tests/tunnel-push-pop.at | 56 4 files changed, 108 insertions(+), 1 deletion(-) diff --git a/lib/dp-packet.h b/lib/dp-packet.h index 08d93c277..3dc582fbf 100644 --- a/lib/dp-packet.h +++ b/lib/dp-packet.h @@ -199,6 +199,7 @@ struct dp_packet *dp_packet_clone_data_with_headroom(const void *, size_t, void dp_packet_resize(struct dp_packet *b, size_t new_headroom, size_t new_tailroom); static inline void dp_packet_delete(struct dp_packet *); +static inline void dp_packet_swap(struct dp_packet *, struct dp_packet *); static inline void *dp_packet_at(const struct dp_packet *, size_t offset, size_t size); @@ -256,6 +257,18 @@ dp_packet_delete(struct dp_packet *b) } } +/* Swaps content of two packets. */ +static inline void +dp_packet_swap(struct dp_packet *a, struct dp_packet *b) +{ +ovs_assert(a->source == DPBUF_MALLOC || a->source == DPBUF_STUB); +ovs_assert(b->source == DPBUF_MALLOC || b->source == DPBUF_STUB); +struct dp_packet c = *a; + +*a = *b; +*b = c; +} + /* If 'b' contains at least 'offset + size' bytes of data, returns a pointer to * byte 'offset'. Otherwise, returns a null pointer. */ static inline void * diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 03f460c7d..4733c3a06 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -4077,7 +4077,10 @@ dpif_netdev_execute(struct dpif *dpif, struct dpif_execute *execute) flow_hash_5tuple(execute->flow, 0)); } -dp_packet_batch_init_packet(, execute->packet); +/* Making a copy because the packet might be stolen during the execution + * and caller might still need it. */ +struct dp_packet *packet_clone = dp_packet_clone(execute->packet); +dp_packet_batch_init_packet(, packet_clone); dp_netdev_execute_actions(pmd, , false, execute->flow, execute->actions, execute->actions_len); dp_netdev_pmd_flush_output_packets(pmd, true); @@ -4087,6 +4090,20 @@ dpif_netdev_execute(struct dpif *dpif, struct dpif_execute *execute) dp_netdev_pmd_unref(pmd); } +if (dp_packet_batch_size()) { +/* Packet wasn't dropped during the execution. Swapping content with + * the original packet, because the caller might expect actions to + * modify it. */ +dp_packet_swap(execute->packet, packet_clone); +dp_packet_delete_batch(, true); +} else { +/* Packet was stolen during the execution due to some error. We need + * to flag that for the caller, so it will not proceed with other + * actions on this packet. Returning EAGAIN because we just don't + * know what execlty happened. */ +return EAGAIN; +} + return 0; } diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at index ed3b141b3..70f9cb89f 100644 --- a/tests/ofproto-dpif.at +++ b/tests/ofproto-dpif.at @@ -9723,6 +9723,27 @@ OFPST_TABLE reply (OF1.3) (xid=0x2): OVS_VSWITCHD_STOP AT_CLEANUP +AT_SETUP([ofproto-dpif packet-out table meter drop]) +OVS_VSWITCHD_START +add_of_ports br0 1 2 + +AT_CHECK([ovs-ofctl -O OpenFlow13 add-meter br0 'meter=1 pktps bands=type=drop rate=1']) +AT_CHECK([ovs-ofctl -O OpenFlow13 add-flow br0 'in_port=1 action=meter:1,output:2']) + +ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 packet=5054000a505400090800451c0011a4cd0a0101010a010102000100040008 actions=resubmit(,0)" +ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 packet=5054000a505400090800451c0011a4cd0a0101010a010102000100040008 actions=resubmit(,0)" + +# Check that vswitchd hasn't crashed by dumping the meter added above +AT_CHECK([ovs-ofctl -O OpenFlow13 dump-meters br0 | ofctl_strip], [0], [dnl +OFPST_METER_CONFIG reply (OF1.3): +meter=1 pktps bands= +type=drop rate=1 +]) +OVS_WAIT_UNTIL([grep 'execute meter(0),2 failed' ovs-vswitchd.log]) + +OVS_VSWITCHD_STOP(["/execute meter(0),2 failed/d"]) +AT_CLEANUP + AT_SETUP([ofproto-dpif - ICMPv6]) OVS_VSWITCHD_START add_of_ports br0 1 diff --git a/tests/tunnel-push-pop.at b/tests/tunnel-push-pop.at index 48c5de9d1..12fc1ef91 100644 --- a/tests/tunnel-push-pop.at +++ b/tests/tunnel-push-pop.at @@ -595,6 +595,62 @@ OVS_WAIT_UNTIL([test `ovs-pcap p0.pcap | grep 5054000a505400091235 | wc OVS_VSWITCHD_STOP AT_CLEANUP +AT_SETUP([tunnel_push_pop
Re: [ovs-dev] [PATCH v2] conntrack: fix incorrect check nat_action_info in check_orig_tuple
We tested the patch and it works. After NATed, the packet already carries the CS_SRC_NAT or CS_DST_NAT flag, there is no need to check nat_action_info, and the original check logic is incorrect. Reviewed-by: wangze 于2021年8月6日周五 下午4:38写道: > > From: wenxu > > A case for client A 10.0.0.2 snat to 1.1.1.2 with following flows. > > rule1: ovs-ofctl add-flow manbr "table=0,ct_state=-trk,ip,in_port=dpdk2, > actions=ct(table=1, nat)" > rule2: ovs-ofctl add-flow manbr > "table=0,table=1,ct_state=+trk+new,ip,in_port=dpdk2, actions=ct(commit, > nat(src=1.1.1.2)),dpdk3" > > When client A tcp connect to a non-exist server 1.1.1.3 > > The first syn packet will create the following conntrack 1 > But the second syn packet will wrongly create the conntrack 2 > > tcp,orig=(src=10.0.0.2,dst=1.1.1.3,sport=15690,dport=5001),reply=(src=1.1.1.3,dst=1.1.1.2,sport=5001,dport=15690),protoinfo=(state=SYN_SENT) >#conntrack 1 > tcp,orig=(src=1.1.1.2,dst=1.1.1.3,sport=15690,dport=5001),reply=(src=1.1.1.3,dst=1.1.1.2,sport=5001,dport=1024),protoinfo=(state=SYN_SENT) > #conntrack 2 > > The second syn packet gothrough rule1 and find the conntrack1 and > do nat. Then gothrough the rule2 will not find the only conntrack > for packet nated in the rule1 > The check_orig_tuple is used to fix for this situation(packet > nated in the first rule). But it should't check the nat_action_info > in the rule2. It should only check the CS_SRC_NAT and CS_DST_NAT. > > Signed-off-by: wenxu > --- > lib/conntrack.c | 8 +++- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/lib/conntrack.c b/lib/conntrack.c > index 2e803ca..ace3e9a 100644 > --- a/lib/conntrack.c > +++ b/lib/conntrack.c > @@ -1156,15 +1156,13 @@ handle_nat(struct dp_packet *pkt, struct conn *conn, > static bool > check_orig_tuple(struct conntrack *ct, struct dp_packet *pkt, > struct conn_lookup_ctx *ctx_in, long long now, > - struct conn **conn, > - const struct nat_action_info_t *nat_action_info) > + struct conn **conn) > { > if (!(pkt->md.ct_state & (CS_SRC_NAT | CS_DST_NAT)) || > (ctx_in->key.dl_type == htons(ETH_TYPE_IP) && > !pkt->md.ct_orig_tuple.ipv4.ipv4_proto) || > (ctx_in->key.dl_type == htons(ETH_TYPE_IPV6) && > - !pkt->md.ct_orig_tuple.ipv6.ipv6_proto) || > -nat_action_info) { > + !pkt->md.ct_orig_tuple.ipv6.ipv6_proto)) { > return false; > } > > @@ -1343,7 +1341,7 @@ process_one(struct conntrack *ct, struct dp_packet *pkt, > handle_nat(pkt, conn, zone, ctx->reply, ctx->icmp_related); > } > > -} else if (check_orig_tuple(ct, pkt, ctx, now, , nat_action_info)) { > +} else if (check_orig_tuple(ct, pkt, ctx, now, )) { > create_new_conn = conn_update_state(ct, pkt, ctx, conn, now); > } else { > if (ctx->icmp_related) { > -- > 1.8.3.1 > > ___ > dev mailing list > d...@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev
Re: [ovs-dev] [PATCH] dpif-netdev: Fix crash when PACKET_OUT is metered
Bleep bloop. Greetings Tony van der Peet, I am a robot and I have tried out your patch. Thanks for your contribution. I encountered some error that I wasn't expecting. See the details below. checkpatch: WARNING: Unexpected sign-offs from developers who are not authors or co-authors or committers: Ilya Maximets Lines checked: 193, Warnings: 1, Errors: 0 Please check this out. If you feel there has been an error, please email acon...@redhat.com Thanks, 0-day Robot ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev
[ovs-dev] [PATCH] dpif-netdev: Fix crash when PACKET_OUT is metered
When a PACKET_OUT has output port of OFPP_TABLE, and the rule table includes a meter and this causes the packet to be deleted, execute with a clone of the packet, restoring the original packet if it is changed by the execution. Add tests to verify the original issue is fixed, and that the fix doesn't break tunnel processing. Reported-by: Tony van der Peet Signed-off-by: Ilya Maximets Signed-off-by: Tony van der Peet --- lib/dp-packet.h | 13 ++ lib/dpif-netdev.c| 19 +- tests/ofproto-dpif.at| 21 +++ tests/tunnel-push-pop.at | 56 4 files changed, 108 insertions(+), 1 deletion(-) diff --git a/lib/dp-packet.h b/lib/dp-packet.h index 08d93c277..3dc582fbf 100644 --- a/lib/dp-packet.h +++ b/lib/dp-packet.h @@ -199,6 +199,7 @@ struct dp_packet *dp_packet_clone_data_with_headroom(const void *, size_t, void dp_packet_resize(struct dp_packet *b, size_t new_headroom, size_t new_tailroom); static inline void dp_packet_delete(struct dp_packet *); +static inline void dp_packet_swap(struct dp_packet *, struct dp_packet *); static inline void *dp_packet_at(const struct dp_packet *, size_t offset, size_t size); @@ -256,6 +257,18 @@ dp_packet_delete(struct dp_packet *b) } } +/* Swaps content of two packets. */ +static inline void +dp_packet_swap(struct dp_packet *a, struct dp_packet *b) +{ +ovs_assert(a->source == DPBUF_MALLOC || a->source == DPBUF_STUB); +ovs_assert(b->source == DPBUF_MALLOC || b->source == DPBUF_STUB); +struct dp_packet c = *a; + +*a = *b; +*b = c; +} + /* If 'b' contains at least 'offset + size' bytes of data, returns a pointer to * byte 'offset'. Otherwise, returns a null pointer. */ static inline void * diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 03f460c7d..4733c3a06 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -4077,7 +4077,10 @@ dpif_netdev_execute(struct dpif *dpif, struct dpif_execute *execute) flow_hash_5tuple(execute->flow, 0)); } -dp_packet_batch_init_packet(, execute->packet); +/* Making a copy because the packet might be stolen during the execution + * and caller might still need it. */ +struct dp_packet *packet_clone = dp_packet_clone(execute->packet); +dp_packet_batch_init_packet(, packet_clone); dp_netdev_execute_actions(pmd, , false, execute->flow, execute->actions, execute->actions_len); dp_netdev_pmd_flush_output_packets(pmd, true); @@ -4087,6 +4090,20 @@ dpif_netdev_execute(struct dpif *dpif, struct dpif_execute *execute) dp_netdev_pmd_unref(pmd); } +if (dp_packet_batch_size()) { +/* Packet wasn't dropped during the execution. Swapping content with + * the original packet, because the caller might expect actions to + * modify it. */ +dp_packet_swap(execute->packet, packet_clone); +dp_packet_delete_batch(, true); +} else { +/* Packet was stolen during the execution due to some error. We need + * to flag that for the caller, so it will not proceed with other + * actions on this packet. Returning EAGAIN because we just don't + * know what execlty happened. */ +return EAGAIN; +} + return 0; } diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at index ed3b141b3..70f9cb89f 100644 --- a/tests/ofproto-dpif.at +++ b/tests/ofproto-dpif.at @@ -9723,6 +9723,27 @@ OFPST_TABLE reply (OF1.3) (xid=0x2): OVS_VSWITCHD_STOP AT_CLEANUP +AT_SETUP([ofproto-dpif packet-out table meter drop]) +OVS_VSWITCHD_START +add_of_ports br0 1 2 + +AT_CHECK([ovs-ofctl -O OpenFlow13 add-meter br0 'meter=1 pktps bands=type=drop rate=1']) +AT_CHECK([ovs-ofctl -O OpenFlow13 add-flow br0 'in_port=1 action=meter:1,output:2']) + +ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 packet=5054000a505400090800451c0011a4cd0a0101010a010102000100040008 actions=resubmit(,0)" +ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 packet=5054000a505400090800451c0011a4cd0a0101010a010102000100040008 actions=resubmit(,0)" + +# Check that vswitchd hasn't crashed by dumping the meter added above +AT_CHECK([ovs-ofctl -O OpenFlow13 dump-meters br0 | ofctl_strip], [0], [dnl +OFPST_METER_CONFIG reply (OF1.3): +meter=1 pktps bands= +type=drop rate=1 +]) +OVS_WAIT_UNTIL([grep 'execute meter(0),2 failed' ovs-vswitchd.log]) + +OVS_VSWITCHD_STOP(["/execute meter(0),2 failed/d"]) +AT_CLEANUP + AT_SETUP([ofproto-dpif - ICMPv6]) OVS_VSWITCHD_START add_of_ports br0 1 diff --git a/tests/tunnel-push-pop.at b/tests/tunnel-push-pop.at index 48c5de9d1..12fc1ef91 100644 --- a/tests/tunnel-push-pop.at +++ b/tests/tunnel-push-pop.at @@ -595,6 +595,62 @@ OVS_WAIT_UNTIL([test `ovs-pcap p0.pcap | grep 5054000a505400091235 | wc OVS_VSWITCHD_STOP AT_CLEANUP
[ovs-dev] [PATCH branch-2.15] OVS: Update OVS 2.15 branch to use latest dpdk versions
Modify ci linux build script to use the latest DPDK stable release 20.11.2. Modify Documentation to use the latest DPDK stable release 20.11.2. Update NEWS file to reflect the latest DPDK stable release 20.11.2. FAQ is updated to reflect the latest DPDK for each OVS branch. Signed-off-by: Suneetha Kalahasthi --- .ci/linux-build.sh | 2 +- Documentation/faq/releases.rst | 6 +++--- Documentation/intro/install/dpdk.rst | 8 NEWS | 3 +++ 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh index 1acf5012d..24db5e058 100755 --- a/.ci/linux-build.sh +++ b/.ci/linux-build.sh @@ -201,7 +201,7 @@ fi if [ "$DPDK" ] || [ "$DPDK_SHARED" ]; then if [ -z "$DPDK_VER" ]; then -DPDK_VER="20.11.1" +DPDK_VER="20.11.2" fi install_dpdk $DPDK_VER if [ "$CC" = "clang" ]; then diff --git a/Documentation/faq/releases.rst b/Documentation/faq/releases.rst index 3bc34c892..d03de5beb 100644 --- a/Documentation/faq/releases.rst +++ b/Documentation/faq/releases.rst @@ -204,9 +204,9 @@ Q: What DPDK version does each Open vSwitch release work with? 2.10.x 17.11.10 2.11.x 18.11.9 2.12.x 18.11.9 -2.13.x 19.11.8 -2.14.x 19.11.8 -2.15.x 20.11.1 +2.13.x 19.11.9 +2.14.x 19.11.9 +2.15.x 20.11.2 Q: Are all the DPDK releases that OVS versions work with maintained? diff --git a/Documentation/intro/install/dpdk.rst b/Documentation/intro/install/dpdk.rst index 612f2fdbc..7f0442271 100644 --- a/Documentation/intro/install/dpdk.rst +++ b/Documentation/intro/install/dpdk.rst @@ -42,7 +42,7 @@ Build requirements In addition to the requirements described in :doc:`general`, building Open vSwitch with DPDK will require the following: -- DPDK 20.11.1 +- DPDK 20.11.2 - A `DPDK supported NIC`_ @@ -73,9 +73,9 @@ Install DPDK #. Download the `DPDK sources`_, extract the file and set ``DPDK_DIR``:: $ cd /usr/src/ - $ wget https://fast.dpdk.org/rel/dpdk-20.11.1.tar.xz - $ tar xf dpdk-20.11.1.tar.xz - $ export DPDK_DIR=/usr/src/dpdk-stable-20.11.1 + $ wget https://fast.dpdk.org/rel/dpdk-20.11.2.tar.xz + $ tar xf dpdk-20.11.2.tar.xz + $ export DPDK_DIR=/usr/src/dpdk-stable-20.11.2 $ cd $DPDK_DIR #. Configure and install DPDK using Meson diff --git a/NEWS b/NEWS index 154a299d9..e399dd0e0 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,9 @@ v2.15.2 - xx xxx - OVS now reports the datapath capability 'ct_zero_snat', which reflects whether the SNAT with all-zero IP address is supported. See ovs-vswitchd.conf.db(5) for details. + - DPDK: + * OVS validated with DPDK 20.11.2. It is recommended to use this version + until further releases. v2.15.1 - 01 Jul 2021 - -- 2.17.1 ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev
[ovs-dev] [PATCH branch-2.16] OVS: Update OVS 2.16 branch to use latest dpdk versions
Modify ci linux build script to use the latest DPDK stable release 20.11.2. Modify Documentation to use the latest DPDK stable release 20.11.2. Update NEWS file to reflect the latest DPDK stable release 20.11.2. FAQ is updated to reflect the latest DPDK for each OVS branch. Signed-off-by: Suneetha Kalahasthi --- .ci/linux-build.sh | 2 +- Documentation/faq/releases.rst | 8 Documentation/intro/install/dpdk.rst | 8 NEWS | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh index 863f02388..ef6b5fd4b 100755 --- a/.ci/linux-build.sh +++ b/.ci/linux-build.sh @@ -216,7 +216,7 @@ fi if [ "$DPDK" ] || [ "$DPDK_SHARED" ]; then if [ -z "$DPDK_VER" ]; then -DPDK_VER="20.11.1" +DPDK_VER="20.11.2" fi install_dpdk $DPDK_VER if [ "$CC" = "clang" ]; then diff --git a/Documentation/faq/releases.rst b/Documentation/faq/releases.rst index 68c9867b1..5d52446b9 100644 --- a/Documentation/faq/releases.rst +++ b/Documentation/faq/releases.rst @@ -205,10 +205,10 @@ Q: What DPDK version does each Open vSwitch release work with? 2.10.x 17.11.10 2.11.x 18.11.9 2.12.x 18.11.9 -2.13.x 19.11.8 -2.14.x 19.11.8 -2.15.x 20.11.1 -2.16.x 20.11.1 +2.13.x 19.11.9 +2.14.x 19.11.9 +2.15.x 20.11.2 +2.16.x 20.11.2 Q: Are all the DPDK releases that OVS versions work with maintained? diff --git a/Documentation/intro/install/dpdk.rst b/Documentation/intro/install/dpdk.rst index d8fa931fa..9d3b752c4 100644 --- a/Documentation/intro/install/dpdk.rst +++ b/Documentation/intro/install/dpdk.rst @@ -42,7 +42,7 @@ Build requirements In addition to the requirements described in :doc:`general`, building Open vSwitch with DPDK will require the following: -- DPDK 20.11.1 +- DPDK 20.11.2 - A `DPDK supported NIC`_ @@ -73,9 +73,9 @@ Install DPDK #. Download the `DPDK sources`_, extract the file and set ``DPDK_DIR``:: $ cd /usr/src/ - $ wget https://fast.dpdk.org/rel/dpdk-20.11.1.tar.xz - $ tar xf dpdk-20.11.1.tar.xz - $ export DPDK_DIR=/usr/src/dpdk-stable-20.11.1 + $ wget https://fast.dpdk.org/rel/dpdk-20.11.2.tar.xz + $ tar xf dpdk-20.11.2.tar.xz + $ export DPDK_DIR=/usr/src/dpdk-stable-20.11.2 $ cd $DPDK_DIR #. Configure and install DPDK using Meson diff --git a/NEWS b/NEWS index 1064c4dfc..f5e37e0f3 100644 --- a/NEWS +++ b/NEWS @@ -61,7 +61,7 @@ v2.16.0 - xx xxx in ovsdb on startup. * New command 'record-hostname-if-not-set' to update hostname in ovsdb. - DPDK: - * OVS validated with DPDK 20.11.1. It is recommended to use this version + * OVS validated with DPDK 20.11.2. It is recommended to use this version until further releases. * New debug appctl command 'dpdk/get-malloc-stats'. * Add hardware offload support for tunnel pop action (experimental). -- 2.17.1 ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev
[ovs-dev] [PATCH branch-master] OVS: Update OVS master to use latest dpdk versions
Modify ci linux build script to use the latest DPDK stable release 20.11.2. Modify Documentation to use the latest DPDK stable release 20.11.2. Update NEWS file to reflect the latest DPDK stable release 20.11.2. FAQ is updated to reflect the latest DPDK for each OVS branch. Signed-off-by: Suneetha Kalahasthi --- .ci/linux-build.sh | 2 +- Documentation/faq/releases.rst | 8 Documentation/intro/install/dpdk.rst | 8 NEWS | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh index 863f02388..ef6b5fd4b 100755 --- a/.ci/linux-build.sh +++ b/.ci/linux-build.sh @@ -216,7 +216,7 @@ fi if [ "$DPDK" ] || [ "$DPDK_SHARED" ]; then if [ -z "$DPDK_VER" ]; then -DPDK_VER="20.11.1" +DPDK_VER="20.11.2" fi install_dpdk $DPDK_VER if [ "$CC" = "clang" ]; then diff --git a/Documentation/faq/releases.rst b/Documentation/faq/releases.rst index 68c9867b1..5d52446b9 100644 --- a/Documentation/faq/releases.rst +++ b/Documentation/faq/releases.rst @@ -205,10 +205,10 @@ Q: What DPDK version does each Open vSwitch release work with? 2.10.x 17.11.10 2.11.x 18.11.9 2.12.x 18.11.9 -2.13.x 19.11.8 -2.14.x 19.11.8 -2.15.x 20.11.1 -2.16.x 20.11.1 +2.13.x 19.11.9 +2.14.x 19.11.9 +2.15.x 20.11.2 +2.16.x 20.11.2 Q: Are all the DPDK releases that OVS versions work with maintained? diff --git a/Documentation/intro/install/dpdk.rst b/Documentation/intro/install/dpdk.rst index 96843af73..d23a55c2c 100644 --- a/Documentation/intro/install/dpdk.rst +++ b/Documentation/intro/install/dpdk.rst @@ -42,7 +42,7 @@ Build requirements In addition to the requirements described in :doc:`general`, building Open vSwitch with DPDK will require the following: -- DPDK 20.11.1 +- DPDK 20.11.2 - A `DPDK supported NIC`_ @@ -73,9 +73,9 @@ Install DPDK #. Download the `DPDK sources`_, extract the file and set ``DPDK_DIR``:: $ cd /usr/src/ - $ wget https://fast.dpdk.org/rel/dpdk-20.11.1.tar.xz - $ tar xf dpdk-20.11.1.tar.xz - $ export DPDK_DIR=/usr/src/dpdk-stable-20.11.1 + $ wget https://fast.dpdk.org/rel/dpdk-20.11.2.tar.xz + $ tar xf dpdk-20.11.2.tar.xz + $ export DPDK_DIR=/usr/src/dpdk-stable-20.11.2 $ cd $DPDK_DIR #. Configure and install DPDK using Meson diff --git a/NEWS b/NEWS index 26920e215..53d8ce977 100644 --- a/NEWS +++ b/NEWS @@ -73,7 +73,7 @@ v2.16.0 - xx xxx in ovsdb on startup. * New command 'record-hostname-if-not-set' to update hostname in ovsdb. - DPDK: - * OVS validated with DPDK 20.11.1. It is recommended to use this version + * OVS validated with DPDK 20.11.2. It is recommended to use this version until further releases. * New debug appctl command 'dpdk/get-malloc-stats'. * Add hardware offload support for tunnel pop action (experimental). -- 2.17.1 ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev
[ovs-dev] tunnel info mask can unmasked when megaflow is with a recirc_id
Hi, One recirc_id can be viewed as a frozen state in the "xlate" process and this frozen state stores tunnel info in it. So this recirc_id can also be viewed as a packet tag, with this tag it means the packet has all the tunnel metadata. So I was wondering if the "xlate" process sees a packets with recirc id, it can clear all the masks of tunnel info, as the recric_id itself represents the tunnel info already. With this optimization, the recircled packets do not have to matched against tunnel info in the datapath, just recirc_id itself is enough, except the openflow rules clearly specify the tun_* fields. Am I correct? -- hepeng ___ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev