Changes between Initial Version and Version 1 of QinqResults


Ignore:
Timestamp:
06/28/10 06:48:49 (14 years ago)
Author:
jwilliams@bbn.com
Comment:

migrated initial text from SysengWiki:QinQCapabilites

Legend:

Unmodified
Added
Removed
Modified
  • QinqResults

    v1 v1  
     1= Purpose =
     2[[PageOutline]]
     3This document outlines Exploring QinQ using various vendor's switch hardware (DUT - Device Under Test). This document covers:
     4 * initial QinQ overview
     5 * how to configure each DUT for QinQ
     6 * feasibility testing
     7 * interoperability testing 
     8
     9= QinQ Overview =
     10QinQ can be used to "tunnel" a particular VLAN of a "customer" network through a "service" network. This is a very important concept in GENI to allow multiple "customer" VLANS to be interconnected through the VLANS of regional service providers.
     11
     12[[Image(QinQOverview.jpg)]]
     13
     14In the image above VLAN A and VLAN B are two VLANs that span between "Network 1" and "Network 2". These networks can be at two separate sites.  VLANs A & B are tunneled through the "Intermediate network" using VLAN Q. This allows the customer network VLAN usage to be independent of the Intermediate Network while still allowing the customer VLAN traffic to transverse the intermediate network. The Intermediate Network has a "separate VLAN ID space" than the two other network sites. VLAN X could be the same VLAN ID as either VLAN A or VLAN B without any collision.
     15
     16The distinction between the different types of VLANs results in a discussion of the Ethernet Frame's !EtherType field. An Ethernet Frame's header uses an !EtherType field to specify what type of data is contained within the frame. 
     17
     18For VLANs the value in this field is, in large part, determined by the switch's port's configuration.
     19|| '''VLAN type''' || '''!EtherType value''' || '''tag type'''|| '''port type''' || '''note''' ||
     20|| none  || per protocol   || untagged frame || access port ||   IP = 0x800, ARP = 0x0806, etc  ||
     21|| customer  || 0x8100 || tagged frame || 802.1q VLAN trunk port|| 802.1q VLAN tagging  ||
     22|| service || 0x8a88  || QinQ tagged frame || 802.1ad (QinQ) VLAN trunk port|| 8021.ad provider tunnel  ||
     23
     24For 802.1q VLANs and 802.ad QinQ VLANs the !EtherType is actually a "Tag Protocol Identifier (TPID)" that, along with other tagging information, is inserted after the frame's source MAC address field. As this TPID is at the same byte offset as the original !EtherType field, it is common to refer to this field as the !EtherType field when discussing VLANs. The image below illustrates this distinction. Each tag adds 4 Bytes of data to the Ethernet frame.
     25
     26[[Image(untaggedTaggedQinqTagged.jpg)]]
     27
     28 * See http://en.wikipedia.org/wiki/Ethernet#Ethernet_frame_types_and_the_EtherType_field for more information on frame types.
     29 * See http://en.wikipedia.org/wiki/IEEE_802.1Q  for more information on VLAN tagging and QinQ tagging.
     30
     31As the above illustration shows, the frame size was increased (by 4 Bytes) per each added tag. The size implications are shown in the table below.
     32
     33||'''use'''                           || '''header size'''|| '''tag size''' || '''MTU''' || '''FCS'''|| '''total frame size'' ||
     34||standard ethernet   || 14  || 0 || 1500     || 4 || 1518  ||
     35||802.1q VLAN trunk  || 14  ||+4  || 1500  || 4 ||  1522  ||
     36||802.1ad (QinQ) VLAN "tunnel" || 14 ||+4 +4  || 1500 || 4 || 1526   ||
     37
     38The 802.3ac standard increased the maximum frame length from 1518 to  1522 Bytes specifically, and exclusively, for VLAN tags. If a switch vendor adheres to this standard then VLAN tags can be viewed as part of the header (MTU stays as 1500) while QinQ tags require an increase of MTU (to 1504) to handle the inner tag. The test [http://groups.geni.net/syseng/wiki/QinQCapabilites#MTUsinQinQ MTU's in QinQ] specifically addresses the per-vendor MTU implementation.
     39
     40== Simulated Network Topology ==
     41A single network site's topology, as shown in the Overview diagram, is simulated for this test set up within a single switch to fully exercise the DUTs VLAN and QinQ capabilities.  A single physical switch will be implementing both customer and service VLANs.
     42
     43A VLAN trunk between a DUT's customer and service VLANs looks like a "jumper" cable -- a customer VLAN trunk must be created out of a customer-level switch trunk port and conencted to a service-level switch's acess port. This is a consequence of simulating multiple virtual switches within a single physical switch  This jumper is shown below in the Simulated Network Topology diagram. For complete end-to-end testing Two DUT's, each configured as shown, would be connected using the respective QinQ port.
     44
     45[[Image(SimulatedTestTopology.jpg)]]
     46
     47== Device Summary ==
     48
     49|| Poblano || NEC IP 8800  switch (DUT) -- see ["hwNecIP8800"] for reference and usage  ||
     50|| Habanero || HP !ProCurve 6600 switch (DUT) -- see ["hwHpProcurve6600"] for reference and usage ||
     51|| Basil ||  Cisco Catalyst 3750 switch (DUT)-- ["hwCiscoCatalyst3750"] for reference and usage||
     52|| Naboo || VM Server ||
     53|| azzalle || host on Naboo for testing ||
     54|| gotland || host on Naboo for testing ||
     55|| lagnace || host on Naboo for testing ||
     56|| skaldia  || host on Naboo for testing ||
     57|| wireshark || host used for traffic monitoring (laptop) ||
     58|| wasabi || Switch used for internal network connections ||
     59
     60== Test Topology with Internal Network ==
     61This section outlines the configuration steps necessary to integrate the DUTs into the BBN internal network to allow for testing and configuration.
     62
     63[[Image(TestTopology.jpg)]]
     64
     65The above diagram represents all major "classes" of connections that are between between physical devices.  these connections are implemented as required per test.
     66
     67To set up the test network the following steps were necessary:
     68
     69 1. Configure VM test hosts.
     70 1. Configure each DUT.
     71   1. management IP addresses.
     72   1. management network connections.
     73   1. port and VLAN assignment.
     74
     75== Configuration ==
     76All VMs and DUTs have management IP addresses on the network 128.89.91.0/24, with physical connection via wasabi and/or naboo.  This IP network is not used for any test traffic.
     77
     78=== VM hosts ===
     79The following settings are from #506 and #537.
     80
     81|| '''host''' || '''DNS''' || '''IP''' ||
     82|| azzalle || azzalle.gpolab.bbn.com   || 128.89.91.9 ||
     83|| gotland || gotland.gpolab.bbn.com || 128.89.91.10 ||
     84|| lagnace || lagnace.gpolab.bbn.com || 128.89.91.11 ||
     85|| skaldia  || skaldia.gpolab.bbn.com || 128.89.91.12 ||
     86
     87Vm host's test network IP addresses and physical interfaces on Naboo.
     88|| '''host''' || '''IP''' || '''[eth1] -- NIC on naboo''' ||
     89|| azzalle || 10.20.1.9 || naboo[vmnic3] (2nd NIC on left card) ||
     90|| gotland ||  10.20.1.10 || naboo[vmnic0] (3rd NIC on left card) ||
     91||  lagnace || 10.20.1.11 || naboo[vmnic1] (4th NIC on left card) ||
     92|| skaldia || 10.20.1.12 ||:naboo[vmnic6] (the top NIC on the second card) ||
     93
     94=== DUT's Port and VLAN Assignments ===
     95It is advantageous to use the same port assignments for each DUT to ensure consistency and prevent confusion. Each DUT will have the same port assignment as shown below. This configuration allows for a single configuration to accommodate all planned testing without reconfiguration between tests.
     96
     97[[Image(PortstwoQinQtunnels.jpg)]]
     98
     99|| '''Port''' || '''Note''' ||
     100|| 1  || QinQ Port ||
     101|| 2  || management port ||
     102|| 3  || extra management port reserved for direct connection ||
     103|| 4  || host port ||
     104|| 5  || cvlan trunk - to port 6 ||
     105|| 6  || svlan access - to port 5 ||
     106|| 7  || cvlan trunk - to port 8 ||
     107|| 8  || svlan access - to port 7 ||
     108|| 9  || Not used ||
     109|| 10 || host port ||
     110|| 11 || host port ||
     111|| 12 || host port ||
     112|| 13  || cvlan trunk - to port 14 ||
     113|| 14  || svlan access - to port 13 ||
     114|| 15  || host port ||
     115|| 16 || Not used ||
     116
     117=== Management IP Addresses ===
     118||'''switch''' || '''IP subnet''' || '''VLAN''' || '''management port''' || '''wasabi's port''' ||
     119|| poblano || 128.89.91.6/25 || 900 || 2 || gi0/2 ||
     120|| habanero || 128.89.91.7/25 || 900  || 2 || gi0/3 ||
     121|| basil || 128.89.91.8/25 || 900 || 2 || gi0/4 ||
     122See OpsNumbering for gateway, broadcast, etc.
     123
     124= Test Outline  =
     125This section outlines the various tests to perform on a DUT as well as between DUTs.
     126
     127== Unit Tests ==
     128These tests are performed on a single DUT.
     129
     130=== QinQ Tagging ===
     131'''Purpose'''[[BR]]
     132Verify that a given DUT's QinQ port sends double-tagged QinQ frames in the expected format. For switches to understand that the trunking mechanism is a QinQ VLAN trunk the Ethernet's Header must contain the appropriate QinQ header field  type indication (0x8a88).
     133
     134[[Image(QinQTaggingTestOverview.jpg)]]
     135
     136'''Method''' [[BR]]
     137Verify frames originating from the test host are tagged as appropriate using the Wireshark host.
     138
     139 * HP:   cvlans and svlans  are used to distinguish port type. svlan trunk (QinQ) ports use the 0x88a8 value.
     140 * NEC: configures a QinQ trunk-port explicitly with the setting "switch dot1q ethertype 8a88" for a given port.
     141 * CISCO: The access port for the QinQ portion needs configured for QinQ, the QinQ trunk (ES) port is configured with 0x88a8.
     142
     143=== QinQ with OpenFlow ===
     144'''Purpose'''[[BR]]
     145Verify that QinQ can operate within an OpenFlow enabled switch. This test verifies that a DUT can be configured to control QinQ VLANS while running the OpenFlow software. OpenFlow will not be configured to perform any flow-based traffic shaping.
     146
     147'''Method''' [[BR]]
     148Enable OpenFlow and perform all experiments.
     149
     150=== QinQ Tag Exclusivity ===
     151'''Purpose'''[[BR]]
     152This test insures that the customer VLAN ID and service VLAN ID ranges are mutually exclusive.
     153
     154[[Image(QinQExclusitivityOverview.jpg)]]
     155
     156'''Method''' [[BR]]
     157The DUT is configured with service VLAN 667 used for QinQ as well as a customer VLAN 667. If successful the Wireshark host should see a frame with outer tag ID 667 as well as inner tag 667.
     158
     159=== VLAN and QinQ VLAN on Same Port ===
     160'''Purpose'''[[BR]]
     161This test explores the behavior of allowing a normal VLAN  trunk and a service VLAN (QinQ) trunk to be allowed on the same port.
     162
     163[[Image(CustomerAndServiceSamePort.jpg)]]
     164
     165'''Method''' [[BR]]
     166 * VLAN 128 is a customer VLAN going out of port 1.
     167 * Service VLAN 667 tunneling  customer VLAN 3702 will also be trunked on port 1.
     168 * Use wireshark to verify the appropriate frames are tagged for VLAN 128 or QinQ-tagged with outer VLAN 667 and inner VLAN 3702.
     169
     170== Integration Tests ==
     171
     172===  QinQ between DUTs ===
     173'''Purpose'''[[BR]]
     174Verify that hosts in the same VLAN on opposite sides of a QinQ tunnel can communicate.
     175
     176[[Image(QinQBetweenDUTs.jpg)]]
     177
     178'''Method''' [[BR]]
     179Ping between hosts in the same tunneled VLAN.
     180
     181=== MTU's in QinQ  ===
     182'''Purpose'''[[BR]]
     183For QinQ to work efficiently, the ports trunking QinQ frames must accept allow for a frame size of 1526. A particular vendor's switch will require correct MTU configuration to prevent fragmentation. 
     184
     185According to 802.3ac frame size was increased to 1522 to allow a 1500 Byte MTU for VLAN tags. QinQ Trunks would require an MTU of 1504.
     186
     187
     188   ||use                            || header size || MTU size || total size || switch MTU command|| note                       || 
     189   ||standard ethernet   || 18                || 1500     || 1518       || none  required    || standard frame             ||
     190   ||802.1q VLAN trunk  || 18 + 4        || 1500     || 1522       || none required     || effects header only        ||
     191   ||QinQ VLAN "tunnel" || 18 + 4        || 1500 + 4 || 1526       || system MTU 1504   || MTU adjusted for inner tag ||   
     192
     193This ignores other MTU modification requirements such as:
     194 *  MPLS VPN pass-through (two 4-byte labels)
     195 * Various Frame in Frame tunneling schemes (18 Bytes to 50 Bytes)
     196
     197'''Method'''   [[BR]]
     198{{{
     199ping 10.20.1.11 -M do -s "$((1500-20-8))" -c 1 > MTU_validation.txt
     200}}}
     201 * -M do: (return error if ping packet would fragment)
     202 * -s packetsize: size of payload:
     203   * 1500 = desired MTU
     204   * 20 = IP header size (would be IN the frame's MTU)
     205   * 8 = ICMP header size (would be IN the frame's MTU)
     206
     207=== VLAN and QinQ VLAN on Same Port ===
     208'''Purpose'''[[BR]]
     209If this was feasible for two DUTs this test verifies that the hosts in this VLAN on separate DUTs can communicate.
     210
     211[[Image(CustomerAndServiceSamePortQinQ.jpg)]]
     212
     213'''Method'''[[BR]]
     214Simply ping between hosts in the same customer VLAN going out of the service port.
     215
     216=== Latency: VLAN vs QinQ ===
     217'''Purpose'''[[BR]]
     218This test compares the best-case Round Trip latency of two hosts using a standard VLAN trunk and then a QinQ VLAN trunk.
     219
     220'''VLAN Latency'''[[BR]]
     221
     222[[Image(LatencyVlan.jpg)]]
     223
     224'''QINQ Latency'''[[BR]]
     225As this test relies on end-to-end host  connectivity over a QinQ tunnel, the setup is the same as "the test QinQ between DUTs". This diagram is included again here for completeness.
     226[[Image(LatencyQinQ.jpg)]]
     227
     228'''Method'''[[BR]]
     229This will be accomplished by using ping to report the round trip latency over 10 seconds. This test will ping the corresponding host once to   "primes the queue" to prevent the ARP request from the first ping skewing the max, average and mdev values.
     230{{{
     231ping 10.20.1.11 -c 1; ping 10.20.1.11 -c 10 | tee aFile.txt
     232}}}
     233
     234=== QinQ Traffic Simulations ===
     235'''Purpose'''[[BR]]
     236This test will involve inter-VLAN traffic tunneled across a QinQ Tunnel.
     237
     238[[Image(TwoQinQTunnelsOneVlanPerTunnel.jpg)]]
     239
     240'''Method'''[[BR]]
     241 Use iperf to generate multiple TCP and UDP streams.
     242
     243'''TCP'''[[BR]]
     244TCP streams allow for max throughput simulations.
     245{{{
     246iperf -c 10.20.1.11 -i 60 -t $(("60*60*8"))>aFile.txt &
     247
     248server:
     249iperf -s -i 60 > aFile.txt &
     250}}}
     251
     252'''UDP'''[[BR]]
     253As UDP doesn't have an ACK mechanism it is necessary to "prime the queue" to prevent the server from dropping any traffic due to fast-sender issues. This is necessary as iperf UDP server would see large amounts of dropped traffic until the ARP request resolved.
     254{{{
     255client:
     256ping -c 1 10.20.1.11; iperf -c 10.20.1.11 -u -i 1 -b 50M | tee aFile.txt
     257
     258server:
     259iperf -s -u -i 1 | tee aFile.txt
     260}}}
     261
     262----
     263
     264= Unit Testing =
     265
     266== NEC ==
     267
     268=== Configuration ===
     269VLAN port participation:
     270{{{
     271poblano# show vlan config
     272Date 2010/04/17 17:00:15 UTC
     273VLAN counts:12
     274ID   Name             Status  Ports
     275   1 VLAN0001         Down    -
     276 128 VLAN0128         Up      0/1,0/4
     277 667 VLAN0667         Up      0/1,0/6,0/13-15
     278 668 VLAN0668         Up      0/1,0/8
     279 900 VLAN0900         Up      0/2-3
     2803701 VLAN3701         Down    -
     2813702 VLAN3702         Up      0/5,0/11
     2823703 VLAN3703         Up      0/7,0/12
     2833704 VLAN3704         Up      0/5,0/10
     284}}}
     285
     286VLAN port membership with trunking configuration. Only relevant interface info  is shown, for complete configuration see the NEC Appendix.
     287{{{
     288interface gigabitethernet 0/1
     289  switchport dot1q ethertype 88a8
     290  switchport mode trunk
     291  switchport trunk allowed vlan 128,667-668
     292!
     293interface gigabitethernet 0/2
     294  switchport mode access
     295  switchport access vlan 900
     296!
     297interface gigabitethernet 0/3
     298  switchport mode access
     299  switchport access vlan 900
     300!
     301interface gigabitethernet 0/4
     302  switchport mode access
     303  switchport access vlan 128
     304!
     305interface gigabitethernet 0/5
     306  switchport dot1q ethertype 8100
     307  switchport mode trunk
     308  switchport trunk allowed vlan 3702,3704
     309!
     310interface gigabitethernet 0/6
     311  switchport mode dot1q-tunnel
     312  switchport access vlan 667
     313!
     314interface gigabitethernet 0/7
     315  switchport dot1q ethertype 8100
     316  switchport mode trunk
     317  switchport trunk allowed vlan 3703
     318!
     319interface gigabitethernet 0/8
     320  switchport mode dot1q-tunnel
     321  switchport access vlan 668
     322!
     323interface gigabitethernet 0/10
     324  switchport mode access
     325  switchport access vlan 3704
     326!
     327interface gigabitethernet 0/11
     328  switchport mode access
     329  switchport access vlan 3702
     330!
     331interface gigabitethernet 0/12
     332  switchport mode access
     333  switchport access vlan 3703
     334!
     335interface gigabitethernet 0/13
     336  switchport dot1q ethertype 8100
     337  switchport mode trunk
     338  switchport trunk allowed vlan 667
     339!
     340interface gigabitethernet 0/14
     341  switchport mode dot1q-tunnel
     342  switchport access vlan 667
     343!
     344interface gigabitethernet 0/15
     345  switchport mode access
     346  switchport access vlan 667
     347}}}
     348
     349=== QinQ Tagging ===
     350 the NEC correctly tagged the frames for QinQ transmission, as shown below.
     351Wireshark sees QinQ double-tagged frame 667:3702. (e.g. 667 is the outer vlan, 3702 is the "wrapped" vlan)
     352{{{
     353Ethernet frame
     354    type: 802.1ad Provider Bridge (QinQ) (0x88a8)
     355    IEEEE 802.1ad ID:667
     356        ID667
     357        type 802.1Q virtual LAN (0x8100) ID 3702
     358            ID 3702
     359            IP (0x08000)
     360                PAYLOAD
     361}}}
     362
     363[[Image(NEC_QinQ_inner_3702_outer_667.jpg)]]
     364
     365=== QinQ with OpenFlow ===
     366
     367All QinQ testing was conducted while Poblano was running OpenFlow 0.9 firmware; no flows were active. Regardless of which Firmware is used to boot the device (original or OpenFlow) the start-up configuration is retained.
     368
     369Ports and VLANs can either be used by OpenFlow or as part of the production network. Future tests will explore QinQ with multiple active flows.
     370
     371=== Customer VLAN  out QinQ Port ===
     372{{{
     373128 VLAN0128         Up      0/1,0/4
     374}}}
     375
     376VLAN 128's ports were configured as follows:
     377{{{
     378interface gigabitethernet 0/1
     379  switchport dot1q ethertype 88a8
     380  switchport mode trunk
     381  switchport trunk allowed vlan 128,667-668
     382!
     383interface gigabitethernet 0/4
     384  switchport mode access
     385  switchport access vlan 128
     386}}}
     387
     388[[Image(NEC_VLAN128NoQinQ.jpg)]]
     389
     390VLAN 128 is capable of being sent out port 1, however it's tagged type is "0x8a88" (service VLAN), "not 0x8100" (customer VLAN). This implies that the Switch on the other side  of the trunk must be a service VLAN; sending the VLAN as a "normal" VLAN isn't possible in this configuration.
     391
     392
     393=== Same Inner and Outer VLAN Tags ===
     394{{{
     395 667 VLAN0667         Up      0/1,0/6,0/13-15
     396}}}
     397From VLAN 667's port participation it's appears that there's no distinction between customer and service VLANs despite various ports being configured to tag for QinQ vs normal tagging. If all the ports are indeed in the same VLAN the VLAN trunk (aka "jumper) from ports13<->14 should create a broadcast storm which would be observable on port 1 (STP is disabled).
     398
     399{{{
     4001. connecte azzalle to Nec's port 15
     4012. Wireshark connected to NEC port 1.
     4023  On azzalle: 10.20.1.11 -c 1
     403}}}
     404
     405[[Image(NEC_SameIds_broadcast_storm.jpg)]]
     406A broadcast storm was induced from a single ping packet. The image also shows the continual nesting of VLAN headers as the frame continues to loop between access and trunk ports. From this it doesn't look possible to tunnel the same customer and service VLAN using one switch. This is an artifact caused by trying to emulate, on a single physical switch, service and customer VLANS of the with the same VLAN ID bridged with an Ethernet cable.
     407
     408----
     409
     410== HP ==
     411=== Overview ===
     412The HP needs explicit configuration to operate using both customer and service VLANS.  This configuration is applied as the preparatory global step of assigning mixed vlan mode. 
     413
     414=== Configuration ===
     415'''NOTE:''' The HP Procurve manual states that the switch only supports 2048 VLANS (half of the usual 4096).
     416
     417'''Note:''' Make sure the command below is the first configuration step.  Setting or changing this value causes the switch to immediately reboot – and completely wipe its running configuration during the process – to take effect.
     418{{{
     419qinq mixedvlan
     420}}}
     421
     422Ports used in svlans are not allowed to participate in the GARP VLAN Registration Protocol (GVRP).  The switch prompts when an incorrect assignment is attempted and entering the following command fixes the problem:
     423{{{
     424int 1 unknown-vlans disable
     425}}}
     426For this reason, VLAN 667 (in the test example) was configured as an svlan and 3702 as a vlan.
     427
     428{{{
     429habanero# show vlan
     430
     431 Status and Counters - VLAN Information
     432
     433  Maximum VLANs to support : 2000                 
     434  Primary VLAN : DEFAULT_VLAN
     435  Management VLAN :           
     436
     437 VLAN ID Name                 Type  | Status     Voice Jumbo
     438  ------- -------------------- ----- + ---------- ----- -----
     439  1       DEFAULT_VLAN         cvlan | Port-based No    No   
     440  128     VLAN128              svlan | Port-based No    No   
     441  667     VLAN667              svlan | Port-based No    No   
     442  668     VLAN668              svlan | Port-based No    No   
     443  900     VLAN900              cvlan | Port-based No    No   
     444  3702    VLAN3702             cvlan | Port-based No    No   
     445  3703    VLAN3703             cvlan | Port-based No    No   
     446  3704    VLAN3704             cvlan | Port-based No    No   
     447}}}
     448
     449{{{
     450vlan 1
     451   name "DEFAULT_VLAN"
     452   untagged 9,13-48,49-50,51-52
     453   no untagged 1-8,10-12
     454   no ip address
     455   exit
     456vlan 3702
     457   name "VLAN3702"
     458   untagged 11
     459   tagged 5
     460   no ip address
     461   exit
     462vlan 3703
     463   name "VLAN3703"
     464   untagged 12
     465   tagged 7
     466   no ip address
     467   exit
     468vlan 3704
     469   name "VLAN3704"
     470   untagged 10
     471   tagged 5
     472   no ip address
     473   exit
     474vlan 900
     475   name "VLAN900"
     476   untagged 2-3
     477   ip address 128.89.91.7 255.255.255.128
     478   exit
     479qinq mixedvlan
     480svlan 128
     481   name "VLAN128"
     482   tagged 1
     483   untagged 4
     484   exit
     485svlan 667
     486   name "VLAN667"
     487   tagged 1
     488   untagged 6
     489   exit
     490svlan 668
     491   name "VLAN668"
     492   tagged 1
     493   untagged 8
     494   exit
     495}}}
     496
     497=== QinQ Tagging ===
     498The HP setup worked similarly to the NEC. However to specify a VLAN as used for QinQ the VLAN must be marked as a service VLAN. Note the HP needs to be configured to support mixed VLANs (see HP appendix) before this can be configured - changing this setting removes all VLAN configuration from the switch.
     499
     500Wireshark sees QinQ double tagged frame 667:2702 (e.g. 667 is the outer vlan, 3702 is the "wrapped" vlan).
     501Wireshark reports the correct QinQ frame header type
     502{{{
     503Ethernet frame
     504    type: 802.1ad Provider Bridge (QinQ) (0x88a8)
     505    IEEEE 802.1ad ID:667
     506        ID667
     507        type 802.1Q virtual LAN (0x8100) ID 3702
     508            ID 3702
     509            IP (0x08000)
     510                PAYLOAD
     511}}}
     512
     513[[Image(HP QinQ tags.jpg)]]
     514
     515=== QinQ with OpenFlow ===
     516
     517All QinQ testing was conducted while Habanero was running OpenFlow 0.9 firmware; no flows were active. Regardless of which Firmware is used to boot the device (original or OpenFlow) the start-up configuration is retained.
     518
     519Ports and VLANs can either be used by OpenFlow or as part of the production network. Future tests will explore QinQ with multiple active flows.
     520
     521=== Customer VLAN Over QinQ Port ===
     522
     523Creating VLAN 128 as a customer VLAN did not work; adding port 1 to the VLAN's participating ports failed:
     524{{{
     525habanero(vlan-128)# tagged 1 
     526Ports 1 will lose their svlan memberships.
     527Do you want to continue? [y/n] n
     528}}}
     529Clearly, port 1 should remain a service port to stay a QinQ port - the answer was no.
     530
     531However, deleting the customer vlan 128 and then creating a service VLAN 128 worked:
     532{{{
     533habanero(config)# svlan 128
     534habanero(svlan-128)# interface svlan 128
     535habanero(svlan-128)# untagged 4
     536Interfaces that are GVRP enabled cannot be members of svlans.
     537Use the interface level 'unknown-vlans' command to disable port gvrp.
     538habanero(svlan-128)# exit     
     539habanero(config)# interface 4 unknown-vlans disable
     540habanero(config)# interface svlan 128
     541habanero(svlan-128)# untagged 4
     542Ports 4 will lose their cvlan memberships.
     543Do you want to continue? [y/n] y
     544habanero(svlan-128)# show vlan 128
     545habanero(svlan-128)# tagged 1
     546habanero(svlan-128)# show vlans 128
     547
     548 Status and Counters - VLAN Information - VLAN 128
     549
     550  VLAN ID : 128   
     551  Name : VLAN128             
     552  Type : svlan
     553  Status : Port-based
     554  Voice : No
     555  Jumbo : No
     556
     557  Port Information Mode     Unknown VLAN Status   
     558  ---------------- -------- ------------ ----------
     559  1                Tagged   Disable      Up       
     560  4                Untagged Disable      Down     
     561}}}
     562
     563This behavior seems consistent with the NEC. It is possible to send a non-tunneled VLANs out a service trunk port. However, those VLANs would be service VLANs, not customer VLANs.
     564
     565=== Same Inner and Outer VLAN Tags ===
     566Tried to create cvlan of 667 fails as there's already a svlan with 667.
     567{{{
     568habanero(config)# vlan 667
     569VLAN type mismatch. VID 667 is of type 'svlan'.
     570}}}
     571This was not as expected; HP's distinction between customer and service VLANs seems to imply (besides the implicit type tagging on trunk ports) that this configuration would be possible. Though surprising, this behavior is consistent with the NEC.
     572
     573
     574----
     575
     576== Cisco ==
     577=== Overview ===
     578The cisco 3750 requires the SFP ES module for QinQ operation. installed as well as the appropriate licensing. See http://www.cisco.com/en/US/prod/collateral/switches/ps5718/ps5532/prod_qas09186a00801eb822.html  Note that all configuration in this section refers to "port 1" This refers to this ES port (!GigabitEthernet?1/1/1 ). Ticket #533 outlines the procedure for getting the Cisco configured properly.
     579
     580
     581
     582=== Configuration ===
     583 
     584 '''Trunk Negotiation'''::
     585To allow for QinQ the Cisco Discovery protocol (CDP) should be disabled per dot1q (normal) VLAN tunk port.
     586{{{
     587interface FastEthernet1/0/6
     588 switchport access vlan 667
     589 switchport mode dot1q-tunnel
     590 no cdp enable                  <--HERE
     591!         
     592interface FastEthernet1/0/8
     593 switchport access vlan 668
     594 switchport mode dot1q-tunnel
     595 no cdp enable                    <--HERE
     596}}}
     597
     598 '''MTU'''::
     599The standard `system mtu` does not change ES port configuration. To adjust the MTU on these ports use the `system mtu jumbo` command to allow for QinQ tagging.
     600{{{
     601    3750(config)# system mtu jumbo 9000
     602    3750(config)# exit
     603    3750# reload
     604}}}
     605
     606 ''' QinQ access ports'''::
     607The QinQ Access ports (which connect to the standard dotq trunk ports) are configured to by using `switchport mode dot1q-tunnel.
     608{{{
     609 interface FastEthernet1/0/6
     610 switchport access vlan 667
     611 switchport mode dot1q-tunnel
     612 no cdp enable
     613}}}
     614
     615 ''' QinQ Trunk ports'''::
     616The QinQ trunk ports are set to participate in the same VLANs as the QinQ access ports. The trunk ethertype is set to the QinQ type: 0x88A8
     617{{{
     618 interface GigabitEthernet1/1/1
     619 switchport trunk allowed vlan 128,667,668
     620 switchport mode trunk
     621 switchport nonegotiate
     622 switchport trunk dot1q ethertype 88A8
     623 speed auto 1000
     624}}}
     625
     626=== QinQ Tagging ===
     627Wireshark sees QinQ double tagged frame 667:2702 (e.g. 667 is the outer vlan, 3702 is the "wrapped" vlan). Wireshark reports the correct QinQ frame header type
     628{{{
     629Ethernet frame
     630    type: 802.1ad Provider Bridge (QinQ) (0x88a8)
     631    IEEEE 802.1ad ID:667
     632        ID667
     633        type 802.1Q virtual LAN (0x8100) ID 3702
     634            ID 3702
     635            IP (0x08000)
     636                PAYLOAD
     637}}}
     638
     639=== QinQ with OpenFlow ===
     640None - Cisco doesn't support OpenFlow firmware.
     641
     642=== Customer VLAN Out QinQ Port ===
     643VLAN 128 is capable of being sent out ES port 1, however it's tagged type is "0x8a88" (service VLAN), "not 0x8100" (customer VLAN). This implies that the Switch on the other side of the trunk must be a service VLAN; sending the VLAN as a "normal" VLAN isn't possible in this configuration. This is the same behavior as the NEC switch.
     644
     645=== Same Inner and Outer VLAN Tags ===
     646Simular to NEC configuration ports with identical inner and outer VLAN IDs, when connected together via a jumer, cause a broadcast storm.
     647
     648----
     649
     650= Interoperability Testing =
     651
     652== NEC<->HP ==
     653
     654=== QinQ Between DUTs ===
     655Ping from azzalle to gotland succeeded.
     656
     657=== MTU's in QinQ ===
     658QinQ between NEC and HP can transmit an MTU of 1500 without fragmentation.
     659
     660Results:
     661{{{
     662ping 10.20.1.11 -M do -s "$((1500-20-8))" -c 1 > MTU_validation.txt
     6631480 bytes from 10.20.1.11: icmp_seq=1 ttl=64 time=0.434 ms
     664}}}
     665while adding 1 byte gave:
     666{{{
     667ping 10.20.1.11 -M do -s "$((1500-20-8+1))" -c 1
     668From 10.20.1.9 icmp_seq=1 Frag needed and DF set (mtu = 1500)
     669}}}
     670
     671'''NOTE'''
     672Poblano's current configuration for QinQ , due to previous experimental configuration, has a QinQ MTU of 1508 and  a VLAN Trunk MTU of 1504 - This configuration is different than 802.3ac, but may be correct for this vendor.  Habanero doesn't currently have any explicit MTU settings.   Setting Poblano's QinQ MTU to 1504 and the VLAN trunk MTU to 1500 results in no "Echo" nor "Destination Unreachable (Fragmentation required, and DF flag set)" responses. This seems to imply that the ICMP Echo Request successfully made it to the destination host, but the ICMP Echo Response was dropped when leaving  the HP's QinQ port.  More investigation is required.
     673
     674See the NEC IP8800 Manual: Configuration Settings, Vol. 3, section 1.4.3 for more information.
     675=== VLAN and QinQ VLAN on Same Port ===
     676
     677After configuring both the NEC's and HP's VLAN 128 to be a service VLAN (as outlined in the Unit test sections) end-to-end communication was possible.
     678
     679=== Latency: VLAN vs QinQ ===
     680
     681Ping across the tested ports. The first "ping -c 1"  "primes the queue" to prevent the ARP
     682request from the first ping skewing the max, average and mdev values.
     683{{{
     684ping 10.20.1.11 -c 1; ping 10.20.1.11 -c 10 | tee aFile.txt
     685}}}
     686
     687'''VLAN Trunk Only'''
     688{{{
     689--- 10.20.1.11 ping statistics ---
     69010 packets transmitted, 10 received, 0% packet loss, time 9066ms
     691rtt min/avg/max/mdev = 0.192/0.239/0.315/0.036 ms
     692}}}
     693
     694'''QinQ Trunk'''
     695{{{
     696--- 10.20.1.11 ping statistics ---
     69710 packets transmitted, 10 received, 0% packet loss, time 9072ms
     698rtt min/avg/max/mdev = 0.196/0.244/0.284/0.038 ms
     699}}}
     700
     701With all the extra hops for QinQ, an added RTL of 0.244-0.239=0.005ms seems more than reasonable. Given the short length of cabling this is a close approximation to "switching delay". Again, this was an Ideal baseline; there was no other traffic on the link for this baseline measurement.
     702
     703=== QinQ Traffic Simulations ===
     704
     705'''TCP'''[[BR]]
     706Naboo's VM hosts were capping out at ~430 Mbps for TCP traffic (+/- 7Mbps based on quick scanning of my iperf log files per 10sec over 10 minutes) This is a limitation of Naboo (VM server) and is not a limitation of any DUTs. This was with only 1 pair communicating - full 1Gb capacity was available. Testing both pairs over QinQ still resulted in transmission of ~430Mbps per pair (logged every minute over 8 hours). I noticed no downward performance trend - but again I am currently eyeballing. With two end-to-end pairs, we're still under the max capacity of the link.
     707
     708{{{
     709iperf -c 10.20.1.11 -i 60 -t $(("60*60*8"))>file.txt &
     710}}}
     711
     712
     713'''UDP'''[[BR]]
     714UDP testing revealed minimal packet-loss and jitter was 0.023 ms ± 0.002ms. 
     715
     716{{{
     717ping -c 1 10.20.1.11; iperf -c 10.20.1.11 -u -i 1 -b 50M
     718}}}
     719
     720
     721----
     722
     723== NEC<->CISCO ==
     724=== QinQ Between DUTs ===
     725Ping from azzalle to gotland succeeded.
     726
     727=== MTU's in QinQ ===
     728QinQ between NEC and Cisco can transmit an MTU of 1500 without fragmentation.
     729
     730Results:
     731{{{
     732ping 10.20.1.11 -M do -s "$((1500-20-8))" -c 1 > MTU_validation.txt
     7331480 bytes from 10.20.1.11: icmp_seq=1 ttl=64 time=0.434 ms
     734}}}
     735while adding 1 byte gave:
     736{{{
     737ping 10.20.1.11 -M do -s "$((1500-20-8+1))" -c 1
     738From 10.20.1.9 icmp_seq=1 Frag needed and DF set (mtu = 1500)
     739}}}
     740
     741=== VLAN and QinQ VLAN on same port ===
     742After configuring both the NEC's and Cisco's VLAN 128 to be a ''service'' VLAN (as outlined in the Unit test sections) end-to-end communication was possible.
     743
     744=== Latency: VLAN vs QinQ ===
     745Was not tested
     746
     747=== QinQ Traffic Simulations ===
     748'''TCP'''[[BR]]
     749Naboo's VM hosts were capping out at ~230 Mbps for TCP traffic (+/- 7Mbps based on quick scanning of my iperf log files per 10sec over 10 minutes) This is a limitation of Naboo (VM server) and is not a limitation of any DUTs. This was with only 1 pair communicating - full 1Gb capacity was available. This bandwidth is less than the amount possible when the NEC<->HOP tests were conducted. However, there are quite a few more VMs on Naboo the now.
     750
     751'''UDP'''[[BR]]
     752UDP testing indicated no packet-loss.
     753
     754----
     755
     756== HP<->CISCO ==
     757=== QinQ Between DUTs ===
     758=== MTU's in QinQ ===
     759QinQ between NEC and HP can transmit an MTU of 1500 without fragmentation.
     760
     761Results:
     762{{{
     763ping 10.20.1.11 -M do -s "$((1500-20-8))" -c 1 > MTU_validation.txt
     7641480 bytes from 10.20.1.11: icmp_seq=1 ttl=64 time=0.434 ms
     765}}}
     766
     767while adding 1 byte gave:
     768{{{
     769ping 10.20.1.11 -M do -s "$((1500-20-8+1))" -c 1
     770From 10.20.1.9 icmp_seq=1 Frag needed and DF set (mtu = 1500)
     771}}}
     772
     773See the NEC IP8800 Manual: Configuration Settings, Vol. 3, section 1.4.3 for more information.
     774
     775=== VLAN and QinQ VLAN on same port ===
     776After configuring both the HP's and Cisco's VLAN 128 to be a ''service'' VLAN (as outlined in the Unit test sections) end-to-end communication was possible.
     777
     778=== Latency: VLAN vs QinQ ===
     779Was not tested
     780
     781=== QinQ Traffic Simulations ===
     782'''TCP'''[[BR]]
     783Naboo's VM hosts were capping out at ~230 Mbps for TCP traffic (+/- 7Mbps based on quick scanning of my iperf log files per 10sec over 10 minutes) This is a limitation of Naboo (VM server) and is not a limitation of any DUTs. This was with only 1 pair communicating - full 1Gb capacity was available. This bandwidth is less than the amount possible when the NEC<->HOP tests were conducted. However, there are quite a few more VMs on Naboo the now.
     784
     785'''UDP'''[[BR]]
     786UDP testing indicated no packet-loss.
     787
     788----
     789
     790= Appendix =
     791
     792== NEC ==
     793See ["hwNecIP8800"] for reference and usage.
     794
     795=== Configuration ===
     796{{{
     797poblano# show running-config
     798#Last modified by operator at Sat Apr 17 17:58:25 2010 with version 11.1.C
     799!
     800hostname "poblano"
     801!
     802ip host poblano 128.89.91.6
     803!
     804ip domain name bbn.com
     805!
     806ip name-server 128.33.0.20
     807!
     808vlan 1
     809  name "VLAN0001"
     810!
     811vlan 22
     812  name "BBN OpenFlow 1"
     813!
     814vlan 23
     815  name "BBN OpenFlow 2"
     816!
     817vlan 24
     818  name "BBN OpenFlow Control Vlan"
     819!
     820vlan 128
     821!
     822vlan 667
     823!
     824vlan 668
     825!
     826vlan 900
     827!
     828vlan 3701
     829!
     830vlan 3702
     831!
     832vlan 3703
     833!
     834vlan 3704
     835!
     836spanning-tree disable
     837spanning-tree mode pvst
     838!
     839interface gigabitethernet 0/1
     840  media-type rj45
     841  mtu 1508
     842  switchport dot1q ethertype 88a8
     843  switchport mode trunk
     844  switchport trunk allowed vlan 128,667-668
     845!
     846interface gigabitethernet 0/2
     847  media-type rj45
     848  switchport mode access
     849  switchport access vlan 900
     850!
     851interface gigabitethernet 0/3
     852  media-type rj45
     853  switchport mode access
     854  switchport access vlan 900
     855!
     856interface gigabitethernet 0/4
     857  media-type rj45
     858  switchport mode access
     859  switchport access vlan 128
     860!
     861interface gigabitethernet 0/5
     862  mtu 1504
     863  switchport dot1q ethertype 8100
     864  switchport mode trunk
     865  switchport trunk allowed vlan 3702,3704
     866!
     867interface gigabitethernet 0/6
     868  mtu 1504
     869  switchport mode dot1q-tunnel
     870  switchport access vlan 667
     871!
     872interface gigabitethernet 0/7
     873  mtu 1504
     874  switchport dot1q ethertype 8100
     875  switchport mode trunk
     876  switchport trunk allowed vlan 3703
     877!
     878interface gigabitethernet 0/8
     879  mtu 1504
     880  switchport mode dot1q-tunnel
     881  switchport access vlan 668
     882!
     883interface gigabitethernet 0/9
     884  switchport mode dot1q-tunnel
     885  switchport access vlan 22
     886!
     887interface gigabitethernet 0/10
     888  switchport mode access
     889  switchport access vlan 3704
     890!
     891interface gigabitethernet 0/11
     892  switchport mode access
     893  switchport access vlan 3702
     894!
     895interface gigabitethernet 0/12
     896  switchport mode access
     897  switchport access vlan 3703
     898!
     899interface gigabitethernet 0/13
     900  mtu 1504
     901  switchport dot1q ethertype 8100
     902  switchport mode trunk
     903  switchport trunk allowed vlan 667
     904!
     905interface gigabitethernet 0/14
     906  switchport mode dot1q-tunnel
     907  switchport access vlan 667
     908!
     909interface gigabitethernet 0/15
     910  switchport mode access
     911  switchport access vlan 667
     912!
     913interface gigabitethernet 0/16
     914  switchport mode dot1q-tunnel
     915  switchport access vlan 23
     916!
     917interface gigabitethernet 0/17
     918  switchport mode trunk
     919  switchport trunk allowed vlan 22-23
     920!
     921interface gigabitethernet 0/18
     922  switchport mode access
     923  switchport access vlan 24
     924!
     925interface gigabitethernet 0/19
     926  switchport mode access
     927!
     928interface gigabitethernet 0/20
     929  switchport mode access
     930!
     931interface gigabitethernet 0/21
     932  switchport mode access
     933!
     934interface gigabitethernet 0/22
     935  switchport mode access
     936!
     937interface gigabitethernet 0/23
     938  switchport mode access
     939!
     940interface gigabitethernet 0/24
     941  switchport mode access
     942!
     943interface tengigabitethernet 0/25
     944  switchport mode access
     945!
     946interface tengigabitethernet 0/26
     947  switchport mode access
     948!
     949interface vlan 1
     950!
     951interface vlan 24
     952  ip address 171.67.74.60 255.255.255.240
     953  no ip proxy-arp
     954!
     955interface vlan 900
     956  ip address 128.89.91.6 255.255.255.128
     957!
     958ip route 0.0.0.0 0.0.0.0 128.89.91.1
     959!
     960line vty 0 2
     961!
     962ftp-server
     963!
     964ntp server 192.1.100.189
     965ntp server 192.1.249.10
     966!
     967poblano#   
     968
     969}}}
     970
     971=== Useful Commands ===
     972The following are some notes taken while learning the NEC switch syntax:
     973See ["hwNecIP8800"] for more discussion.
     974
     975'''Getting started'''
     976 * login: operator
     977
     978'''Administrative commands'''
     979Enable mode (necessary to do just about anything and doesn’t prompt for a password)
     980{{{
     981enable 
     982}}}
     983enter configuration mode
     984{{{
     985configure       Enter configuration mode
     986(When making configuration changes, the console prints a "!" character to indicate there are unsaved changes...)
     987}}}
     988Password management
     989{{{
     990clear password <username>  #Clear the user's password. 
     991                                                     #The password utility does not allow setting a NULL password
     992                                                     #use this command to clear it
     993password <username>          #Change a user's password - defaults to the currently logged-in user
     994}}}
     995
     996'''config (mode)'''
     997{{{
     998save    Save current configuration – look for the “!” characters!
     999vlan [vlan number]      Activate the specified VLAN.  No parameters assigned, just the entry is available to be used elsewhere...
     1000interface gig eth 0/1   Select the interface.  It's really "interface gigabitethernet 0/1" but it allows abbreviations when they are non-ambiguous...
     1001interface vlan [vlan id]        Select the vlan to configure.  The only (useful) thing I've found is the ability to associate a VLAN with an IP address and THAT was only useful to define the HOME interface of the device...
     1002media [rj45/sfp]        While configuring an interface.  Ports 1-4 are dual-option, RJ-45 is ethernet, SFP is the fiber port.  One or the other is enabled...
     1003switch dot1q ethertype 8a88     Switches the ethertype announced between 802/1ad (“tunnel”) and 802.1q mode on this interface.
     1004}}}
     1005
     1006----
     1007
     1008== HP ==
     1009
     1010See ["hwHpProcurve6600"] for reference and usage.
     1011
     1012=== Current Configuration ===
     1013'''NOTE''' the actual password for the HP has been replaced with XXXXX for display. If you intend on using this output as a configuration you must replace XXXXX with the appropriate password.
     1014{{{
     1015habanero# show running-config
     1016
     1017Running configuration:
     1018
     1019; J9452A Configuration Editor; Created on release #K.14.53o
     1020
     1021hostname "habanero"
     1022max-vlans 2000
     1023module 2 type J94yyA
     1024module 3 type J94zzA
     1025module 5 type J94wwA
     1026module 6 type J94wwA
     1027no stack
     1028interface 1
     1029   unknown-vlans Disable
     1030exit
     1031interface 4
     1032   unknown-vlans Disable
     1033exit
     1034interface 6
     1035   unknown-vlans Disable
     1036exit
     1037interface 8
     1038   unknown-vlans Disable
     1039exit
     1040ip default-gateway 128.89.91.1
     1041vlan 1
     1042   name "DEFAULT_VLAN"
     1043   untagged 9,13-48,49-50,51-52
     1044   no untagged 1-8,10-12
     1045   no ip address
     1046   exit
     1047vlan 3702
     1048   name "VLAN3702"
     1049   untagged 11
     1050   tagged 5
     1051   no ip address
     1052   jumbo
     1053   exit
     1054vlan 3703
     1055   name "VLAN3703"
     1056   untagged 12
     1057   tagged 7
     1058   no ip address
     1059   jumbo
     1060   exit
     1061vlan 3704
     1062   name "VLAN3704"
     1063   untagged 10
     1064   tagged 5
     1065   no ip address
     1066   jumbo
     1067   exit
     1068vlan 900
     1069   name "VLAN900"
     1070   untagged 2-3
     1071   ip address 128.89.91.7 255.255.255.128
     1072   exit
     1073qinq mixedvlan
     1074svlan 128
     1075   name "VLAN128"
     1076   tagged 1
     1077   untagged 4
     1078   exit
     1079svlan 667
     1080   name "VLAN667"
     1081   tagged 1
     1082   untagged 6
     1083   exit
     1084svlan 668
     1085   name "VLAN668"
     1086   tagged 1
     1087   untagged 8
     1088   exit
     1089jumbo ip-mtu 1508
     1090jumbo max-frame-size 1526
     1091sntp server priority 1 192.1.249.10 3
     1092ip ssh filetransfer
     1093snmp-server community "public" unrestricted
     1094oobm
     1095   ip address dhcp-bootp
     1096   exit
     1097no tftp client
     1098no tftp server
     1099no autorun
     1100password XXXXX
     1101}}}
     1102
     1103=== Useful Commands ===
     1104HP ProCurve 6600 Useful Commands
     1105The following are some notes taken while learning the HP switch syntax:
     1106(no login username)
     1107Enters "setup" screen to set things like the name (habanero), IP address and netmask:
     1108{{{
     1109setup   
     1110        System Name: habanero
     1111        Default Gateway: 128.89.72.1
     1112        IP Config [Manual]
     1113        Spanning Tree Enabled [No]
     1114        IP Address: 128.89.72.141
     1115        Subnet Mask: 255.255.254.0
     1116        "Save" saves and exits...
     1117}}}
     1118
     1119show relevant info
     1120{{{
     1121show [stuff]
     1122}}}
     1123
     1124IP address information
     1125{{{
     1126show ip
     1127}}}
     1128
     1129VLAN information
     1130{{{
     1131show vlan       
     1132}}}
     1133
     1134'''VLANs Can Be Tagged and Untagged'''
     1135Resets the configuration to a default state - make sure the current config is backed up before doing it!)
     1136{{{
     1137qinq mixedmode 
     1138}}}
     1139
     1140'''Other VLAN commands'''
     1141vlan refers to customer VLANs, svlan refers to service VLANs
     1142{{{
     1143vlan 3702 untagged 37           #Causes port 37 to stop tagging VLAN 3702 traffic (undoes a “vlan tag” command)
     1144svlan 667 tagged 38                     #Causes port 38 to tags traffic as SVLAN 667 (turns it into a tunneling-trunk port)
     1145int 45 unknown-vlans disable    #Disables GVRP [needed for SVLAN membership]
     1146int 45 unknown-vlans learn      #Enables GVRP
     1147int 46 qinq port-type customer-network
     1148vlan 1 no tagged 37,45,46       Removes the ports from VLAN 1 if they were configured as untagged participants
     1149vlan 1 no untagged 37,45,46     Removes the ports from VLAN 1 if they were configured as tagging participants
     1150}}}
     1151
     1152----
     1153
     1154== Cisco ==
     1155 See ["hwCiscoCatalyst3750"] for reference and usage.
     1156
     1157=== Configuration ===
     1158{{{
     1159basil#show running-config
     1160Building configuration...
     1161
     1162Current configuration : 2772 bytes
     1163!
     1164version 12.2
     1165no service pad
     1166service timestamps debug uptime
     1167service timestamps log uptime
     1168no service password-encryption
     1169!
     1170hostname basil
     1171!
     1172enable secret 5 $1$m1O6$lT/GyoO4dZOw0bvD9j/wH/
     1173enable password operator
     1174!
     1175no aaa new-model
     1176system mtu routing 1500
     1177ip subnet-zero
     1178!
     1179vtp mode transparent
     1180!
     1181no file verify auto
     1182!
     1183spanning-tree mode pvst
     1184spanning-tree extend system-id
     1185no spanning-tree vlan 1,128,667-668,900,3702-3704
     1186!         
     1187!
     1188!
     1189vlan internal allocation policy ascending
     1190!
     1191vlan 128,667-668,900,3702-3704
     1192!
     1193!
     1194interface FastEthernet1/0/1
     1195!
     1196interface FastEthernet1/0/2
     1197 switchport access vlan 900
     1198 switchport mode access
     1199!
     1200interface FastEthernet1/0/3
     1201 switchport access vlan 900
     1202 switchport mode access
     1203!
     1204interface FastEthernet1/0/4
     1205 switchport access vlan 128
     1206 switchport mode access
     1207!
     1208interface FastEthernet1/0/5
     1209 switchport trunk encapsulation dot1q
     1210 switchport trunk allowed vlan 3702,3704
     1211 switchport mode trunk
     1212 switchport nonegotiate
     1213!
     1214interface FastEthernet1/0/6
     1215 switchport access vlan 667
     1216 switchport mode dot1q-tunnel
     1217 no cdp enable
     1218!
     1219interface FastEthernet1/0/7
     1220 switchport trunk encapsulation dot1q
     1221 switchport trunk allowed vlan 3703
     1222 switchport mode trunk
     1223 switchport nonegotiate
     1224!
     1225interface FastEthernet1/0/8
     1226 switchport access vlan 668
     1227 switchport mode dot1q-tunnel
     1228 no cdp enable
     1229!
     1230interface FastEthernet1/0/9
     1231!
     1232interface FastEthernet1/0/10
     1233 switchport access vlan 3704
     1234 switchport mode access
     1235!
     1236interface FastEthernet1/0/11
     1237 switchport access vlan 3702
     1238 switchport mode access
     1239!
     1240interface FastEthernet1/0/12
     1241 switchport access vlan 3703
     1242 switchport mode access
     1243!
     1244interface FastEthernet1/0/13
     1245 switchport trunk encapsulation dot1q
     1246 switchport trunk allowed vlan 667
     1247 switchport mode trunk
     1248 switchport nonegotiate
     1249!
     1250interface FastEthernet1/0/14
     1251 switchport access vlan 667
     1252 switchport mode dot1q-tunnel
     1253 no cdp enable
     1254!
     1255interface FastEthernet1/0/15
     1256 switchport access vlan 667
     1257 switchport mode access
     1258!
     1259interface FastEthernet1/0/16
     1260!
     1261interface FastEthernet1/0/17
     1262!
     1263interface FastEthernet1/0/18
     1264!
     1265interface FastEthernet1/0/19
     1266!
     1267interface FastEthernet1/0/20
     1268!
     1269interface FastEthernet1/0/21
     1270!
     1271interface FastEthernet1/0/22
     1272!
     1273interface FastEthernet1/0/23
     1274!
     1275interface FastEthernet1/0/24
     1276!
     1277interface GigabitEthernet1/0/1
     1278!
     1279interface GigabitEthernet1/0/2
     1280!
     1281interface GigabitEthernet1/1/1
     1282 switchport trunk allowed vlan 128,667,668
     1283 switchport mode trunk
     1284 switchport nonegotiate
     1285 switchport trunk dot1q ethertype 88A8
     1286 speed auto 1000
     1287 no cdp enable
     1288!
     1289interface GigabitEthernet1/1/2
     1290 speed auto 1000
     1291!
     1292interface Vlan1
     1293 no ip address
     1294!
     1295interface Vlan900
     1296 ip address 128.89.91.8 255.255.255.128
     1297!
     1298ip classless
     1299ip http server
     1300!
     1301!
     1302!
     1303!
     1304!
     1305control-plane
     1306!
     1307!
     1308line con 0
     1309 exec-timeout 0 0
     1310line vty 0 4
     1311 password operator
     1312 login
     1313line vty 5 15
     1314 password operator
     1315 login
     1316!
     1317end
     1318}}}
     1319=== Useful Commands ===
     1320
     1321----
     1322
     1323== Related Wiki Pages ==
     1324 * OpsSwitchConfig - guide for configuring switches for use in lab network
     1325 * OpsNumbering - Various configuration paramters, IP dresses, gateways, etc.
     1326
     1327== Related Tickets ==
     1328 * #333 - Initial NEC  (and later HP) configuration.
     1329 * #533 - Initial exploration of QinQ support for Cisco switch.
     1330 * #501 - QinQ report for QinQ capabilities of NEC switch (depends on this and the performance testing). Outlines Report.
     1331 * #535 - QinQ interoperability testing (this document).
     1332 * #539 - Install NEC OpenFlow Firmware.
     1333 * #456 - Install HP OpenFlow Firmware.
     1334 * #506 - Internal network configuration for switch management IPs and host VMS for testing.
     1335 * #537 - Configuring switches for internal network management access.