|
|
5f9769 |
From 0ea619c80146bffd4fef7ac1a8a2aa07f9003eb0 Mon Sep 17 00:00:00 2001
|
|
|
5f9769 |
From: Dumitru Ceara <dceara@redhat.com>
|
|
|
5f9769 |
Date: Fri, 5 Feb 2021 23:29:29 +0100
|
|
|
5f9769 |
Subject: [PATCH 2/2] lflow: Use learn() action to generate LB hairpin reply
|
|
|
5f9769 |
flows.
|
|
|
5f9769 |
|
|
|
5f9769 |
The main trait of load balancer hairpin traffic is that it never leaves
|
|
|
5f9769 |
the local hypervisor. Essentially this means that only hairpin
|
|
|
5f9769 |
openflows installed for logical switches that have at least one logical
|
|
|
5f9769 |
switch port bound locally can ever be hit.
|
|
|
5f9769 |
|
|
|
5f9769 |
Until now, if a load balancer was applied on multiple logical switches
|
|
|
5f9769 |
that are connected through a distributed router, ovn-controller would
|
|
|
5f9769 |
install flows to detect hairpin replies for all logical switches. In
|
|
|
5f9769 |
practice this leads to a very high number of openflows out of which
|
|
|
5f9769 |
most will never be used.
|
|
|
5f9769 |
|
|
|
5f9769 |
Instead we now use an additional action, learn(), on flows that match on
|
|
|
5f9769 |
packets that create the hairpin session. The learn() action will then
|
|
|
5f9769 |
generate the necessary flows to handle hairpin replies, but only for
|
|
|
5f9769 |
the local datapaths which actually generate hairpin traffic.
|
|
|
5f9769 |
|
|
|
5f9769 |
For example, simulating how ovn-k8s uses load balancer for services,
|
|
|
5f9769 |
in a "switch per node" scenario, the script below would generate
|
|
|
5f9769 |
10K (n_nodes * n_vips * n_backends) openflows on every node in table=69
|
|
|
5f9769 |
(hairpin reply). With this patch the maximum number of openflows that
|
|
|
5f9769 |
can be created for hairpin replies is 200 (n_vips * n_backends).
|
|
|
5f9769 |
|
|
|
5f9769 |
In general, for deployments that leverage switch-per-node topologies,
|
|
|
5f9769 |
the number of openflows is reduced by a factor of N, where N is the
|
|
|
5f9769 |
number of nodes.
|
|
|
5f9769 |
|
|
|
5f9769 |
$ cat lbs.sh
|
|
|
5f9769 |
NODES=50
|
|
|
5f9769 |
VIPS=20
|
|
|
5f9769 |
BACKENDS=10
|
|
|
5f9769 |
ovn-nbctl lr-add rtr
|
|
|
5f9769 |
for ((i = 1; i <= $NODES; i++)); do
|
|
|
5f9769 |
ovn-nbctl \
|
|
|
5f9769 |
-- ls-add ls$i \
|
|
|
5f9769 |
-- lsp-add ls$i vm$i \
|
|
|
5f9769 |
-- lsp-add ls$i ls$i-rtr \
|
|
|
5f9769 |
-- lsp-set-type ls$i-rtr router \
|
|
|
5f9769 |
-- lsp-set-options ls$i-rtr router-port=rtr-ls$i \
|
|
|
5f9769 |
-- lrp-add rtr rtr-ls$i 00:00:00:00:01:00 42.42.42.$i/24
|
|
|
5f9769 |
done
|
|
|
5f9769 |
|
|
|
5f9769 |
for ((i = 1; i <= $VIPS; i++)); do
|
|
|
5f9769 |
lb=lb$i
|
|
|
5f9769 |
vip=10.10.10.$i:1
|
|
|
5f9769 |
bip=20.20.20.1:2
|
|
|
5f9769 |
for ((j = 2; j <= $BACKENDS; j++)); do
|
|
|
5f9769 |
bip="$bip,20.20.20.$j:2"
|
|
|
5f9769 |
done
|
|
|
5f9769 |
ovn-nbctl lb-add $lb $vip $backends
|
|
|
5f9769 |
done
|
|
|
5f9769 |
|
|
|
5f9769 |
for ((i = 1; i <= $NODES; i++)); do
|
|
|
5f9769 |
for ((j = 1; j <= $VIPS; j++)); do
|
|
|
5f9769 |
ovn-nbctl ls-lb-add ls$i lb$j
|
|
|
5f9769 |
done
|
|
|
5f9769 |
done
|
|
|
5f9769 |
|
|
|
5f9769 |
ovs-vsctl add-port br-int vm1 \
|
|
|
5f9769 |
-- set interface vm1 type=internal \
|
|
|
5f9769 |
-- set interface vm1 external-ids:iface-id=vm1
|
|
|
5f9769 |
|
|
|
5f9769 |
Suggested-by: Ilya Maximets <i.maximets@ovn.org>
|
|
|
5f9769 |
Signed-off-by: Dumitru Ceara <dceara@redhat.com>
|
|
|
5f9769 |
Signed-off-by: Numan Siddique <numans@ovn.org>
|
|
|
5f9769 |
(cherry picked from upstream commit 022ea339c8e22824ba6f6f1257da0d1b6c66d401)
|
|
|
5f9769 |
|
|
|
5f9769 |
Change-Id: Ic0c20047538d6881e8cb79e00c96da8afde67a72
|
|
|
5f9769 |
---
|
|
|
5f9769 |
controller/lflow.c | 204 ++++++++++++++++---
|
|
|
5f9769 |
tests/ofproto-macros.at | 5 +-
|
|
|
5f9769 |
tests/ovn.at | 516 +++++++++++++++++++++++++-----------------------
|
|
|
5f9769 |
3 files changed, 455 insertions(+), 270 deletions(-)
|
|
|
5f9769 |
|
|
|
5f9769 |
diff --git a/controller/lflow.c b/controller/lflow.c
|
|
|
5f9769 |
index 946c1e0..2b7d356 100644
|
|
|
5f9769 |
--- a/controller/lflow.c
|
|
|
5f9769 |
+++ b/controller/lflow.c
|
|
|
5f9769 |
@@ -1171,6 +1171,178 @@ add_neighbor_flows(struct ovsdb_idl_index *sbrec_port_binding_by_name,
|
|
|
5f9769 |
}
|
|
|
5f9769 |
}
|
|
|
5f9769 |
|
|
|
5f9769 |
+/* Builds the "learn()" action to be triggered by packets initiating a
|
|
|
5f9769 |
+ * hairpin session.
|
|
|
5f9769 |
+ *
|
|
|
5f9769 |
+ * This will generate flows in table OFTABLE_CHK_LB_HAIRPIN_REPLY of the form:
|
|
|
5f9769 |
+ * - match:
|
|
|
5f9769 |
+ * metadata=<orig-pkt-metadata>,ip/ipv6,ip.src=<backend>,ip.dst=<vip>
|
|
|
5f9769 |
+ * nw_proto='lb_proto',tp_src_port=<backend-port>
|
|
|
5f9769 |
+ * - action:
|
|
|
5f9769 |
+ * set MLF_LOOKUP_LB_HAIRPIN_BIT=1
|
|
|
5f9769 |
+ */
|
|
|
5f9769 |
+static void
|
|
|
5f9769 |
+add_lb_vip_hairpin_reply_action(struct in6_addr *vip6, ovs_be32 vip,
|
|
|
5f9769 |
+ uint8_t lb_proto, bool has_l4_port,
|
|
|
5f9769 |
+ uint64_t cookie, struct ofpbuf *ofpacts)
|
|
|
5f9769 |
+{
|
|
|
5f9769 |
+ struct match match = MATCH_CATCHALL_INITIALIZER;
|
|
|
5f9769 |
+ struct ofpact_learn *ol = ofpact_put_LEARN(ofpacts);
|
|
|
5f9769 |
+ struct ofpact_learn_spec *ol_spec;
|
|
|
5f9769 |
+ unsigned int imm_bytes;
|
|
|
5f9769 |
+ uint8_t *src_imm;
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+ /* Once learned, hairpin reply flows are permanent until the VIP/backend
|
|
|
5f9769 |
+ * is removed.
|
|
|
5f9769 |
+ */
|
|
|
5f9769 |
+ ol->flags = NX_LEARN_F_DELETE_LEARNED;
|
|
|
5f9769 |
+ ol->idle_timeout = OFP_FLOW_PERMANENT;
|
|
|
5f9769 |
+ ol->hard_timeout = OFP_FLOW_PERMANENT;
|
|
|
5f9769 |
+ ol->priority = OFP_DEFAULT_PRIORITY;
|
|
|
5f9769 |
+ ol->table_id = OFTABLE_CHK_LB_HAIRPIN_REPLY;
|
|
|
5f9769 |
+ ol->cookie = htonll(cookie);
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+ /* Match on metadata of the packet that created the hairpin session. */
|
|
|
5f9769 |
+ ol_spec = ofpbuf_put_zeros(ofpacts, sizeof *ol_spec);
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+ ol_spec->dst.field = mf_from_id(MFF_METADATA);
|
|
|
5f9769 |
+ ol_spec->dst.ofs = 0;
|
|
|
5f9769 |
+ ol_spec->dst.n_bits = ol_spec->dst.field->n_bits;
|
|
|
5f9769 |
+ ol_spec->n_bits = ol_spec->dst.n_bits;
|
|
|
5f9769 |
+ ol_spec->dst_type = NX_LEARN_DST_MATCH;
|
|
|
5f9769 |
+ ol_spec->src_type = NX_LEARN_SRC_FIELD;
|
|
|
5f9769 |
+ ol_spec->src.field = mf_from_id(MFF_METADATA);
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+ /* Match on the same ETH type as the packet that created the hairpin
|
|
|
5f9769 |
+ * session.
|
|
|
5f9769 |
+ */
|
|
|
5f9769 |
+ ol_spec = ofpbuf_put_zeros(ofpacts, sizeof *ol_spec);
|
|
|
5f9769 |
+ ol_spec->dst.field = mf_from_id(MFF_ETH_TYPE);
|
|
|
5f9769 |
+ ol_spec->dst.ofs = 0;
|
|
|
5f9769 |
+ ol_spec->dst.n_bits = ol_spec->dst.field->n_bits;
|
|
|
5f9769 |
+ ol_spec->n_bits = ol_spec->dst.n_bits;
|
|
|
5f9769 |
+ ol_spec->dst_type = NX_LEARN_DST_MATCH;
|
|
|
5f9769 |
+ ol_spec->src_type = NX_LEARN_SRC_IMMEDIATE;
|
|
|
5f9769 |
+ union mf_value imm_eth_type = {
|
|
|
5f9769 |
+ .be16 = !vip6 ? htons(ETH_TYPE_IP) : htons(ETH_TYPE_IPV6)
|
|
|
5f9769 |
+ };
|
|
|
5f9769 |
+ mf_write_subfield_value(&ol_spec->dst, &imm_eth_type, &match);
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+ /* Push value last, as this may reallocate 'ol_spec'. */
|
|
|
5f9769 |
+ imm_bytes = DIV_ROUND_UP(ol_spec->dst.n_bits, 8);
|
|
|
5f9769 |
+ src_imm = ofpbuf_put_zeros(ofpacts, OFPACT_ALIGN(imm_bytes));
|
|
|
5f9769 |
+ memcpy(src_imm, &imm_eth_type, imm_bytes);
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+ /* Hairpin replies have ip.src == <backend-ip>. */
|
|
|
5f9769 |
+ ol_spec = ofpbuf_put_zeros(ofpacts, sizeof *ol_spec);
|
|
|
5f9769 |
+ if (!vip6) {
|
|
|
5f9769 |
+ ol_spec->dst.field = mf_from_id(MFF_IPV4_SRC);
|
|
|
5f9769 |
+ ol_spec->src.field = mf_from_id(MFF_IPV4_SRC);
|
|
|
5f9769 |
+ } else {
|
|
|
5f9769 |
+ ol_spec->dst.field = mf_from_id(MFF_IPV6_SRC);
|
|
|
5f9769 |
+ ol_spec->src.field = mf_from_id(MFF_IPV6_SRC);
|
|
|
5f9769 |
+ }
|
|
|
5f9769 |
+ ol_spec->dst.ofs = 0;
|
|
|
5f9769 |
+ ol_spec->dst.n_bits = ol_spec->dst.field->n_bits;
|
|
|
5f9769 |
+ ol_spec->n_bits = ol_spec->dst.n_bits;
|
|
|
5f9769 |
+ ol_spec->dst_type = NX_LEARN_DST_MATCH;
|
|
|
5f9769 |
+ ol_spec->src_type = NX_LEARN_SRC_FIELD;
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+ /* Hairpin replies have ip.dst == <vip>. */
|
|
|
5f9769 |
+ union mf_value imm_ip;
|
|
|
5f9769 |
+ ol_spec = ofpbuf_put_zeros(ofpacts, sizeof *ol_spec);
|
|
|
5f9769 |
+ if (!vip6) {
|
|
|
5f9769 |
+ ol_spec->dst.field = mf_from_id(MFF_IPV4_DST);
|
|
|
5f9769 |
+ imm_ip = (union mf_value) {
|
|
|
5f9769 |
+ .be32 = vip
|
|
|
5f9769 |
+ };
|
|
|
5f9769 |
+ } else {
|
|
|
5f9769 |
+ ol_spec->dst.field = mf_from_id(MFF_IPV6_DST);
|
|
|
5f9769 |
+ imm_ip = (union mf_value) {
|
|
|
5f9769 |
+ .ipv6 = *vip6
|
|
|
5f9769 |
+ };
|
|
|
5f9769 |
+ }
|
|
|
5f9769 |
+ ol_spec->dst.ofs = 0;
|
|
|
5f9769 |
+ ol_spec->dst.n_bits = ol_spec->dst.field->n_bits;
|
|
|
5f9769 |
+ ol_spec->n_bits = ol_spec->dst.n_bits;
|
|
|
5f9769 |
+ ol_spec->dst_type = NX_LEARN_DST_MATCH;
|
|
|
5f9769 |
+ ol_spec->src_type = NX_LEARN_SRC_IMMEDIATE;
|
|
|
5f9769 |
+ mf_write_subfield_value(&ol_spec->dst, &imm_ip, &match);
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+ /* Push value last, as this may reallocate 'ol_spec' */
|
|
|
5f9769 |
+ imm_bytes = DIV_ROUND_UP(ol_spec->dst.n_bits, 8);
|
|
|
5f9769 |
+ src_imm = ofpbuf_put_zeros(ofpacts, OFPACT_ALIGN(imm_bytes));
|
|
|
5f9769 |
+ memcpy(src_imm, &imm_ip, imm_bytes);
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+ /* Hairpin replies have the same nw_proto as packets that created the
|
|
|
5f9769 |
+ * session.
|
|
|
5f9769 |
+ */
|
|
|
5f9769 |
+ union mf_value imm_proto = {
|
|
|
5f9769 |
+ .u8 = lb_proto,
|
|
|
5f9769 |
+ };
|
|
|
5f9769 |
+ ol_spec = ofpbuf_put_zeros(ofpacts, sizeof *ol_spec);
|
|
|
5f9769 |
+ ol_spec->dst.field = mf_from_id(MFF_IP_PROTO);
|
|
|
5f9769 |
+ ol_spec->src.field = mf_from_id(MFF_IP_PROTO);
|
|
|
5f9769 |
+ ol_spec->dst.ofs = 0;
|
|
|
5f9769 |
+ ol_spec->dst.n_bits = ol_spec->dst.field->n_bits;
|
|
|
5f9769 |
+ ol_spec->n_bits = ol_spec->dst.n_bits;
|
|
|
5f9769 |
+ ol_spec->dst_type = NX_LEARN_DST_MATCH;
|
|
|
5f9769 |
+ ol_spec->src_type = NX_LEARN_SRC_IMMEDIATE;
|
|
|
5f9769 |
+ mf_write_subfield_value(&ol_spec->dst, &imm_proto, &match);
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+ /* Push value last, as this may reallocate 'ol_spec' */
|
|
|
5f9769 |
+ imm_bytes = DIV_ROUND_UP(ol_spec->dst.n_bits, 8);
|
|
|
5f9769 |
+ src_imm = ofpbuf_put_zeros(ofpacts, OFPACT_ALIGN(imm_bytes));
|
|
|
5f9769 |
+ memcpy(src_imm, &imm_proto, imm_bytes);
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+ /* Hairpin replies have source port == <backend-port>. */
|
|
|
5f9769 |
+ if (has_l4_port) {
|
|
|
5f9769 |
+ ol_spec = ofpbuf_put_zeros(ofpacts, sizeof *ol_spec);
|
|
|
5f9769 |
+ switch (lb_proto) {
|
|
|
5f9769 |
+ case IPPROTO_TCP:
|
|
|
5f9769 |
+ ol_spec->dst.field = mf_from_id(MFF_TCP_SRC);
|
|
|
5f9769 |
+ ol_spec->src.field = mf_from_id(MFF_TCP_DST);
|
|
|
5f9769 |
+ break;
|
|
|
5f9769 |
+ case IPPROTO_UDP:
|
|
|
5f9769 |
+ ol_spec->dst.field = mf_from_id(MFF_UDP_SRC);
|
|
|
5f9769 |
+ ol_spec->src.field = mf_from_id(MFF_UDP_DST);
|
|
|
5f9769 |
+ break;
|
|
|
5f9769 |
+ case IPPROTO_SCTP:
|
|
|
5f9769 |
+ ol_spec->dst.field = mf_from_id(MFF_SCTP_SRC);
|
|
|
5f9769 |
+ ol_spec->src.field = mf_from_id(MFF_SCTP_DST);
|
|
|
5f9769 |
+ break;
|
|
|
5f9769 |
+ default:
|
|
|
5f9769 |
+ OVS_NOT_REACHED();
|
|
|
5f9769 |
+ break;
|
|
|
5f9769 |
+ }
|
|
|
5f9769 |
+ ol_spec->dst.ofs = 0;
|
|
|
5f9769 |
+ ol_spec->dst.n_bits = ol_spec->dst.field->n_bits;
|
|
|
5f9769 |
+ ol_spec->n_bits = ol_spec->dst.n_bits;
|
|
|
5f9769 |
+ ol_spec->dst_type = NX_LEARN_DST_MATCH;
|
|
|
5f9769 |
+ ol_spec->src_type = NX_LEARN_SRC_FIELD;
|
|
|
5f9769 |
+ }
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+ /* Set MLF_LOOKUP_LB_HAIRPIN_BIT for hairpin replies. */
|
|
|
5f9769 |
+ ol_spec = ofpbuf_put_zeros(ofpacts, sizeof *ol_spec);
|
|
|
5f9769 |
+ ol_spec->dst.field = mf_from_id(MFF_LOG_FLAGS);
|
|
|
5f9769 |
+ ol_spec->dst.ofs = MLF_LOOKUP_LB_HAIRPIN_BIT;
|
|
|
5f9769 |
+ ol_spec->dst.n_bits = 1;
|
|
|
5f9769 |
+ ol_spec->n_bits = ol_spec->dst.n_bits;
|
|
|
5f9769 |
+ ol_spec->dst_type = NX_LEARN_DST_LOAD;
|
|
|
5f9769 |
+ ol_spec->src_type = NX_LEARN_SRC_IMMEDIATE;
|
|
|
5f9769 |
+ union mf_value imm_reg_value = {
|
|
|
5f9769 |
+ .u8 = 1
|
|
|
5f9769 |
+ };
|
|
|
5f9769 |
+ mf_write_subfield_value(&ol_spec->dst, &imm_reg_value, &match);
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+ /* Push value last, as this may reallocate 'ol_spec' */
|
|
|
5f9769 |
+ imm_bytes = DIV_ROUND_UP(ol_spec->dst.n_bits, 8);
|
|
|
5f9769 |
+ src_imm = ofpbuf_put_zeros(ofpacts, OFPACT_ALIGN(imm_bytes));
|
|
|
5f9769 |
+ memcpy(src_imm, &imm_reg_value, imm_bytes);
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+ ofpact_finish_LEARN(ofpacts, &ol);
|
|
|
5f9769 |
+}
|
|
|
5f9769 |
+
|
|
|
5f9769 |
static void
|
|
|
5f9769 |
add_lb_vip_hairpin_flows(struct ovn_controller_lb *lb,
|
|
|
5f9769 |
struct ovn_lb_vip *lb_vip,
|
|
|
5f9769 |
@@ -1180,14 +1352,12 @@ add_lb_vip_hairpin_flows(struct ovn_controller_lb *lb,
|
|
|
5f9769 |
{
|
|
|
5f9769 |
uint64_t stub[1024 / 8];
|
|
|
5f9769 |
struct ofpbuf ofpacts = OFPBUF_STUB_INITIALIZER(stub);
|
|
|
5f9769 |
+ struct match hairpin_match = MATCH_CATCHALL_INITIALIZER;
|
|
|
5f9769 |
|
|
|
5f9769 |
uint8_t value = 1;
|
|
|
5f9769 |
put_load(&value, sizeof value, MFF_LOG_FLAGS,
|
|
|
5f9769 |
MLF_LOOKUP_LB_HAIRPIN_BIT, 1, &ofpacts);
|
|
|
5f9769 |
|
|
|
5f9769 |
- struct match hairpin_match = MATCH_CATCHALL_INITIALIZER;
|
|
|
5f9769 |
- struct match hairpin_reply_match = MATCH_CATCHALL_INITIALIZER;
|
|
|
5f9769 |
-
|
|
|
5f9769 |
if (IN6_IS_ADDR_V4MAPPED(&lb_vip->vip)) {
|
|
|
5f9769 |
ovs_be32 bip4 = in6_addr_get_mapped_ipv4(&lb_backend->ip);
|
|
|
5f9769 |
ovs_be32 vip4 = lb->hairpin_snat_ips.n_ipv4_addrs
|
|
|
5f9769 |
@@ -1198,9 +1368,10 @@ add_lb_vip_hairpin_flows(struct ovn_controller_lb *lb,
|
|
|
5f9769 |
match_set_nw_src(&hairpin_match, bip4);
|
|
|
5f9769 |
match_set_nw_dst(&hairpin_match, bip4);
|
|
|
5f9769 |
|
|
|
5f9769 |
- match_set_dl_type(&hairpin_reply_match, htons(ETH_TYPE_IP));
|
|
|
5f9769 |
- match_set_nw_src(&hairpin_reply_match, bip4);
|
|
|
5f9769 |
- match_set_nw_dst(&hairpin_reply_match, vip4);
|
|
|
5f9769 |
+ add_lb_vip_hairpin_reply_action(NULL, vip4, lb_proto,
|
|
|
5f9769 |
+ lb_backend->port,
|
|
|
5f9769 |
+ lb->slb->header_.uuid.parts[0],
|
|
|
5f9769 |
+ &ofpacts);
|
|
|
5f9769 |
} else {
|
|
|
5f9769 |
struct in6_addr *bip6 = &lb_backend->ip;
|
|
|
5f9769 |
struct in6_addr *vip6 = lb->hairpin_snat_ips.n_ipv6_addrs
|
|
|
5f9769 |
@@ -1210,17 +1381,15 @@ add_lb_vip_hairpin_flows(struct ovn_controller_lb *lb,
|
|
|
5f9769 |
match_set_ipv6_src(&hairpin_match, bip6);
|
|
|
5f9769 |
match_set_ipv6_dst(&hairpin_match, bip6);
|
|
|
5f9769 |
|
|
|
5f9769 |
- match_set_dl_type(&hairpin_reply_match, htons(ETH_TYPE_IPV6));
|
|
|
5f9769 |
- match_set_ipv6_src(&hairpin_reply_match, bip6);
|
|
|
5f9769 |
- match_set_ipv6_dst(&hairpin_reply_match, vip6);
|
|
|
5f9769 |
+ add_lb_vip_hairpin_reply_action(vip6, 0, lb_proto,
|
|
|
5f9769 |
+ lb_backend->port,
|
|
|
5f9769 |
+ lb->slb->header_.uuid.parts[0],
|
|
|
5f9769 |
+ &ofpacts);
|
|
|
5f9769 |
}
|
|
|
5f9769 |
|
|
|
5f9769 |
if (lb_backend->port) {
|
|
|
5f9769 |
match_set_nw_proto(&hairpin_match, lb_proto);
|
|
|
5f9769 |
match_set_tp_dst(&hairpin_match, htons(lb_backend->port));
|
|
|
5f9769 |
-
|
|
|
5f9769 |
- match_set_nw_proto(&hairpin_reply_match, lb_proto);
|
|
|
5f9769 |
- match_set_tp_src(&hairpin_reply_match, htons(lb_backend->port));
|
|
|
5f9769 |
}
|
|
|
5f9769 |
|
|
|
5f9769 |
/* In the original direction, only match on traffic that was already
|
|
|
5f9769 |
@@ -1241,17 +1410,6 @@ add_lb_vip_hairpin_flows(struct ovn_controller_lb *lb,
|
|
|
5f9769 |
ofctrl_add_flow(flow_table, OFTABLE_CHK_LB_HAIRPIN, 100,
|
|
|
5f9769 |
lb->slb->header_.uuid.parts[0], &hairpin_match,
|
|
|
5f9769 |
&ofpacts, &lb->slb->header_.uuid);
|
|
|
5f9769 |
-
|
|
|
5f9769 |
- for (size_t i = 0; i < lb->slb->n_datapaths; i++) {
|
|
|
5f9769 |
- match_set_metadata(&hairpin_reply_match,
|
|
|
5f9769 |
- htonll(lb->slb->datapaths[i]->tunnel_key));
|
|
|
5f9769 |
-
|
|
|
5f9769 |
- ofctrl_add_flow(flow_table, OFTABLE_CHK_LB_HAIRPIN_REPLY, 100,
|
|
|
5f9769 |
- lb->slb->header_.uuid.parts[0],
|
|
|
5f9769 |
- &hairpin_reply_match,
|
|
|
5f9769 |
- &ofpacts, &lb->slb->header_.uuid);
|
|
|
5f9769 |
- }
|
|
|
5f9769 |
-
|
|
|
5f9769 |
ofpbuf_uninit(&ofpacts);
|
|
|
5f9769 |
}
|
|
|
5f9769 |
|
|
|
5f9769 |
diff --git a/tests/ofproto-macros.at b/tests/ofproto-macros.at
|
|
|
5f9769 |
index dd5d384..ff65d60 100644
|
|
|
5f9769 |
--- a/tests/ofproto-macros.at
|
|
|
5f9769 |
+++ b/tests/ofproto-macros.at
|
|
|
5f9769 |
@@ -12,7 +12,10 @@ strip_n_bytes () {
|
|
|
5f9769 |
|
|
|
5f9769 |
# Strips 'cookie=...' from ovs-ofctl output.
|
|
|
5f9769 |
strip_cookie () {
|
|
|
5f9769 |
- sed 's/ cookie=0x[0-9a-fA-F]*,//'
|
|
|
5f9769 |
+ sed '
|
|
|
5f9769 |
+s/ cookie=0x[0-9a-fA-F]*,//
|
|
|
5f9769 |
+s/cookie=0x[0-9a-fA-F]*,//
|
|
|
5f9769 |
+'
|
|
|
5f9769 |
}
|
|
|
5f9769 |
|
|
|
5f9769 |
# Strips out uninteresting parts of ovs-ofctl output, as well as parts
|
|
|
5f9769 |
diff --git a/tests/ovn.at b/tests/ovn.at
|
|
|
5f9769 |
index 14072ec..6c9bda0 100644
|
|
|
5f9769 |
--- a/tests/ovn.at
|
|
|
5f9769 |
+++ b/tests/ovn.at
|
|
|
5f9769 |
@@ -20822,6 +20822,8 @@ ovn-sbctl dump-flows > sbflows
|
|
|
5f9769 |
AT_CAPTURE_FILE([sbflows])
|
|
|
5f9769 |
> expected
|
|
|
5f9769 |
|
|
|
5f9769 |
+AS_BOX([IPv4 TCP Hairpin])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
# Inject IPv4 TCP packet from lsp.
|
|
|
5f9769 |
tcp_payload=$(build_tcp_syn 84d0 1f90 05a7)
|
|
|
5f9769 |
hp_tcp_payload=$(build_tcp_syn 84d0 0fc9 156e)
|
|
|
5f9769 |
@@ -20835,9 +20837,15 @@ send_ipv4_pkt hv1 hv1-vif1 000000000001 000000000100 \
|
|
|
5f9769 |
# Check that traffic is hairpinned.
|
|
|
5f9769 |
OVN_CHECK_PACKETS([hv1/vif1-tx.pcap], [expected])
|
|
|
5f9769 |
|
|
|
5f9769 |
+# Check learned hairpin reply flows.
|
|
|
5f9769 |
+OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=69 | ofctl_strip_all | grep -v NXST], [0], [dnl
|
|
|
5f9769 |
+ table=69, tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
# Change LB Hairpin SNAT IP.
|
|
|
5f9769 |
# Also flush conntrack to avoid reusing an existing entry.
|
|
|
5f9769 |
as hv1 ovs-appctl dpctl/flush-conntrack
|
|
|
5f9769 |
+
|
|
|
5f9769 |
ovn-nbctl --wait=hv set load_balancer lb-ipv4-tcp options:hairpin_snat_ip="88.88.88.87"
|
|
|
5f9769 |
# Inject IPv4 TCP packet from lsp.
|
|
|
5f9769 |
hp_tcp_payload=$(build_tcp_syn 84d0 0fc9 156f)
|
|
|
5f9769 |
@@ -20851,6 +20859,13 @@ send_ipv4_pkt hv1 hv1-vif1 000000000001 000000000100 \
|
|
|
5f9769 |
# Check that traffic is hairpinned.
|
|
|
5f9769 |
OVN_CHECK_PACKETS([hv1/vif1-tx.pcap], [expected])
|
|
|
5f9769 |
|
|
|
5f9769 |
+# Check learned hairpin reply flows.
|
|
|
5f9769 |
+OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=69 | ofctl_strip_all | grep -v NXST], [0], [dnl
|
|
|
5f9769 |
+ table=69, tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.87,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+AS_BOX([IPv4 UDP Hairpin])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
# Inject IPv4 UDP packet from lsp.
|
|
|
5f9769 |
udp_payload=$(build_udp 84d0 0fc8 6666)
|
|
|
5f9769 |
hp_udp_payload=$(build_udp 84d0 07e5 6e49)
|
|
|
5f9769 |
@@ -20864,6 +20879,12 @@ send_ipv4_pkt hv1 hv1-vif1 000000000001 000000000100 \
|
|
|
5f9769 |
# Check that traffic is hairpinned.
|
|
|
5f9769 |
OVN_CHECK_PACKETS([hv1/vif1-tx.pcap], [expected])
|
|
|
5f9769 |
|
|
|
5f9769 |
+# Check learned hairpin reply flows.
|
|
|
5f9769 |
+OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=69 | ofctl_strip_all | grep -v NXST], [0], [dnl
|
|
|
5f9769 |
+ table=69, tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.87,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+ table=69, udp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
# Change LB Hairpin SNAT IP.
|
|
|
5f9769 |
# Also flush conntrack to avoid reusing an existing entry.
|
|
|
5f9769 |
as hv1 ovs-appctl dpctl/flush-conntrack
|
|
|
5f9769 |
@@ -20880,6 +20901,14 @@ send_ipv4_pkt hv1 hv1-vif1 000000000001 000000000100 \
|
|
|
5f9769 |
# Check that traffic is hairpinned.
|
|
|
5f9769 |
OVN_CHECK_PACKETS([hv1/vif1-tx.pcap], [expected])
|
|
|
5f9769 |
|
|
|
5f9769 |
+# Check learned hairpin reply flows.
|
|
|
5f9769 |
+OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=69 | ofctl_strip_all | grep -v NXST], [0], [dnl
|
|
|
5f9769 |
+ table=69, tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.87,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+ table=69, udp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.87,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+AS_BOX([IPv6 TCP Hairpin])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
# Inject IPv6 TCP packet from lsp.
|
|
|
5f9769 |
tcp_payload=$(build_tcp_syn 84d0 1f90 3ff9)
|
|
|
5f9769 |
hp_tcp_payload=$(build_tcp_syn 84d0 0fc9 4fc0)
|
|
|
5f9769 |
@@ -20893,6 +20922,13 @@ send_ipv6_pkt hv1 hv1-vif1 000000000001 000000000100 \
|
|
|
5f9769 |
# Check that traffic is hairpinned.
|
|
|
5f9769 |
OVN_CHECK_PACKETS([hv1/vif1-tx.pcap], [expected])
|
|
|
5f9769 |
|
|
|
5f9769 |
+# Check learned hairpin reply flows.
|
|
|
5f9769 |
+OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=69 | ofctl_strip_all | grep -v NXST], [0], [dnl
|
|
|
5f9769 |
+ table=69, tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.87,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+ table=69, udp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.87,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+ table=69, tcp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
# Change LB Hairpin SNAT IP.
|
|
|
5f9769 |
# Also flush conntrack to avoid reusing an existing entry.
|
|
|
5f9769 |
as hv1 ovs-appctl dpctl/flush-conntrack
|
|
|
5f9769 |
@@ -20910,6 +20946,15 @@ send_ipv6_pkt hv1 hv1-vif1 000000000001 000000000100 \
|
|
|
5f9769 |
# Check that traffic is hairpinned.
|
|
|
5f9769 |
OVN_CHECK_PACKETS([hv1/vif1-tx.pcap], [expected])
|
|
|
5f9769 |
|
|
|
5f9769 |
+# Check learned hairpin reply flows.
|
|
|
5f9769 |
+OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=69 | ofctl_strip_all | grep -v NXST], [0], [dnl
|
|
|
5f9769 |
+ table=69, tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.87,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+ table=69, udp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.87,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+ table=69, tcp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::87,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+AS_BOX([IPv6 UDP Hairpin])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
# Inject IPv6 UDP packet from lsp.
|
|
|
5f9769 |
udp_payload=$(build_udp 84d0 0fc8 a0b8)
|
|
|
5f9769 |
hp_udp_payload=$(build_udp 84d0 07e5 a89b)
|
|
|
5f9769 |
@@ -20920,9 +20965,17 @@ send_ipv6_pkt hv1 hv1-vif1 000000000001 000000000100 \
|
|
|
5f9769 |
88000000000000000000000000000088 ${hp_udp_payload} \
|
|
|
5f9769 |
expected
|
|
|
5f9769 |
|
|
|
5f9769 |
-Check that traffic is hairpinned.
|
|
|
5f9769 |
+# Check that traffic is hairpinned.
|
|
|
5f9769 |
OVN_CHECK_PACKETS([hv1/vif1-tx.pcap], [expected])
|
|
|
5f9769 |
|
|
|
5f9769 |
+# Check learned hairpin reply flows.
|
|
|
5f9769 |
+OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=69 | ofctl_strip_all | grep -v NXST], [0], [dnl
|
|
|
5f9769 |
+ table=69, tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.87,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+ table=69, udp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.87,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+ table=69, tcp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::87,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+ table=69, udp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
# Change LB Hairpin SNAT IP.
|
|
|
5f9769 |
# Also flush conntrack to avoid reusing an existing entry.
|
|
|
5f9769 |
as hv1 ovs-appctl dpctl/flush-conntrack
|
|
|
5f9769 |
@@ -20937,6 +20990,41 @@ send_ipv6_pkt hv1 hv1-vif1 000000000001 000000000100 \
|
|
|
5f9769 |
88000000000000000000000000000087 ${hp_udp_payload} \
|
|
|
5f9769 |
expected
|
|
|
5f9769 |
|
|
|
5f9769 |
+# Check learned hairpin reply flows.
|
|
|
5f9769 |
+OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=69 | ofctl_strip_all | grep -v NXST], [0], [dnl
|
|
|
5f9769 |
+ table=69, tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.87,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+ table=69, udp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.87,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+ table=69, tcp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::87,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+ table=69, udp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::87,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+AS_BOX([Delete VIP])
|
|
|
5f9769 |
+check ovn-nbctl --wait=hv set Load_Balancer lb-ipv4-tcp vips='"88.88.88.88:8080"=""'
|
|
|
5f9769 |
+OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=69 | ofctl_strip_all | grep -v NXST], [0], [dnl
|
|
|
5f9769 |
+ table=69, udp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.87,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+ table=69, tcp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::87,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+ table=69, udp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::87,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+AS_BOX([Delete LB])
|
|
|
5f9769 |
+check ovn-nbctl --wait=hv \
|
|
|
5f9769 |
+ -- lb-del lb-ipv4-tcp \
|
|
|
5f9769 |
+ -- lb-del lb-ipv4-udp
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=69 | ofctl_strip_all | grep -v NXST], [0], [dnl
|
|
|
5f9769 |
+ table=69, tcp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::87,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+ table=69, udp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::87,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+check ovn-nbctl --wait=hv lb-del lb-ipv6-tcp
|
|
|
5f9769 |
+OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=69 | ofctl_strip_all | grep -v NXST], [0], [dnl
|
|
|
5f9769 |
+ table=69, udp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::87,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+check ovn-nbctl --wait=hv lb-del lb-ipv6-udp
|
|
|
5f9769 |
+OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=69 | ofctl_strip_all | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
OVN_CLEANUP([hv1])
|
|
|
5f9769 |
AT_CLEANUP
|
|
|
5f9769 |
|
|
|
5f9769 |
@@ -23188,93 +23276,79 @@ check ovn-nbctl lb-add lb-ipv4-udp 88.88.88.88:4040 42.42.42.1:2021 udp
|
|
|
5f9769 |
check ovn-nbctl lb-add lb-ipv6-tcp [[8800::0088]]:8080 [[4200::1]]:4041 tcp
|
|
|
5f9769 |
check ovn-nbctl --wait=hv lb-add lb-ipv6-udp [[8800::0088]]:4040 [[4200::1]]:2021 udp
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=68], [0], [dnl
|
|
|
5f9769 |
-NXST_FLOW reply (xid=0x8):
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=69], [0], [dnl
|
|
|
5f9769 |
-NXST_FLOW reply (xid=0x8):
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=69 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=70], [0], [dnl
|
|
|
5f9769 |
-NXST_FLOW reply (xid=0x8):
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=70 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=68], [0], [dnl
|
|
|
5f9769 |
-NXST_FLOW reply (xid=0x8):
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=68 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69], [0], [dnl
|
|
|
5f9769 |
-NXST_FLOW reply (xid=0x8):
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=70], [0], [dnl
|
|
|
5f9769 |
-NXST_FLOW reply (xid=0x8):
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=70 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
check ovn-nbctl --wait=hv ls-lb-add sw0 lb-ipv4-tcp
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 1]
|
|
|
5f9769 |
+ [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 1]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | cut -d ' ' -f8-], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=68 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=69 | grep -v NXST | cut -d ' ' -f8-], [0], [dnl
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69], [0], [dnl
|
|
|
5f9769 |
+NXST_FLOW reply (xid=0x8):
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=70 | grep -v NXST | cut -d ' ' -f8-], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=70 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=68], [0], [dnl
|
|
|
5f9769 |
-NXST_FLOW reply (xid=0x8):
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=68 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69], [0], [dnl
|
|
|
5f9769 |
-NXST_FLOW reply (xid=0x8):
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=70], [0], [dnl
|
|
|
5f9769 |
-NXST_FLOW reply (xid=0x8):
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=70 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
check ovn-nbctl lb-add lb-ipv4-tcp 88.88.88.90:8080 42.42.42.42:4041,52.52.52.52:4042 tcp
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 3]
|
|
|
5f9769 |
+ [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 3]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=68 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=69 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.42,nw_dst=88.88.88.90,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=52.52.52.52,nw_dst=88.88.88.90,tp_src=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69], [0], [dnl
|
|
|
5f9769 |
+NXST_FLOW reply (xid=0x8):
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=70 | grep -v NXST | cut -d ' ' -f8-], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=70 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=68], [0], [dnl
|
|
|
5f9769 |
-NXST_FLOW reply (xid=0x8):
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=68 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69], [0], [dnl
|
|
|
5f9769 |
-NXST_FLOW reply (xid=0x8):
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=70], [0], [dnl
|
|
|
5f9769 |
-NXST_FLOW reply (xid=0x8):
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=70 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
check ovn-nbctl lsp-add sw0 sw0-p2
|
|
|
5f9769 |
@@ -23282,192 +23356,159 @@ check ovn-nbctl lsp-add sw0 sw0-p2
|
|
|
5f9769 |
OVS_WAIT_UNTIL([test x$(ovn-nbctl lsp-get-up sw0-p2) = xup])
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv2 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 3]
|
|
|
5f9769 |
+ [test $(as hv2 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 3]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=68 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.42,nw_dst=88.88.88.90,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=52.52.52.52,nw_dst=88.88.88.90,tp_src=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=70 | grep -v NXST | cut -d ' ' -f8-], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=70 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
check ovn-nbctl --wait=hv ls-lb-add sw0 lb-ipv4-udp
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 4]
|
|
|
5f9769 |
+ [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 4]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv2 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 4]
|
|
|
5f9769 |
+ [test $(as hv2 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 4]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=68 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=17,NXM_OF_UDP_SRC[[]]=NXM_OF_UDP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=69 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.42,nw_dst=88.88.88.90,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=52.52.52.52,nw_dst=88.88.88.90,tp_src=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=70 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=70 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=68 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=17,NXM_OF_UDP_SRC[[]]=NXM_OF_UDP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.42,nw_dst=88.88.88.90,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=52.52.52.52,nw_dst=88.88.88.90,tp_src=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=70 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=70 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
check ovn-nbctl --wait=hv ls-lb-add sw0 lb-ipv6-tcp
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 5]
|
|
|
5f9769 |
+ [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 5]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv2 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 5]
|
|
|
5f9769 |
+ [test $(as hv2 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 5]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=68 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x86dd,NXM_NX_IPV6_SRC[[]],ipv6_dst=8800::88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=17,NXM_OF_UDP_SRC[[]]=NXM_OF_UDP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=69 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.42,nw_dst=88.88.88.90,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=52.52.52.52,nw_dst=88.88.88.90,tp_src=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=70 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=6,ct_tp_dst=8080,tcp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=70 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=6,ct_tp_dst=8080,tcp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=68 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x86dd,NXM_NX_IPV6_SRC[[]],ipv6_dst=8800::88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=17,NXM_OF_UDP_SRC[[]]=NXM_OF_UDP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.42,nw_dst=88.88.88.90,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=52.52.52.52,nw_dst=88.88.88.90,tp_src=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=70 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=6,ct_tp_dst=8080,tcp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=70 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=6,ct_tp_dst=8080,tcp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
check ovn-nbctl --wait=hv ls-lb-add sw0 lb-ipv6-udp
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 6]
|
|
|
5f9769 |
+ [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 6]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv2 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 6]
|
|
|
5f9769 |
+ [test $(as hv2 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 6]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,udp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=68 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x86dd,NXM_NX_IPV6_SRC[[]],ipv6_dst=8800::88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=17,NXM_OF_UDP_SRC[[]]=NXM_OF_UDP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,udp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x86dd,NXM_NX_IPV6_SRC[[]],ipv6_dst=8800::88,nw_proto=17,NXM_OF_UDP_SRC[[]]=NXM_OF_UDP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=69 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.42,nw_dst=88.88.88.90,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=52.52.52.52,nw_dst=88.88.88.90,tp_src=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=70 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=17,ct_tp_dst=4040,udp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=6,ct_tp_dst=8080,tcp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=70 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=17,ct_tp_dst=4040,udp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=6,ct_tp_dst=8080,tcp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,udp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=68 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x86dd,NXM_NX_IPV6_SRC[[]],ipv6_dst=8800::88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=17,NXM_OF_UDP_SRC[[]]=NXM_OF_UDP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,udp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x86dd,NXM_NX_IPV6_SRC[[]],ipv6_dst=8800::88,nw_proto=17,NXM_OF_UDP_SRC[[]]=NXM_OF_UDP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.42,nw_dst=88.88.88.90,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=52.52.52.52,nw_dst=88.88.88.90,tp_src=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=70 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=17,ct_tp_dst=4040,udp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=6,ct_tp_dst=8080,tcp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=70 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=17,ct_tp_dst=4040,udp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=6,ct_tp_dst=8080,tcp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
check ovn-nbctl --wait=hv ls-lb-add sw1 lb-ipv6-udp
|
|
|
5f9769 |
@@ -23475,67 +23516,53 @@ check ovn-nbctl --wait=hv ls-lb-add sw1 lb-ipv6-udp
|
|
|
5f9769 |
# Number of hairpin flows shouldn't change as it doesn't depend on how many
|
|
|
5f9769 |
# datapaths the LB is applied.
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 6]
|
|
|
5f9769 |
+ [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 6]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv2 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 6]
|
|
|
5f9769 |
+ [test $(as hv2 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 6]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,udp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-])
|
|
|
5f9769 |
-
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=69 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.42,nw_dst=88.88.88.90,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=52.52.52.52,nw_dst=88.88.88.90,tp_src=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp6,metadata=0x2,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-])
|
|
|
5f9769 |
-
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=70 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=17,ct_tp_dst=4040,udp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=17,ct_tp_dst=4040,udp6,metadata=0x2 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=6,ct_tp_dst=8080,tcp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
-])
|
|
|
5f9769 |
-
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,udp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-])
|
|
|
5f9769 |
-
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=42.42.42.42,nw_dst=88.88.88.90,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp,metadata=0x1,nw_src=52.52.52.52,nw_dst=88.88.88.90,tp_src=4042 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,tcp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp6,metadata=0x2,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-])
|
|
|
5f9769 |
-
|
|
|
5f9769 |
-AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=70 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=17,ct_tp_dst=4040,udp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=17,ct_tp_dst=4040,udp6,metadata=0x2 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=6,ct_tp_dst=8080,tcp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=68 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x86dd,NXM_NX_IPV6_SRC[[]],ipv6_dst=8800::88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=17,NXM_OF_UDP_SRC[[]]=NXM_OF_UDP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,udp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x86dd,NXM_NX_IPV6_SRC[[]],ipv6_dst=8800::88,nw_proto=17,NXM_OF_UDP_SRC[[]]=NXM_OF_UDP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=70 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=17,ct_tp_dst=4040,udp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=17,ct_tp_dst=4040,udp6,metadata=0x2 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=6,ct_tp_dst=8080,tcp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=68 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=42.42.42.42,nw_dst=42.42.42.42,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp,nw_src=52.52.52.52,nw_dst=52.52.52.52,tp_dst=4042 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.90,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x86dd,NXM_NX_IPV6_SRC[[]],ipv6_dst=8800::88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=17,NXM_OF_UDP_SRC[[]]=NXM_OF_UDP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,udp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x86dd,NXM_NX_IPV6_SRC[[]],ipv6_dst=8800::88,nw_proto=17,NXM_OF_UDP_SRC[[]]=NXM_OF_UDP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST], [1], [dnl
|
|
|
5f9769 |
+])
|
|
|
5f9769 |
+
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=70 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=17,ct_tp_dst=4040,udp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=17,ct_tp_dst=4040,udp6,metadata=0x2 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=6,ct_tp_dst=8080,tcp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.90,ct_nw_proto=6,ct_tp_dst=8080,tcp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.90))
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
as hv2 ovs-vsctl del-port hv2-vif1
|
|
|
5f9769 |
@@ -23545,76 +23572,73 @@ OVS_WAIT_UNTIL([test x$(ovn-nbctl lsp-get-up sw0-p2) = xdown])
|
|
|
5f9769 |
as hv2 ovn-appctl -t ovn-controller recompute
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv2 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 0]
|
|
|
5f9769 |
+ [test $(as hv2 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 0]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST | wc -l) -eq 0]
|
|
|
5f9769 |
+ [test $(as hv2 ovs-ofctl dump-flows br-int table=69 | grep -c -v NXST) -eq 0]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv2 ovs-ofctl dump-flows br-int table=70 | grep -v NXST | wc -l) -eq 0]
|
|
|
5f9769 |
+ [test $(as hv2 ovs-ofctl dump-flows br-int table=70 | grep -c -v NXST) -eq 0]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 6]
|
|
|
5f9769 |
+ [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 6]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
check ovn-nbctl --wait=hv lb-del lb-ipv4-tcp
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 3]
|
|
|
5f9769 |
+ [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 3]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv2 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 0]
|
|
|
5f9769 |
+ [test $(as hv2 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 0]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,tcp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,ct_label=0x2/0x2,udp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=68 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,tcp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=4041 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x86dd,NXM_NX_IPV6_SRC[[]],ipv6_dst=8800::88,nw_proto=6,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,udp,nw_src=42.42.42.1,nw_dst=42.42.42.1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x800,NXM_OF_IP_SRC[[]],ip_dst=88.88.88.88,nw_proto=17,NXM_OF_UDP_SRC[[]]=NXM_OF_UDP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
+ table=68, priority=100,ct_label=0x2/0x2,udp6,ipv6_src=4200::1,ipv6_dst=4200::1,tp_dst=2021 actions=load:0x1->NXM_NX_REG10[[7]],learn(table=69,delete_learned,OXM_OF_METADATA[[]],eth_type=0x86dd,NXM_NX_IPV6_SRC[[]],ipv6_dst=8800::88,nw_proto=17,NXM_OF_UDP_SRC[[]]=NXM_OF_UDP_DST[[]],load:0x1->NXM_NX_REG10[[7]])
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=69 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,tcp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=4041 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp,metadata=0x1,nw_src=42.42.42.1,nw_dst=88.88.88.88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp6,metadata=0x1,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
-priority=100,udp6,metadata=0x2,ipv6_src=4200::1,ipv6_dst=8800::88,tp_src=2021 actions=load:0x1->NXM_NX_REG10[[7]]
|
|
|
5f9769 |
+AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=69], [0], [dnl
|
|
|
5f9769 |
+NXST_FLOW reply (xid=0x8):
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
-AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=70 | grep -v NXST | cut -d ' ' -f8- | sort], [0], [dnl
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=17,ct_tp_dst=4040,udp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=17,ct_tp_dst=4040,udp6,metadata=0x2 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=6,ct_tp_dst=8080,tcp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
-priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
+AT_CHECK([as hv1 ovs-ofctl dump-flows br-int table=70 | ofctl_strip_all | grep -v NXST | sort], [0], [dnl
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=17,ct_tp_dst=4040,udp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=17,ct_tp_dst=4040,udp6,metadata=0x2 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_ipv6_dst=8800::88,ct_nw_proto=6,ct_tp_dst=8080,tcp6,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=8800::88))
|
|
|
5f9769 |
+ table=70, priority=100,ct_state=+trk+dnat,ct_nw_dst=88.88.88.88,ct_nw_proto=17,ct_tp_dst=4040,udp,metadata=0x1 actions=ct(commit,zone=NXM_NX_REG12[[0..15]],nat(src=88.88.88.88))
|
|
|
5f9769 |
])
|
|
|
5f9769 |
|
|
|
5f9769 |
check ovn-nbctl --wait=hv ls-del sw0
|
|
|
5f9769 |
check ovn-nbctl --wait=hv ls-del sw1
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 0]
|
|
|
5f9769 |
+ [test $(as hv1 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 0]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv1 ovs-ofctl dump-flows br-int table=69 | grep -v NXST | wc -l) -eq 0]
|
|
|
5f9769 |
+ [test $(as hv1 ovs-ofctl dump-flows br-int table=69 | grep -c -v NXST) -eq 0]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv1 ovs-ofctl dump-flows br-int table=70 | grep -v NXST | wc -l) -eq 0]
|
|
|
5f9769 |
+ [test $(as hv1 ovs-ofctl dump-flows br-int table=70 | grep -c -v NXST) -eq 0]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv2 ovs-ofctl dump-flows br-int table=68 | grep -v NXST | wc -l) -eq 0]
|
|
|
5f9769 |
+ [test $(as hv2 ovs-ofctl dump-flows br-int table=68 | grep -c -v NXST) -eq 0]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv2 ovs-ofctl dump-flows br-int table=69 | grep -v NXST | wc -l) -eq 0]
|
|
|
5f9769 |
+ [test $(as hv2 ovs-ofctl dump-flows br-int table=69 | grep -c -v NXST) -eq 0]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
OVS_WAIT_UNTIL(
|
|
|
5f9769 |
- [test $(as hv2 ovs-ofctl dump-flows br-int table=70 | grep -v NXST | wc -l) -eq 0]
|
|
|
5f9769 |
+ [test $(as hv2 ovs-ofctl dump-flows br-int table=70 | grep -c -v NXST) -eq 0]
|
|
|
5f9769 |
)
|
|
|
5f9769 |
|
|
|
5f9769 |
OVN_CLEANUP([hv1], [hv2])
|
|
|
5f9769 |
--
|
|
|
5f9769 |
1.8.3.1
|
|
|
5f9769 |
|