From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 92128C2F3A0 for ; Mon, 21 Jan 2019 13:23:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 49AB52085A for ; Mon, 21 Jan 2019 13:23:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="egP4U724" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728943AbfAUNXA (ORCPT ); Mon, 21 Jan 2019 08:23:00 -0500 Received: from mail-eopbgr40042.outbound.protection.outlook.com ([40.107.4.42]:13872 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728314AbfAUNW7 (ORCPT ); Mon, 21 Jan 2019 08:22:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XYw4O7f7qYezAMFysN4IqcdWydGCzSSB5S5fKNYRUOE=; b=egP4U724VwryuufS2fFfjddXcL3xomhh2Fdbz0oJKv8S4D3b5pjNx5WtDTLaHMM49mo5qgtGFV7p64uAEnB+lHY34dQuXY6yW6NZRFyokG8+V5quYPwBa9PIlDsuBQISJGmg2bZ1cSYU3awlVc4ineUt+QxUpVZ+TfKOLrZK4qE= Received: from AM6PR05MB6056.eurprd05.prod.outlook.com (20.179.2.148) by AM6PR05MB6184.eurprd05.prod.outlook.com (20.178.94.225) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1537.24; Mon, 21 Jan 2019 13:22:55 +0000 Received: from AM6PR05MB6056.eurprd05.prod.outlook.com ([fe80::3411:612a:f48b:a5e2]) by AM6PR05MB6056.eurprd05.prod.outlook.com ([fe80::3411:612a:f48b:a5e2%5]) with mapi id 15.20.1537.031; Mon, 21 Jan 2019 13:22:55 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , "roopa@cumulusnetworks.com" , mlxsw , Ido Schimmel Subject: [PATCH net-next 4/4] selftests: forwarding: Add a test for VXLAN symmetric routing Thread-Topic: [PATCH net-next 4/4] selftests: forwarding: Add a test for VXLAN symmetric routing Thread-Index: AQHUsYxq9eIQanEaZEmLOaknHK8Uxw== Date: Mon, 21 Jan 2019 13:22:54 +0000 Message-ID: <20190121132231.25507-5-idosch@mellanox.com> References: <20190121132231.25507-1-idosch@mellanox.com> In-Reply-To: <20190121132231.25507-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM5PR0601CA0036.eurprd06.prod.outlook.com (2603:10a6:203:68::22) To AM6PR05MB6056.eurprd05.prod.outlook.com (2603:10a6:20b:ab::20) x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;AM6PR05MB6184;6:dlhxm/NgZfaFICBocVmQSHnsnqpeco93EXDtum1hCpIg71Znv/3bG6Q/hpj8ZGVojKfzhMcNyM4Bp8ecdi+e0TutYjecQZUjiLIlssS45K3f0e0QyRC6x2hYvCpuEP4dRIvuJUUajshzfsa402Y/3+KvrHnHr5y1YklzGLnQ259ibBQGVobNFxpU9f/dfK9YKg/YvSckZnu/ubdD5KVrCYIKqd0kmpUk48xqd5O3BtlNKBrnk4XWEYNMsZWQZvQKlkg2mxKFDWR16cVWD3EIyMmnX3hSCS77oLv/sO8WD5Gj8ieH0Rvrosioym3hCOnvzyL5kwgOARLHIRW98+Pw8C8HUmehedd0p7UZ4daBjE1O2UpIu8hD9vOr+pNUKI1CJtuEvIXSDa7dxwiJ+uQ/3+D/ZV9iE/z4OAaAzxg2RtX1vX81ZKqOdaBEQIXK8Q7Jj7PDAz27ZeW0+K/chZdSzw==;5:So7EAY2rZc/PnuORzDUtPG67HKDL9S8yz/NK1DQry6FvUZ4AjF7rMpmKswAhaMAjZNjoqb0KBN/h50Bygsp4ZiOFH5Mcl9k8djPVq5iGVBn58WgboBp4azfXQSjo6EKl/8mthuxfngYatsGBQlehgpkDMMArteHP7qEJ3bKlWDNiO+4POmFAzRDgrgG/0oHe9Vpgr07UcCYhLVJAz+4Epw==;7:XAUx8296pKTOZXdxwg0WUXv25OUkOOzXfKJarF17gkhXaXue9vjAlfhJiS9QU6Ny4obGPrZWcOUcZ5I/Uf3Z1mXjsIP7kotmDAxH0yGejVRyDErTHnJgyapHVx0a6M+7hWf1VHPL7rWUlnK+57ugpg== x-ms-office365-filtering-correlation-id: f9335585-a4c8-4fe8-686a-08d67fa38d3f x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600109)(711020)(4618075)(2017052603328)(7153060)(7193020);SRVR:AM6PR05MB6184; x-ms-traffictypediagnostic: AM6PR05MB6184: x-microsoft-antispam-prvs: x-forefront-prvs: 0924C6A0D5 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(376002)(346002)(396003)(39860400002)(366004)(136003)(199004)(189003)(476003)(26005)(50226002)(97736004)(446003)(305945005)(5640700003)(14454004)(3846002)(478600001)(7736002)(486006)(2616005)(68736007)(386003)(102836004)(8936002)(86362001)(11346002)(76176011)(6346003)(6506007)(4326008)(6116002)(25786009)(52116002)(2351001)(8676002)(6916009)(81166006)(106356001)(1730700003)(81156014)(6486002)(186003)(105586002)(6436002)(36756003)(66066001)(107886003)(99286004)(1076003)(53946003)(2906002)(6512007)(54906003)(53936002)(316002)(2501003)(71200400001)(71190400001)(256004)(30864003)(14444005);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR05MB6184;H:AM6PR05MB6056.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 3zMoUy7yjpP/3QHVvsDhbLfJUIB1gbwGXaXnFhoEiCtip83SsbZwfAetyXctyO0NINd3wJKVm2XsMMeM4GTCDxY+wqh2QDmQlEoLKWpif6260Dtf4ir6IP9MMRY/KzutzSj/ywRI4gLveVO6WguIG51N7aC3jcTs4dSZRVR79PqMBGBLD18blGDa5S7BLdiihl/TdLEfsWJ8T5ZAOXvQ+BSpa7XlfyM4eZ2uuPmc8sQXl6do4c1FhiwycADUa5/fk7OZzaRI22FhTgLdiL6CUdk3RLsiVd6cTjKBnOXxf4ZhfSM8nxqaFNFmRa6ibhUkDNpbfVIAulF82N9u4jqpLM6fhmdsKFbWzkq+TXwmLgFd7eludKrOAqEmdPXEcpuYjnZfB2hbuYaRSfK3LZlcoq1aLLtOIrw/4lVb9qydgSs= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: f9335585-a4c8-4fe8-686a-08d67fa38d3f X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Jan 2019 13:22:54.1112 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB6184 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In a similar fashion to the asymmetric test, add a test for symmetric routing. In symmetric routing both the ingress and egress VTEPs perform routing in the overlay network into / from the VXLAN tunnel. Packets in different directions use the same VNI - the L3 VNI. Different tenants (VRFs) use different L3 VNIs. Signed-off-by: Ido Schimmel Reviewed-by: Petr Machata --- .../net/forwarding/vxlan_symmetric.sh | 551 ++++++++++++++++++ 1 file changed, 551 insertions(+) create mode 100755 tools/testing/selftests/net/forwarding/vxlan_symmetric.= sh diff --git a/tools/testing/selftests/net/forwarding/vxlan_symmetric.sh b/to= ols/testing/selftests/net/forwarding/vxlan_symmetric.sh new file mode 100755 index 000000000000..1209031bc794 --- /dev/null +++ b/tools/testing/selftests/net/forwarding/vxlan_symmetric.sh @@ -0,0 +1,551 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +# +---------------------------+ +--------------------------= ----+ +# | vrf-h1 | | vrf= -h2 | +# | + $h1 | | + $h2 = | +# | | 10.1.1.101/24 | | | 10.1.2.101/24 = | +# | | default via 10.1.1.1 | | | default via 10.1.2.1= | +# +----|----------------------+ +----|---------------------= ----+ +# | | +# +----|--------------------------------------------|---------------------= ----+ +# | SW | | = | +# | +--|--------------------------------------------|---------------------= --+ | +# | | + $swp1 br1 + $swp2 = | | +# | | vid 10 pvid untagged vid 20 pvid untagge= d | | +# | | = | | +# | | + vx10 + vx20 = | | +# | | local 10.0.0.1 local 10.0.0.1 = | | +# | | remote 10.0.0.2 remote 10.0.0.2 = | | +# | | id 1010 id 1020 = | | +# | | dstport 4789 dstport 4789 = | | +# | | vid 10 pvid untagged vid 20 pvid untagged= | | +# | | = | | +# | | + vx4001 = | | +# | | local 10.0.0.1 = | | +# | | remote 10.0.0.2 = | | +# | | id 104001 = | | +# | | dstport 4789 = | | +# | | vid 4001 pvid untagged = | | +# | | = | | +# | +-----------------------------------+---------------------------------= --+ | +# | | = | +# | +-----------------------------------|---------------------------------= --+ | +# | | | = | | +# | | +--------------------------------+--------------------------------+= | | +# | | | | |= | | +# | | + vlan10 | vlan20 += | | +# | | | 10.1.1.11/24 | 10.1.2.11/24 |= | | +# | | | | |= | | +# | | + vlan10-v (macvlan) + vlan20-v (macvlan) += | | +# | | 10.1.1.1/24 vlan4001 10.1.2.1/24 = | | +# | | 00:00:5e:00:01:01 00:00:5e:00:01:01 = | | +# | | vrf-green = | | +# | +---------------------------------------------------------------------= --+ | +# | = | +# | + $rp1 +lo = | +# | | 192.0.2.1/24 10.0.0.1/32 = | +# +----|------------------------------------------------------------------= ----+ +# | +# +----|--------------------------------------------------------+ +# | | vrf-spine | +# | + $rp2 | +# | 192.0.2.2/24 | +# | | (maybe= ) HW +# =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D +# | | (likely= ) SW +# | | +# | + v1 (veth) | +# | | 192.0.3.2/24 | +# +----|--------------------------------------------------------+ +# | +# +----|------------------------------------------------------------------= ----+ +# | + v2 (veth) +lo NS1 (net= ns) | +# | 192.0.3.1/24 10.0.0.2/32 = | +# | = | +# | +---------------------------------------------------------------------= --+ | +# | | vrf-green = | | +# | | + vlan10-v (macvlan) vlan20-v (macvlan) += | | +# | | | 10.1.1.1/24 10.1.2.1/24 |= | | +# | | | 00:00:5e:00:01:01 00:00:5e:00:01:01 |= | | +# | | | vlan4001 |= | | +# | | + vlan10 + vlan20 += | | +# | | | 10.1.1.12/24 | 10.1.2.12/24 |= | | +# | | | | |= | | +# | | +--------------------------------+--------------------------------+= | | +# | | | = | | +# | +-----------------------------------|---------------------------------= --+ | +# | | = | +# | +-----------------------------------+---------------------------------= --+ | +# | | = | | +# | | + vx10 + vx20 = | | +# | | local 10.0.0.2 local 10.0.0.2 = | | +# | | remote 10.0.0.1 remote 10.0.0.1 = | | +# | | id 1010 id 1020 = | | +# | | dstport 4789 dstport 4789 = | | +# | | vid 10 pvid untagged vid 20 pvid untagged = | | +# | | = | | +# | | + vx4001 = | | +# | | local 10.0.0.2 = | | +# | | remote 10.0.0.1 = | | +# | | id 104001 = | | +# | | dstport 4789 = | | +# | | vid 4001 pvid untagged = | | +# | | = | | +# | | + w1 (veth) + w3 (veth) = | | +# | | | vid 10 pvid untagged br1 | vid 20 pvid untagged = | | +# | +--|------------------------------------------|-----------------------= --+ | +# | | | = | +# | | | = | +# | +--|----------------------+ +--|-----------------------= --+ | +# | | | vrf-h1 | | | vrf-h= 2 | | +# | | + w2 (veth) | | + w4 (veth) = | | +# | | 10.1.1.102/24 | | 10.1.2.102/24 = | | +# | | default via 10.1.1.1 | | default via 10.1.2.1 = | | +# | +-------------------------+ +--------------------------= --+ | +# +-----------------------------------------------------------------------= ----+ + +ALL_TESTS=3D" + ping_ipv4 +" +NUM_NETIFS=3D6 +source lib.sh + +hx_create() +{ + local vrf_name=3D$1; shift + local if_name=3D$1; shift + local ip_addr=3D$1; shift + local gw_ip=3D$1; shift + + vrf_create $vrf_name + ip link set dev $if_name master $vrf_name + ip link set dev $vrf_name up + ip link set dev $if_name up + + ip address add $ip_addr/24 dev $if_name + ip neigh replace $gw_ip lladdr 00:00:5e:00:01:01 nud permanent \ + dev $if_name + ip route add default vrf $vrf_name nexthop via $gw_ip +} +export -f hx_create + +hx_destroy() +{ + local vrf_name=3D$1; shift + local if_name=3D$1; shift + local ip_addr=3D$1; shift + local gw_ip=3D$1; shift + + ip route del default vrf $vrf_name nexthop via $gw_ip + ip neigh del $gw_ip dev $if_name + ip address del $ip_addr/24 dev $if_name + + ip link set dev $if_name down + vrf_destroy $vrf_name +} + +h1_create() +{ + hx_create "vrf-h1" $h1 10.1.1.101 10.1.1.1 +} + +h1_destroy() +{ + hx_destroy "vrf-h1" $h1 10.1.1.101 10.1.1.1 +} + +h2_create() +{ + hx_create "vrf-h2" $h2 10.1.2.101 10.1.2.1 +} + +h2_destroy() +{ + hx_destroy "vrf-h2" $h2 10.1.2.101 10.1.2.1 +} + +switch_create() +{ + ip link add name br1 type bridge vlan_filtering 1 vlan_default_pvid 0 \ + mcast_snooping 0 + # Make sure the bridge uses the MAC address of the local port and not + # that of the VxLAN's device. + ip link set dev br1 address $(mac_get $swp1) + ip link set dev br1 up + + ip link set dev $rp1 up + ip address add dev $rp1 192.0.2.1/24 + ip route add 10.0.0.2/32 nexthop via 192.0.2.2 + + ip link add name vx10 type vxlan id 1010 \ + local 10.0.0.1 remote 10.0.0.2 dstport 4789 \ + nolearning noudpcsum tos inherit ttl 100 + ip link set dev vx10 up + + ip link set dev vx10 master br1 + bridge vlan add vid 10 dev vx10 pvid untagged + + ip link add name vx20 type vxlan id 1020 \ + local 10.0.0.1 remote 10.0.0.2 dstport 4789 \ + nolearning noudpcsum tos inherit ttl 100 + ip link set dev vx20 up + + ip link set dev vx20 master br1 + bridge vlan add vid 20 dev vx20 pvid untagged + + ip link set dev $swp1 master br1 + ip link set dev $swp1 up + bridge vlan add vid 10 dev $swp1 pvid untagged + + ip link set dev $swp2 master br1 + ip link set dev $swp2 up + bridge vlan add vid 20 dev $swp2 pvid untagged + + ip link add name vx4001 type vxlan id 104001 \ + local 10.0.0.1 dstport 4789 \ + nolearning noudpcsum tos inherit ttl 100 + ip link set dev vx4001 up + + ip link set dev vx4001 master br1 + bridge vlan add vid 4001 dev vx4001 pvid untagged + + ip address add 10.0.0.1/32 dev lo + + # Create SVIs + vrf_create "vrf-green" + ip link set dev vrf-green up + + ip link add link br1 name vlan10 up master vrf-green type vlan id 10 + ip address add 10.1.1.11/24 dev vlan10 + ip link add link vlan10 name vlan10-v up master vrf-green \ + address 00:00:5e:00:01:01 type macvlan mode private + ip address add 10.1.1.1/24 dev vlan10-v + + ip link add link br1 name vlan20 up master vrf-green type vlan id 20 + ip address add 10.1.2.11/24 dev vlan20 + ip link add link vlan20 name vlan20-v up master vrf-green \ + address 00:00:5e:00:01:01 type macvlan mode private + ip address add 10.1.2.1/24 dev vlan20-v + + ip link add link br1 name vlan4001 up master vrf-green \ + type vlan id 4001 + + bridge vlan add vid 10 dev br1 self + bridge vlan add vid 20 dev br1 self + bridge vlan add vid 4001 dev br1 self + + bridge fdb add 00:00:5e:00:01:01 dev br1 self local vlan 10 + bridge fdb add 00:00:5e:00:01:01 dev br1 self local vlan 20 +} + +switch_destroy() +{ + bridge fdb del 00:00:5e:00:01:01 dev br1 self local vlan 20 + bridge fdb del 00:00:5e:00:01:01 dev br1 self local vlan 10 + + bridge vlan del vid 4001 dev br1 self + bridge vlan del vid 20 dev br1 self + bridge vlan del vid 10 dev br1 self + + ip link del dev vlan4001 + + ip link del dev vlan20 + + ip link del dev vlan10 + + vrf_destroy "vrf-green" + + ip address del 10.0.0.1/32 dev lo + + bridge vlan del vid 20 dev $swp2 + ip link set dev $swp2 down + ip link set dev $swp2 nomaster + + bridge vlan del vid 10 dev $swp1 + ip link set dev $swp1 down + ip link set dev $swp1 nomaster + + bridge vlan del vid 4001 dev vx4001 + ip link set dev vx4001 nomaster + + ip link set dev vx4001 down + ip link del dev vx4001 + + bridge vlan del vid 20 dev vx20 + ip link set dev vx20 nomaster + + ip link set dev vx20 down + ip link del dev vx20 + + bridge vlan del vid 10 dev vx10 + ip link set dev vx10 nomaster + + ip link set dev vx10 down + ip link del dev vx10 + + ip route del 10.0.0.2/32 nexthop via 192.0.2.2 + ip address del dev $rp1 192.0.2.1/24 + ip link set dev $rp1 down + + ip link set dev br1 down + ip link del dev br1 +} + +spine_create() +{ + vrf_create "vrf-spine" + ip link set dev $rp2 master vrf-spine + ip link set dev v1 master vrf-spine + ip link set dev vrf-spine up + ip link set dev $rp2 up + ip link set dev v1 up + + ip address add 192.0.2.2/24 dev $rp2 + ip address add 192.0.3.2/24 dev v1 + + ip route add 10.0.0.1/32 vrf vrf-spine nexthop via 192.0.2.1 + ip route add 10.0.0.2/32 vrf vrf-spine nexthop via 192.0.3.1 +} + +spine_destroy() +{ + ip route del 10.0.0.2/32 vrf vrf-spine nexthop via 192.0.3.1 + ip route del 10.0.0.1/32 vrf vrf-spine nexthop via 192.0.2.1 + + ip address del 192.0.3.2/24 dev v1 + ip address del 192.0.2.2/24 dev $rp2 + + ip link set dev v1 down + ip link set dev $rp2 down + vrf_destroy "vrf-spine" +} + +ns_h1_create() +{ + hx_create "vrf-h1" w2 10.1.1.102 10.1.1.1 +} +export -f ns_h1_create + +ns_h2_create() +{ + hx_create "vrf-h2" w4 10.1.2.102 10.1.2.1 +} +export -f ns_h2_create + +ns_switch_create() +{ + ip link add name br1 type bridge vlan_filtering 1 vlan_default_pvid 0 \ + mcast_snooping 0 + ip link set dev br1 up + + ip link set dev v2 up + ip address add dev v2 192.0.3.1/24 + ip route add 10.0.0.1/32 nexthop via 192.0.3.2 + + ip link add name vx10 type vxlan id 1010 \ + local 10.0.0.2 remote 10.0.0.1 dstport 4789 \ + nolearning noudpcsum tos inherit ttl 100 + ip link set dev vx10 up + + ip link set dev vx10 master br1 + bridge vlan add vid 10 dev vx10 pvid untagged + + ip link add name vx20 type vxlan id 1020 \ + local 10.0.0.2 remote 10.0.0.1 dstport 4789 \ + nolearning noudpcsum tos inherit ttl 100 + ip link set dev vx20 up + + ip link set dev vx20 master br1 + bridge vlan add vid 20 dev vx20 pvid untagged + + ip link add name vx4001 type vxlan id 104001 \ + local 10.0.0.2 dstport 4789 \ + nolearning noudpcsum tos inherit ttl 100 + ip link set dev vx4001 up + + ip link set dev vx4001 master br1 + bridge vlan add vid 4001 dev vx4001 pvid untagged + + ip link set dev w1 master br1 + ip link set dev w1 up + bridge vlan add vid 10 dev w1 pvid untagged + + ip link set dev w3 master br1 + ip link set dev w3 up + bridge vlan add vid 20 dev w3 pvid untagged + + ip address add 10.0.0.2/32 dev lo + + # Create SVIs + vrf_create "vrf-green" + ip link set dev vrf-green up + + ip link add link br1 name vlan10 up master vrf-green type vlan id 10 + ip address add 10.1.1.12/24 dev vlan10 + ip link add link vlan10 name vlan10-v up master vrf-green \ + address 00:00:5e:00:01:01 type macvlan mode private + ip address add 10.1.1.1/24 dev vlan10-v + + ip link add link br1 name vlan20 up master vrf-green type vlan id 20 + ip address add 10.1.2.12/24 dev vlan20 + ip link add link vlan20 name vlan20-v up master vrf-green \ + address 00:00:5e:00:01:01 type macvlan mode private + ip address add 10.1.2.1/24 dev vlan20-v + + ip link add link br1 name vlan4001 up master vrf-green \ + type vlan id 4001 + + bridge vlan add vid 10 dev br1 self + bridge vlan add vid 20 dev br1 self + bridge vlan add vid 4001 dev br1 self + + bridge fdb add 00:00:5e:00:01:01 dev br1 self local vlan 10 + bridge fdb add 00:00:5e:00:01:01 dev br1 self local vlan 20 +} +export -f ns_switch_create + +ns_init() +{ + ip link add name w1 type veth peer name w2 + ip link add name w3 type veth peer name w4 + + ip link set dev lo up + + ns_h1_create + ns_h2_create + ns_switch_create +} +export -f ns_init + +ns1_create() +{ + ip netns add ns1 + ip link set dev v2 netns ns1 + in_ns ns1 ns_init +} + +ns1_destroy() +{ + ip netns exec ns1 ip link set dev v2 netns 1 + ip netns del ns1 +} + +__l2_vni_init() +{ + local mac1=3D$1; shift + local mac2=3D$1; shift + local ip1=3D$1; shift + local ip2=3D$1; shift + local dst=3D$1; shift + + bridge fdb add $mac1 dev vx10 self master extern_learn static \ + dst $dst vlan 10 + bridge fdb add $mac2 dev vx20 self master extern_learn static \ + dst $dst vlan 20 + + ip neigh add $ip1 lladdr $mac1 nud noarp dev vlan10 \ + extern_learn + ip neigh add $ip2 lladdr $mac2 nud noarp dev vlan20 \ + extern_learn +} +export -f __l2_vni_init + +l2_vni_init() +{ + local h1_ns_mac=3D$(in_ns ns1 mac_get w2) + local h2_ns_mac=3D$(in_ns ns1 mac_get w4) + local h1_mac=3D$(mac_get $h1) + local h2_mac=3D$(mac_get $h2) + + __l2_vni_init $h1_ns_mac $h2_ns_mac 10.1.1.102 10.1.2.102 10.0.0.2 + in_ns ns1 __l2_vni_init $h1_mac $h2_mac 10.1.1.101 10.1.2.101 10.0.0.1 +} + +__l3_vni_init() +{ + local mac=3D$1; shift + local vtep_ip=3D$1; shift + local host1_ip=3D$1; shift + local host2_ip=3D$1; shift + + bridge fdb add $mac dev vx4001 self master extern_learn static \ + dst $vtep_ip vlan 4001 + + ip neigh add $vtep_ip lladdr $mac nud noarp dev vlan4001 extern_learn + + ip route add $host1_ip/32 vrf vrf-green nexthop via $vtep_ip \ + dev vlan4001 onlink + ip route add $host2_ip/32 vrf vrf-green nexthop via $vtep_ip \ + dev vlan4001 onlink +} +export -f __l3_vni_init + +l3_vni_init() +{ + local vlan4001_ns_mac=3D$(in_ns ns1 mac_get vlan4001) + local vlan4001_mac=3D$(mac_get vlan4001) + + __l3_vni_init $vlan4001_ns_mac 10.0.0.2 10.1.1.102 10.1.2.102 + in_ns ns1 __l3_vni_init $vlan4001_mac 10.0.0.1 10.1.1.101 10.1.2.101 +} + +setup_prepare() +{ + h1=3D${NETIFS[p1]} + swp1=3D${NETIFS[p2]} + + swp2=3D${NETIFS[p3]} + h2=3D${NETIFS[p4]} + + rp1=3D${NETIFS[p5]} + rp2=3D${NETIFS[p6]} + + vrf_prepare + forwarding_enable + + h1_create + h2_create + switch_create + + ip link add name v1 type veth peer name v2 + spine_create + ns1_create + + l2_vni_init + l3_vni_init +} + +cleanup() +{ + pre_cleanup + + ns1_destroy + spine_destroy + ip link del dev v1 + + switch_destroy + h2_destroy + h1_destroy + + forwarding_restore + vrf_cleanup +} + +ping_ipv4() +{ + ping_test $h1 10.1.2.101 ": local->local vid 10->vid 20" + ping_test $h1 10.1.1.102 ": local->remote vid 10->vid 10" + ping_test $h2 10.1.2.102 ": local->remote vid 20->vid 20" + ping_test $h1 10.1.2.102 ": local->remote vid 10->vid 20" + ping_test $h2 10.1.1.102 ": local->remote vid 20->vid 10" +} + +trap cleanup EXIT + +setup_prepare +setup_wait + +tests_run + +exit $EXIT_STATUS --=20 2.20.1