Changes between Version 5 and Version 6 of OpenFlow/Slicer/TestPlan


Ignore:
Timestamp:
11/05/14 15:46:49 (5 years ago)
Author:
tupty@bbn.com
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OpenFlow/Slicer/TestPlan

    v5 v6  
    2525 
    2626= Slicer Test Cases =
     27== OF-OPR-SLCR-FN Testing Scenario: ==
    2728
    28 Suggested grouping for functional test cases:
    29  - VLAN Handling and Port Allocation (cover OF-OPR-SLCR-FN-001, OF-OPR-SLCR-FN-014)
    30  - Data Plane Traffic handling and isolation (cover OF-OPR-SLCR-FN-002)
    31  - Control Traffic handling (OF-OPR-SLCR-FN-003)(OF-OPR-SLCR-FN-009)
    32  - GENI AM API Support (OF-OPR-SLCR-FN-005)
    33  - OpenFlow 1.0 Support (OF-OPR-SLCR-FN-004)(OF-OPR-SLCR-FN-006)
    34  - Slicer Configuration (OF-OPR-SLCR-FN-007)
    35  - Slicer Interoperability (OF-OPR-SLCR-FN-010, OF-OPR-SLCR-FN-011, OF-OPR-SLCR-FN-012, OF-OPR-SLCR-FN-013)
     29=== Step 1: Setup ===
     30 * Reserve 5 slices (using the add_slice function) [005-a]:
     31  * Slice 'samevlan' with two ports on a single switch, each on the same VLAN.  Ensure the slicer state is accurate. [001-a]
     32  * Slice 'diffvlans' with two ports on the same switch, each associated with a different VLAN.  Ensure the slicer state is accurate. [001-a]
     33  * Slice 'tenvlans' with 10 VLANs spanning across 10 switches.  Ensure the slicer state is accurate. [001-a]
     34  * Slice 'untaggedports' with two untagged ports on a single switch (doesn't need to be possible to pass).  Ensure the slicer state is accurate. [001-b]
     35  * Slice 'fullports' with two full ports on a single switch (doesn't need to be possible to pass).  Ensure the slicer state is accurate. [001-c]
     36 * Add a hosts attached to each port with the appropriate data plane VLAN connections for 'samevlan', 'diffvlans', and hosts for at least two of the VLANs for 'tenvlans'
     37 * Add two hosts which are on the same VLAN but do not correspond to an existing slice.
    3638
    37  '' Note1: Error handling can be verified across each of the above (OF-OPR-SLCR-FN-008)''
     39=== Step 2: Establish that basic connectivity works ===
     40 * Run a modified pox forwarding.l2_learning controller for 'samevlan' that installs a send-to-controller rule for unmatched traffic within the VLAN.
     41 * Start a packet capture on the slicer facing both the switch and the controller.
     42 * Using a host that is not in a slice, send traffic on the data plane and make sure it never reaches the other host. [002] [004-a] [004-c]
     43 * Using 'samevlan', send data plane traffic between the two hosts.  Ensure that it gets through to the two hosts in 'samevlan', but not to the hosts in 'diffvlans'. [001] [003]
     44 * Stop the packet capture, and check for the following:
     45  * Check that traffic from the hosts that don't belong to a slice never shows up at the slicer. [004-a] [004-c]
     46  * Check that traffic from the slicer destined for a controller is only sent to a single controller [004-b] [004-d]
     47  * Check that packet-ins from the switch have a VLAN tag, but packet-ins going to the controller do not.  Also ensure that nothing else is different. [014-b] [009]
     48  * Check that packet-outs from the controller have no VLAN tag, but packet-outs going to the switch do.  Also ensure that nothing else is different. [014-a] [009]
     49  * Traffic sent to the OFPP_ALL port from the controller is funnelled into the set of ports in the slice by the slicer. [003-c]
    3850
    39 Suggested grouping for operational test cases:
    40  - Slicer Operations (run multiple slicers with multiple slices with all available substrates) (OF-OPR-SLCR-OP-001, OF-OPR-SLCR-OP-003, OF-OPR-SLCR-OP-004, OF-OPR-SLCR-OP-005, OF-OPR-SLCR-OP-006, OF-OPR-SLCR-OP-007, OF-OPR-SLCR-OP-008, OF-OPR-SLCR-OP-009)
    41  - Slicer Monitoring (OF-OPR-SLCR-OP-002)
     51=== Step 3: Test for VLAN enforcement and translation ===
     52 * Stop the pox forwarding.l2_learning controller for 'samevlan'.  Start a floodlight instance in its place with static flow pusher enabled.
     53 * Push a flow that matches one of the ports and VLANs, and tries to do a VLAN rewrite to a different VLAN ID.  Ensure this gets rejected by the slicer, and an error message is returned. [003-b] [004-e] [008-a]
     54 * Push a flow that matches one of the ports and VLANs, and tries to do a strip-VLAN action.  Ensure this gets rejected by the slicer, and an error message is returned. [003-a] [004-e] [008-a]
     55 * Run a modified pox forwarding.l2_learning controller for 'diffvlans' that installs a send-to-controller rule for unmatched traffic within the VLAN.
     56 * Send ping traffic between the 'diffvlans' hosts and make sure it gets exchanged properly. [014-d]
    4257
    43  '' Note 2: The Slicer Operations test case is complex, may be consider splipping up into smaller test cases?''
     58=== Step 4: Test for OF functionality ===
     59 * Start a packet capture on the slicer facing both the switch and the controller.
     60 * Push a flow_stats request from the controller.
     61 * Stop the packet capture, and check for the following: the flow_stats reply only went to the controller that requested it. [004-g]
     62 * Run some OFTest checks to make sure that [004-f] and [009] are met.
     63 * Test a few synchronous messages using OFTest to make sure [006] is met.
     64 * Test that [007-a], [007-b], and [007-c] all generate error messages.
     65
     66=== Step 5: Test for stacked slicer support ===
     67 * For 'diffvlans' stop the pox forwarding.l2_learning controller.  In its place, stand up another instance of the slicer.  In this higher-level slicer, create an identical slice for 'diffvlans' (can be done manually), and point it at a new controller URL.  At that new controller URL, run an instance of floodlight forwarding with static flow pusher.  Push down a flow that matches on the slice's VLAN for the switch and forwards traffic to the controller.
     68 * Send data plane traffic between the 'diffvlans' hosts.
     69
     70=== Step 6: Test for any extra fucntionality ===
     71 * Test that any documented control plane performance isoaltion solution works as expected. [011]
     72 * Test that any documented data plane performance isoaltion solution works as expected. [012]
     73 * Test that any per-slice flow limits work as expected. [012]
     74
     75=== Step 7: Test API ===
     76 * Call dump_slices and make sure it works as expected.  Ensure it returns which slices are active and which are disabled along with however the AM identifies the slices. [005-d] [008-b] [008-c]
     77 * Call change_controller and make sure it is reflected in the slicer state [005-c]
     78 * Call update_slice if possible and report back what happens [005-e]
     79 * Call delete_slice and clean up all slices [005-b]
     80
     81== OF-OPF-SLCR-OP Testing Scenario ==
     82
     83=== Step 1: Setup ===
     84 * Clear any existing log files that the slicer may have created.
     85 * Create 10 slices named slice{1-10}.  Each slice should have a single unique VLAN ID spanning across 10 switches between two hosts.  Generate ping traffic from a host at the end of each of the slices and make sure it is working.  Leave this traffic running for the duration of this scenario. [003]
     86
     87=== Step 2: Collect monitoring data ===
     88 * Make sure there is some way to collect monitoring data for all of the slices that have been set up. [002]
     89
     90=== Step 3: Test slice operations ===
     91 * Create a new slice 'testslice', use the modified pox forwarding.l2_learning controller, and ensure that pings in the other slices continue to flow.  Ensure that this slice is added with no operator intervention. [004] [001-a]
     92 * Change the controller URL for 'testslice'.  Ensure that the change takes place with no operator intervention. [001-c]
     93 * If a slicer is capable of disabling a slice, trigger 'testslice' to get disabled.  Ensure that the slicer owner either gets notified, or that at the very least, 'dump_slices' shows that the slice is disabled.  Re-enable the slice if it was disabled. [001-d]
     94 * Disconnect the controller.  Wait for about a minute, and try sending traffic.  Ensure that it doesn't get through. [008]
     95 * Delete the slice and make sure that doing so does not require operator intervention.  Check right away and make sure all flows for that slice have been removed. [001-b] [009]
     96
     97=== Step 4: Substrate-generated traffic ===
     98 * Connect a host to the substrate that is not part of a slice, and that does not share a data plane port with the other slices.  Send a high rate of traffic out of its data plane interface and ensure that the other slices remain stable. [007]
     99
     100=== Step 5: Test logging ===
     101 * Check that a log exists for the slicer. [005]
     102 * Configure the logging to rotate on a daily basis.
     103 * Look at the entries for the log.  Any entries that exist in the default case should be reasonable.  At this point, the size of the log should also be reasonable. [006-a]
     104 * Try changing the log level while the slicer is running to the most verbose level.  Verify that the logs are showing more data. [006-b]
     105 * Set the logging back to a standard level.  Leave the setup running overnight.  In the morning, verify that the logs have been rotated, and that logging is still working. [006-c]
    44106
    45107Suggested 1 software development/support test case: