Message ID | 20160913181337.3472-1-aserdean@cloudbasesolutions.com |
---|---|
State | Superseded |
Delegated to: | Guru Shetty |
Headers | show |
Hi Alin, We had discussed this over IRC, will you be adding some more example to the documentation? Mainly around internal devices? Thanks, Sairam On 9/13/16, 11:13 AM, "Alin Serdean" <aserdean@cloudbasesolutions.com> wrote: >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 <aserdean@cloudbasesolutions.com> >Acked-by: Paul Boca <pboca@cloudbasesolutions.com> >--- >v5: Rebase >v4: Address comments >v3: Add acked >v2: Rebase >--- > INSTALL.Windows.md | 143 >+++++++++++++++++++++++++++++++++++++---------------- > 1 file changed, 101 insertions(+), 42 deletions(-) > >diff --git a/INSTALL.Windows.md b/INSTALL.Windows.md >index 59f3936..df5017d 100644 >--- a/INSTALL.Windows.md >+++ b/INSTALL.Windows.md >@@ -72,9 +72,9 @@ or from a distribution tar ball. > directories, etc. For example, > > % ./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" >+ LIBS="-lws2_32 -liphlpapi -lwbemuuid -lole32 -loleaut32" \ >+ --prefix="C:/openvswitch/usr" --localstatedir="C:/openvswitch/var" >\ >+ --sysconfdir="C:/openvswitch/etc" --with-pthread="C:/pthread" > > By default, the above enables compiler optimization for fast code. > For default compiler optimization, pass the "--with-debug" configure >@@ -125,9 +125,10 @@ Note down the directory where OpenSSL is installed >(e.g.: C:/OpenSSL-Win32). > For example, > > % ./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" > > * Run make for the ported executables. > >@@ -142,10 +143,11 @@ level 'make' will invoke building the kernel >datapath, if the > For example, > > % ./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" --with-vstudiotarget="<target >type>" >+ 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" \ >+ --with-vstudiotarget="<target type>" > > Possible values for "<target type>" are: > "Debug" and "Release" >@@ -186,8 +188,7 @@ to work (covered later). > > The command to create a new switch named 'OVS-Extended-Switch' using a >physical > NIC named 'Ethernet 1' is: >- % New-VMSwitch "OVS-Extended-Switch" -AllowManagementOS $true \ >- -NetAdapterName "Ethernet 1" >+ % New-VMSwitch "OVS-Extended-Switch" -NetAdapterName "Ethernet 1" > > Note: you can obtain the list of physical NICs on the host using > 'Get-NetAdapter' command. >@@ -278,23 +279,20 @@ connected to the Hyper-V switch. I.e. let us >suppose we created the Hyper-V > virtual switch on top of the adapter named 'Ethernet0'. In OVS for >Hyper-V, we > use that name('Ethernet0') as a special name to refer to that adapter. > >-Note: Currently, we assume that the Hyper-V switch on which OVS >extension is >-enabled has a single physical NIC connected to it. >- >-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 (<name of the switch>)". >+Internal ports are the virtual adapters created on the Hyper-V switch >using the >+ovs-vsctl add-br <bridge> command. By default they are created under the >+following rule "<name of bridge>" 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 >+PS C:\package\binaries> Get-NetAdapter | select Name,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 >+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 > >@@ -302,13 +300,11 @@ Name SwitchType NetAdapterInterfaceDescription > ---- ---------- ------------------------------ > 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 resulting >into the >-following ovs-vsctl commands >+We can see that we have a switch(external) created upon adapter name >+'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. > Sample output shows up as follows: >@@ -317,18 +313,17 @@ following ovs-vsctl commands > 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 >@@ -374,8 +369,7 @@ with OVS extension enabled. > 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 >@@ -383,8 +377,6 @@ with OVS extension enabled. > % ovs-vsctl show > 4cd86499-74df-48bd-a64d-8d115b12a9f2 > Bridge br-pif >- Port "vEthernet (external)" >- Interface "vEthernet (external)" > Port "Ethernet0" > Interface "Ethernet0" > Port br-pif >@@ -397,6 +389,73 @@ with OVS extension enabled. > Port "ovs-port-a" > Interface "ovs-port-a" > >+Steps to 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 can be found >+under: >+https://urldefense.proofpoint.com/v2/url?u=https-3A__technet.microsoft.co >m_en-2Dus_library_jj553812-2528v-3Dwps.630-2529.aspx&d=CwIGaQ&c=Sqcl0Ez6M0 >X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=Dcruz40PROJ40ROzSpxyQSLw6fcrOWpJgEcEmN >R3JEQ&m=fhIjCe6i4fcAK-VamnYPPCLG5N2g6F325uqEDj6qQwE&s=kXz53kuvRw_La9c3It87 >tczDLvywJvwSJK_tahpLvu4&e= >+ >+Eg: >+We will set up a switch team combined from 'Ethernet0 2' and 'Ethernet1 >2' >+named external. >+ >+% 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... >+ >+% New-NetSwitchTeam -Name external -TeamMembers "Ethernet0 2","Ethernet1 >2" >+% Get-NetSwitchTeam >+Name : external >+Members : {Ethernet1 2, Ethernet0 2} >+ >+This will result in a new adapter bound to the host called 'external' >+ >+% 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' >+ >+%New-VMSwitch -Name external -NetAdapterName external -AllowManagementOS >$false >+ >+Under OVS, the adapters added to the team, 'Ethernet0 2' and 'Ethernet1 >2', can >+be added either under a bond device or separately. >+ >+In our example here is how the bridges look with the NICs being >separated under >+different bridges: >+ >+% 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 >+ > Steps to configure patch ports and switch VLAN tagging > ------------------------------------------------------ > The Windows Open vSwitch implementation support VLAN tagging in the >switch. >-- >2.9.2.windows.1 >_______________________________________________ >dev mailing list >dev@openvswitch.org >https://urldefense.proofpoint.com/v2/url?u=http-3A__openvswitch.org_mailma >n_listinfo_dev&d=CwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=Dc >ruz40PROJ40ROzSpxyQSLw6fcrOWpJgEcEmNR3JEQ&m=fhIjCe6i4fcAK-VamnYPPCLG5N2g6F >325uqEDj6qQwE&s=5CtA6Reyf1hXl4GYvFhyleoC2etheejSqQamJaOJdQ8&e=
diff --git a/INSTALL.Windows.md b/INSTALL.Windows.md index 59f3936..df5017d 100644 --- a/INSTALL.Windows.md +++ b/INSTALL.Windows.md @@ -72,9 +72,9 @@ or from a distribution tar ball. directories, etc. For example, % ./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" + LIBS="-lws2_32 -liphlpapi -lwbemuuid -lole32 -loleaut32" \ + --prefix="C:/openvswitch/usr" --localstatedir="C:/openvswitch/var" \ + --sysconfdir="C:/openvswitch/etc" --with-pthread="C:/pthread" By default, the above enables compiler optimization for fast code. For default compiler optimization, pass the "--with-debug" configure @@ -125,9 +125,10 @@ Note down the directory where OpenSSL is installed (e.g.: C:/OpenSSL-Win32). For example, % ./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" * Run make for the ported executables. @@ -142,10 +143,11 @@ level 'make' will invoke building the kernel datapath, if the For example, % ./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" --with-vstudiotarget="<target type>" + 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" \ + --with-vstudiotarget="<target type>" Possible values for "<target type>" are: "Debug" and "Release" @@ -186,8 +188,7 @@ to work (covered later). The command to create a new switch named 'OVS-Extended-Switch' using a physical NIC named 'Ethernet 1' is: - % New-VMSwitch "OVS-Extended-Switch" -AllowManagementOS $true \ - -NetAdapterName "Ethernet 1" + % New-VMSwitch "OVS-Extended-Switch" -NetAdapterName "Ethernet 1" Note: you can obtain the list of physical NICs on the host using 'Get-NetAdapter' command. @@ -278,23 +279,20 @@ connected to the Hyper-V switch. I.e. let us suppose we created the Hyper-V virtual switch on top of the adapter named 'Ethernet0'. In OVS for Hyper-V, we use that name('Ethernet0') as a special name to refer to that adapter. -Note: Currently, we assume that the Hyper-V switch on which OVS extension is -enabled has a single physical NIC connected to it. - -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 (<name of the switch>)". +Internal ports are the virtual adapters created on the Hyper-V switch using the +ovs-vsctl add-br <bridge> command. By default they are created under the +following rule "<name of bridge>" 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 +PS C:\package\binaries> Get-NetAdapter | select Name,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 +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 @@ -302,13 +300,11 @@ Name SwitchType NetAdapterInterfaceDescription ---- ---------- ------------------------------ 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 resulting into the -following ovs-vsctl commands +We can see that we have a switch(external) created upon adapter name +'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. Sample output shows up as follows: @@ -317,18 +313,17 @@ following ovs-vsctl commands 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 @@ -374,8 +369,7 @@ with OVS extension enabled. 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 @@ -383,8 +377,6 @@ with OVS extension enabled. % ovs-vsctl show 4cd86499-74df-48bd-a64d-8d115b12a9f2 Bridge br-pif - Port "vEthernet (external)" - Interface "vEthernet (external)" Port "Ethernet0" Interface "Ethernet0" Port br-pif @@ -397,6 +389,73 @@ with OVS extension enabled. Port "ovs-port-a" Interface "ovs-port-a" +Steps to 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 can be found +under: +https://technet.microsoft.com/en-us/library/jj553812%28v=wps.630%29.aspx + +Eg: +We will set up a switch team combined from 'Ethernet0 2' and 'Ethernet1 2' +named external. + +% 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... + +% New-NetSwitchTeam -Name external -TeamMembers "Ethernet0 2","Ethernet1 2" +% Get-NetSwitchTeam +Name : external +Members : {Ethernet1 2, Ethernet0 2} + +This will result in a new adapter bound to the host called 'external' + +% 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' + +%New-VMSwitch -Name external -NetAdapterName external -AllowManagementOS $false + +Under OVS, the adapters added to the team, 'Ethernet0 2' and 'Ethernet1 2', can +be added either under a bond device or separately. + +In our example here is how the bridges look with the NICs being separated under +different bridges: + +% 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 + Steps to configure patch ports and switch VLAN tagging ------------------------------------------------------ The Windows Open vSwitch implementation support VLAN tagging in the switch.