From patchwork Thu Dec 15 19:37:31 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alin Serdean X-Patchwork-Id: 706217 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3tfkJP1gmvz9t0v for ; Fri, 16 Dec 2016 06:38:29 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 1BE19BCD; Thu, 15 Dec 2016 19:37:59 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 74C5EBAF for ; Thu, 15 Dec 2016 19:37:57 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from mail.cloudbasesolutions.com (mail.cloudbasesolutions.com [91.232.152.5]) by smtp1.linuxfoundation.org (Postfix) with ESMTP id A2254270 for ; Thu, 15 Dec 2016 19:37:53 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by mail.cloudbasesolutions.com (Postfix) with ESMTP id ADCF941F66 for ; Thu, 15 Dec 2016 21:37:52 +0200 (EET) X-Virus-Scanned: amavisd-new at cloudbasesolutions.com Received: from mail.cloudbasesolutions.com ([127.0.0.1]) by localhost (mail.cloudbasesolutions.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CxUDeK-9IKs4 for ; Thu, 15 Dec 2016 21:37:32 +0200 (EET) Received: from mail.cloudbasesolutions.com (unknown [10.77.78.3]) by mail.cloudbasesolutions.com (Postfix) with ESMTP id 0960E41F5A for ; Thu, 15 Dec 2016 21:37:32 +0200 (EET) Received: from CBSEX1.cloudbase.local ([10.77.78.3]) by CBSEX1.cloudbase.local ([10.77.78.3]) with mapi id 14.03.0319.002; Thu, 15 Dec 2016 20:37:31 +0100 From: Alin Serdean To: "dev@openvswitch.org" Thread-Topic: [PATCH 3/3 v7] Windows: document multiple NIC support setup Thread-Index: AQHSVwqtKgAWkm6W/kCebimarpiw0A== Date: Thu, 15 Dec 2016 19:37:31 +0000 Message-ID: <20161215193723.5692-1-aserdean@cloudbasesolutions.com> Accept-Language: en-US, it-IT Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.77.78.1] MIME-Version: 1.0 X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Subject: [ovs-dev] [PATCH 3/3 v7] Windows: document multiple NIC support setup X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org This patch updates the documentation on how to set up OVS with multiple NICs. Also update the documentation to show users how new internal ports are created Signed-off-by: Alin Gabriel Serdean Acked-by: Paul Boca Acked-by: Sairam Venugopal --- v7: Address Stephen's comments v6: rebase v5: rebase v4: rebase v3: rebase v2: rebase v1: rebase --- Documentation/intro/install/windows.rst | 142 +++++++++++++++++++++++--------- 1 file changed, 104 insertions(+), 38 deletions(-) diff --git a/Documentation/intro/install/windows.rst b/Documentation/intro/install/windows.rst index eb55720..463f30f 100644 --- a/Documentation/intro/install/windows.rst +++ b/Documentation/intro/install/windows.rst @@ -137,7 +137,8 @@ configure options to choose the right compiler, linker, libraries, Open vSwitch component installation directories, etc. For example:: > ./configure CC=./build-aux/cccl LD="$(which link)" \ - LIBS="-lws2_32 -liphlpapi" --prefix="C:/openvswitch/usr" \ + LIBS="-lws2_32 -liphlpapi -lwbemuuid -lole32 -loleaut32" \ + --prefix="C:/openvswitch/usr" \ --localstatedir="C:/openvswitch/var" \ --sysconfdir="C:/openvswitch/etc" \ --with-pthread="C:/pthread" @@ -149,16 +150,18 @@ component installation directories, etc. For example:: To configure with SSL support, add the requisite additional options:: > ./configure CC=./build-aux/cccl LD="`which link`" \ - LIBS="-lws2_32 -liphlpapi" --prefix="C:/openvswitch/usr" \ - --localstatedir="C:/openvswitch/var" - --sysconfdir="C:/openvswitch/etc" \ - --with-pthread="C:/pthread" \ - --enable-ssl --with-openssl="C:/OpenSSL-Win32" + LIBS="-lws2_32 -liphlpapi -lwbemuuid -lole32 -loleaut32" \ + --prefix="C:/openvswitch/usr" \ + --localstatedir="C:/openvswitch/var" + --sysconfdir="C:/openvswitch/etc" \ + --with-pthread="C:/pthread" \ + --enable-ssl --with-openssl="C:/OpenSSL-Win32" Finally, to the kernel module also:: > ./configure CC=./build-aux/cccl LD="`which link`" \ - LIBS="-lws2_32 -liphlpapi" --prefix="C:/openvswitch/usr" \ + LIBS="-lws2_32 -liphlpapi -lwbemuuid -lole32 -loleaut32" \ + --prefix="C:/openvswitch/usr" \ --localstatedir="C:/openvswitch/var" \ --sysconfdir="C:/openvswitch/etc" \ --with-pthread="C:/pthread" \ @@ -252,8 +255,7 @@ to work (covered later). The command to create a new switch named 'OVS-Extended-Switch' using a physical NIC named 'Ethernet 1' is:: - PS > New-VMSwitch "OVS-Extended-Switch" -AllowManagementOS $true \ - -NetAdapterName "Ethernet 1" + PS > New-VMSwitch "OVS-Extended-Switch" -NetAdapterName "Ethernet 1" .. note:: You can obtain the list of physical NICs on the host using 'Get-NetAdapter' @@ -377,23 +379,22 @@ the adapter named ``Ethernet0``, then in OVS we use that name (``Ethernet0``) as a special name to refer to that adapter. .. note:: - we assume that the Hyper-V switch on which OVS extension is enabled has a - single physical NIC connected to it. + we assume that the OVS extension is enabled Hyper-V switch. -An internal port is the virtual adapter created on the Hyper-V switch using the -``AllowManagementOS`` setting. This has already been setup while creating the -switch using the instructions above. In OVS for Hyper-V, we use a the name of -that specific adapter as a special name to refer to that adapter. By default it -is created under the following rule ``vEthernet ()``. +Internal ports are the virtual adapters created on the Hyper-V switch using the +``ovs-vsctl add-br `` command. By default they are created under the +following rule "" and the adapters are disabled. One needs to +enable them and set the corresponding values to it to make them IP-able. As a whole example, if we issue the following in a powershell console:: - PS C:\package\binaries> Get-NetAdapter | select Name,MacAddress,InterfaceDescription - Name MacAddress InterfaceDescription - ---- ---------- -------------------- - Ethernet1 00-0C-29-94-05-65 Intel(R) PRO/1000 MT Network Connection - vEthernet (external) 00-0C-29-94-05-5B Hyper-V Virtual Ethernet Adapter #2 - Ethernet0 00-0C-29-94-05-5B Intel(R) PRO/1000 MT Network Connection #2 + PS C:\package\binaries> Get-NetAdapter | select Name,InterfaceDescription + Name InterfaceDescription + ---- -------------------- + Ethernet1 Intel(R) PRO/1000 MT Network Connection + br-pif Hyper-V Virtual Ethernet Adapter #2 + Ethernet0 Intel(R) PRO/1000 MT Network Connection #2 + br-int Hyper-V Virtual Ethernet Adapter #3 PS C:\package\binaries> Get-VMSwitch Name SwitchType NetAdapterInterfaceDescription @@ -401,11 +402,10 @@ As a whole example, if we issue the following in a powershell console:: external External Intel(R) PRO/1000 MT Network Connection #2 We can see that we have a switch(external) created upon adapter name -'Ethernet0' with an internal port under name ``vEthernet (external)``. Thus +'Ethernet0' with the internal ports under name 'br-pif' and 'br-int'. Thus resulting into the following ovs-vsctl commands:: > ovs-vsctl add-port br-pif Ethernet0 - > ovs-vsctl add-port br-pif "vEthernet (external)" Dumping the ports should show the additional ports that were just added:: @@ -413,18 +413,17 @@ Dumping the ports should show the additional ports that were just added:: system@ovs-system: lookups: hit:0 missed:0 lost:0 flows: 0 - port 4: vEthernet (external) (internal) <<< 'AllowManagementOS' - adapter on - Hyper-V switch - port 2: br-pif (internal) - port 1: br-int (internal) + port 2: br-pif (internal) <<< internal port + adapter on + Hyper-V switch + port 1: br-int (internal) <<< internal port + adapter on + Hyper-V switch port 3: Ethernet0 <<< Physical NIC > ovs-vsctl show a56ec7b5-5b1f-49ec-a795-79f6eb63228b Bridge br-pif - Port "vEthernet (external)" - Interface "vEthernet (external)" Port br-pif Interface br-pif type: internal @@ -451,11 +450,11 @@ is being addressed. After assigning the name ``ovs-port-a``, the VIF is connected back to the Hyper-V switch with name ``OVS-HV-Switch``, which is assumed to be the Hyper-V switch with OVS extension enabled.:: - PS> import-module .\datapath-windows\misc\OVS.psm1 - PS> $vnic = Get-VMNetworkAdapter - PS> Disconnect-VMNetworkAdapter -VMNetworkAdapter $vnic[0] - PS> $vnic[0] | Set-VMNetworkAdapterOVSPort -OVSPortName ovs-port-a - PS> Connect-VMNetworkAdapter -VMNetworkAdapter $vnic[0] \ + PS > import-module .\datapath-windows\misc\OVS.psm1 + PS > $vnic = Get-VMNetworkAdapter + PS > Disconnect-VMNetworkAdapter -VMNetworkAdapter $vnic[0] + PS > $vnic[0] | Set-VMNetworkAdapterOVSPort -OVSPortName ovs-port-a + PS > Connect-VMNetworkAdapter -VMNetworkAdapter $vnic[0] \ -SwitchName OVS-Extended-Switch Next, add the VIFs to ``br-int``:: @@ -468,8 +467,7 @@ Dumping the ports should show the additional ports that were just added:: system@ovs-system: lookups: hit:0 missed:0 lost:0 flows: 0 - port 4: vEthernet (external) (internal) - port 5: ovs-port-a + port 4: ovs-port-a port 2: br-pif (internal) port 1: br-int (internal port 3: Ethernet0 @@ -491,6 +489,74 @@ Dumping the ports should show the additional ports that were just added:: Port "ovs-port-a" Interface "ovs-port-a" +Add multiple NICs to be managed by OVS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To leverage support of multiple NICs into OVS, we will be using the MSFT +cmdlets for forwarding team extension. More documentation about them can be +found at technet_. + +.. _technet: https://technet.microsoft.com/en-us/library/jj553812%28v=wps.630%29.aspx + +I.e.:: +We will set up a switch team combined from ``Ethernet0 2`` and ``Ethernet1 2`` +named ``external``. + +PS > Get-NetAdapter +Name InterfaceDescription +---- -------------------- +br-int Hyper-V Virtual Ethernet Adapter #3 +br-pif Hyper-V Virtual Ethernet Adapter #2 +Ethernet3 2 Intel(R) 82574L Gigabit Network Co...#3 +Ethernet2 2 Intel(R) 82574L Gigabit Network Co...#4 +Ethernet1 2 Intel(R) 82574L Gigabit Network Co...#2 +Ethernet0 2 Intel(R) 82574L Gigabit Network Conn... + +PS > New-NetSwitchTeam -Name external -TeamMembers "Ethernet0 2","Ethernet1 2" +PS > Get-NetSwitchTeam +Name : external +Members : {Ethernet1 2, Ethernet0 2} + +This will result in a new adapter bound to the host called ``external`` + +PS > Get-NetAdapter + +Name InterfaceDescription +---- -------------------- +br-test Hyper-V Virtual Ethernet Adapter #4 +br-pif Hyper-V Virtual Ethernet Adapter #2 +external Microsoft Network Adapter Multiplexo... +Ethernet3 2 Intel(R) 82574L Gigabit Network Co...#3 +Ethernet2 2 Intel(R) 82574L Gigabit Network Co...#4 +Ethernet1 2 Intel(R) 82574L Gigabit Network Co...#2 +Ethernet0 2 Intel(R) 82574L Gigabit Network Conn... + +Next we will set up the Hyper-V VMSwitch on the new adapter ``external`` + +PS > New-VMSwitch -Name external -NetAdapterName external \ + -AllowManagementOS $false + +Under OVS the adapters under the team ``external``, ``Ethernet0 2`` and +``Ethernet1 2``, can be added either under a bond device or separately. + +The following example shows how the bridges look with the NICs being separated:: + +> ovs-vsctl show + +6cd9481b-c249-4ee3-8692-97b399dd29d8 + Bridge br-test + Port br-test + Interface br-test + type: internal + Port "Ethernet1 2" + Interface "Ethernet1 2" + Bridge br-pif + Port "Ethernet0 2" + Interface "Ethernet0 2" + Port br-pif + Interface br-pif + type: internal + Add patch ports and configure VLAN tagging ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~