#!/bin/sh
# Copyright (c) 2014-2017 Oracle and/or its affiliates.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it would be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Author: Alexey Kodanev <alexey.kodanev@oracle.com>
#
# Test-case 1: It requires remote host. Test will setup IPv4 and IPv6 virtual
# sub-nets between two hosts, then will compare TCP performance
# with and without VxLAN using ping or netstress test.
#
# Test-case 2: The same as above but must fail, because VXLAN allows
# to communicate only within the same VXLAN segment.
TCID=vxlan03
TST_TOTAL=4
TST_NEEDS_TMPDIR=1
virt_type="vxlan"
start_id=16700000
# Destination address, can be unicast or multicast address
vxlan_dst_addr="uni"
. test_net.sh
. virt_lib.sh
# In average cases (with small packets less then 150 bytes) VxLAN slower
# by 10-30%. If hosts are too close to each other, e.g. connected to the same
# switch, VxLAN can be much slower when comparing to the performance without
# any encapsulation.
VIRT_PERF_THRESHOLD=${VIRT_PERF_THRESHOLD:-160}
[ "$VIRT_PERF_THRESHOLD" -lt 160 ] && VIRT_PERF_THRESHOLD=160
TST_CLEANUP="virt_cleanup"
if [ -z $ip_local -o -z $ip_remote ]; then
tst_brkm TBROK "you must specify IP address"
fi
opts=" ,gbp"
for n in $(seq 1 2); do
p="$(echo $opts | cut -d',' -f$n)"
virt_check_cmd virt_add ltp_v0 id 0 $p || continue
tst_resm TINFO "the same VNI must work"
# VNI is 24 bits long, so max value, which is not reserved, is 0xFFFFFE
vxlan_setup_subnet_$vxlan_dst_addr "id 0xFFFFFE $p" "id 0xFFFFFE $p"
virt_netperf_msg_sizes
virt_cleanup_rmt
tst_resm TINFO "different VNI shall not work together"
vxlan_setup_subnet_$vxlan_dst_addr "id 0xFFFFFE $p" "id 0xFFFFFD $p"
virt_minimize_timeout
virt_compare_netperf "fail"
virt_cleanup_rmt
done
tst_exit