From: Ondrej Lichtner olichtne@redhat.com
The warmup pings are not actually required for the setup to work, and with the recent change to the source bind, the second ping on each host (so nic2 -> nic2) stopped working due the addresses being in the same network and how ARP resolution is optimized by the kernel - the ping requests leave from nic2 but arrive on nic1 on the other host and the reply then also leaves from that nic and returns on the nic1 of the source host. This means that the ping utility doesn't receive the reply message and reports a failure.
I'm keeping the configuration of the ip addresses because that's part of the PerfRepo result parameters and removing it changes the hashes.
Signed-off-by: Ondrej Lichtner olichtne@redhat.com --- .../regression_tests/phase3/ovs-dpdk-pvp.py | 33 ++----------------- 1 file changed, 3 insertions(+), 30 deletions(-)
diff --git a/recipes/regression_tests/phase3/ovs-dpdk-pvp.py b/recipes/regression_tests/phase3/ovs-dpdk-pvp.py index c46999f..5533f57 100644 --- a/recipes/regression_tests/phase3/ovs-dpdk-pvp.py +++ b/recipes/regression_tests/phase3/ovs-dpdk-pvp.py @@ -137,10 +137,9 @@ h1_nic2 = h1.get_interface("if2") h2_nic1 = h2.get_interface("if1") h2_nic2 = h2.get_interface("if2")
- -#============================================ -# WARMP UP - teach switch about mac addresses -#============================================ +#================================================= +# Keep ip address configuration for hash stability +#=================================================
h1_nic1.set_addresses(["192.168.1.1/24"]) h1_nic2.set_addresses(["192.168.1.3/24"]) @@ -148,32 +147,6 @@ h1_nic2.set_addresses(["192.168.1.3/24"]) h2_nic1.set_addresses(["192.168.1.2/24"]) h2_nic2.set_addresses(["192.168.1.4/24"])
-ctl.wait(5) - -ping_opts = {"count": 100, "interval": 0.1, "limit_rate": 20} - -pings = [] -pings.append(ping((h1, h1_nic1), - (h2, h2_nic1, 0, {"scope": 0}), - options=ping_opts, bg=True)) -pings.append(ping((h1, h1_nic2), - (h2, h2_nic2, 0, {"scope": 0}), - options=ping_opts, bg=True)) - -pings.append(ping((h2, h2_nic1), - (h1, h1_nic1, 0, {"scope": 0}), - options=ping_opts, bg=True)) -pings.append(ping((h2, h2_nic2), - (h1, h1_nic2, 0, {"scope": 0}), - options=ping_opts, bg=True)) - -for i in pings: - i.wait() - -#============================================ -# WARMP UP END -#============================================ -
h1.run("service irqbalance stop") h2.run("service irqbalance stop")
On Fri, Sep 14, 2018 at 04:09:51PM +0200, olichtne@redhat.com wrote:
From: Ondrej Lichtner olichtne@redhat.com
The warmup pings are not actually required for the setup to work, and with the recent change to the source bind, the second ping on each host (so nic2 -> nic2) stopped working due the addresses being in the same network and how ARP resolution is optimized by the kernel - the ping requests leave from nic2 but arrive on nic1 on the other host and the reply then also leaves from that nic and returns on the nic1 of the source host. This means that the ping utility doesn't receive the reply message and reports a failure.
I'm keeping the configuration of the ip addresses because that's part of the PerfRepo result parameters and removing it changes the hashes.
Signed-off-by: Ondrej Lichtner olichtne@redhat.com
.../regression_tests/phase3/ovs-dpdk-pvp.py | 33 ++----------------- 1 file changed, 3 insertions(+), 30 deletions(-)
diff --git a/recipes/regression_tests/phase3/ovs-dpdk-pvp.py b/recipes/regression_tests/phase3/ovs-dpdk-pvp.py index c46999f..5533f57 100644 --- a/recipes/regression_tests/phase3/ovs-dpdk-pvp.py +++ b/recipes/regression_tests/phase3/ovs-dpdk-pvp.py @@ -137,10 +137,9 @@ h1_nic2 = h1.get_interface("if2") h2_nic1 = h2.get_interface("if1") h2_nic2 = h2.get_interface("if2")
-#============================================ -# WARMP UP - teach switch about mac addresses -#============================================ +#================================================= +# Keep ip address configuration for hash stability +#=================================================
h1_nic1.set_addresses(["192.168.1.1/24"]) h1_nic2.set_addresses(["192.168.1.3/24"]) @@ -148,32 +147,6 @@ h1_nic2.set_addresses(["192.168.1.3/24"]) h2_nic1.set_addresses(["192.168.1.2/24"]) h2_nic2.set_addresses(["192.168.1.4/24"])
-ctl.wait(5)
-ping_opts = {"count": 100, "interval": 0.1, "limit_rate": 20}
-pings = [] -pings.append(ping((h1, h1_nic1),
(h2, h2_nic1, 0, {"scope": 0}),options=ping_opts, bg=True))-pings.append(ping((h1, h1_nic2),
(h2, h2_nic2, 0, {"scope": 0}),options=ping_opts, bg=True))-pings.append(ping((h2, h2_nic1),
(h1, h1_nic1, 0, {"scope": 0}),options=ping_opts, bg=True))-pings.append(ping((h2, h2_nic2),
(h1, h1_nic2, 0, {"scope": 0}),options=ping_opts, bg=True))-for i in pings:
- i.wait()
-#============================================ -# WARMP UP END -#============================================
h1.run("service irqbalance stop") h2.run("service irqbalance stop") -- 2.19.0
No need to review this one, I tested it on real hw and everything should be ok.
I'm immediately pushing it so that we can start testing with this.
-Ondrej
lnst-developers@lists.fedorahosted.org