-
Notifications
You must be signed in to change notification settings - Fork 5
TestCase Description
TestCases:
-
PktInPerPort : Packet_in per port Check if packet_in message goes to expected controller depending on which switch port it came from .
-
PktInPerSrcMac: Packet_in per source MAC address Check if packet_in message goes to expected controller depending on which slice the source MAC address of the packet belongs to In this test, packets come from a shared port for both two slices .
-
Echo: Echo_request and echo_reply Check if echo_request is terminated by FlowVisor and echo_reply comes back from it (not from target switch or controller)
-
PortStatus: Port_status Check if port_status from switch goes to expected controller depending on which switch port it came from .
-
PaktOutCorrect: Packet_out with packet within slice conditions Check packet_out from a controller goes to switch if the packet matches the conditions of slice
-
PaktOutError: Packet_out with packet out of slice conditions Check controller gets error message when throwing packet_out if the packet doesn't match the conditions of slice In this test, source MAC address doesn't match
-
PktOutFlood: Packet_out with flood port Check that packet_out to flood port from controller is modified and FlowVisor only specifies the ports each slice has
-
PktOutShort: Packet_out with short packet Check that Packet_out which has short size packet can go through FlowVisor to switch
-
PktOutBufId: Packet_out with specific buffer_id Check that Packet_out using buffer_id of packet_in goes to switch Check only the controller which has received the packet_in can perform this packet_out
-
Vendor: Vendor message Check if vendor message goes straight to switch
-
PortStats: Port_stats request Check if port_stats request message goes straight to switch
-
DataLayerSourceAction: Send Flow_mod message to change the dl_src and see if the dl_src to which it is changed is in the expected slice.
-
DataLayerSourceError: Send Flow_mod message to change the dl_src and see if the dl_src to which it is changed is in the expected slice. Error should be thrown when the new dl_src is not in the slice.
-
DataLayerDestinationAction: Send Flow_mod message to change the dl_dst and see if the dl_dst to which it is changed is in the expected slice.
-
DataLayerDestinationError: Send Flow_mod message to change the dl_dst and see if the dl_dst to which it is changed is in the expected slice. Error should be thrown when the new dl_dst is not in the slice.
-
NetLayerSourceAction: Send Flow_mod message to change the nw_src and see if the nw_src to which it is changed is in the expected slice.
-
NetLayerSourceError: Send Flow_mod message to change the nw_src and see if the nw_src to which it is changed is in the expected slice. Error should be thrown when the new nw_src is not in the slice.
-
NetLayerDestinationAction: Send Flow_mod message to change the nw_dst and see if the nw_dst to which it is changed is in the expected slice.
-
NetLayerDestinationError: Send Flow_mod message to change the nw_dst and see if the nw_dst to which it is changed is in the expected slice. Error should be thrown when the new nw_dst is not in the slice.
-
NetLayerTOSAction: Send Flow_mod message to change the nw_tos and see if the nw_tos to which it is changed is in the expected slice.
-
NetLayerTOSError: Send Flow_mod message to change the nw_tos and see if the nw_tos to which it is changed is in the expected slice. Error should be thrown when the new nw_tos is not in the slice.
-
TransportLayerSourceAction: Send Flow_mod message to change the tp_src and see if the tp_src to which it is changed is in the expected slice.
-
TransportLayerSourceError: Send Flow_mod message to change the tp_src and see if the tp_src to which it is changed is in the expected slice. Error should be thrown when the new tp_src is not in the slice.
-
TransportLayerDestinationAction: Send Flow_mod message to change the tp_dst and see if the tp_dst to which it is changed is in the expected slice.
-
TransportLayerDestinationError: Send Flow_mod message to change the tp_dst and see if the tp_dst to which it is changed is in the expected slice. Error should be thrown when the new tp_dst is not in the slice.
-
VlanIdAction: Send Flow_mod message to change the dl_vlan and see if the dl_vlan to which it is changed is in the expected slice.
-
VlanIdError: Send Flow_mod message to change the dl_vlan and see if the dl_vlan to which it is changed is in the expected slice. Error should be thrown when the new dl_vlan is not in the slice.
-
VlanPrioAction: Send Flow_mod message to change the dl_vpcp and see if the dl_vpcp to which it is changed is in the expected slice.
-
VlanPrioError: Send Flow_mod message to change the dl_vpcp and see if the dl_vpcp to which it is changed is in the expected slice. Error should be thrown when the new dl_vpcp is not in the slice.
-
StripVlanAction: Send Flow_mod message to strip the dl_vlan and see if the dl_vlan to be stripped is in the expected slice.
-
StripVlanError: Send Flow_mod message to strip the dl_vlan and see if the dl_vlan to be stripped is in the expected slice. Error should be thrown when the to be stripped dl_vlan is not in the slice.
-
Ping: Ping and pong test . Check if FlowVisor receives ping from API client and sends back pong to it .
-
ListFlowSpace: List_flow_space and response Check if FlowVisor receives listFlowSpace from API client and sends back the correct response.
-
ListDevices: List_devices and response Check if FlowVisor receives listDevices from API client and sends back the correct response.
-
GetLinks: Get_links and response Check if FlowVisor receives getLinks from API client and sends back the correct number of links
-
ChangeFlowSpace: Change_flow_space and response Check if FlowVisor receives changeFlowSpace from API client without error
-
CreateSlice: Create_slice and verify Check if FlowVisor receives and performs createSlice Check FlowVisor refuses to create/change it when illegal conditions .
-
DeleteSlice: Delete_slice Check if FlowVisor receives createSlice and check it is deleted with counting the number of slices using listFlowSpace
-
SliceOwner: API command exchange as a slice owner Check if API client can connect with FlowVisor as a slice owner Perform flow_space related commands and verify the response
-
FlowModArp: Send flow_mod message with arp matching. This should be transparent to switch.
-
DelSlice: Delete_slice and check the number of remaining slices It spawns flowvisor with two slices, spawns several switches, deletes both slices and check the number of remaining slices .
-
PktIn2Disconn: Packet_in to disconnected controller . When FlowVisor has received packet_in to disconnected controller, check it discards it and send FlowMod with drop to the switch In this test, it sends pkt_in from switch to connected controller and checks that it is received . Then it sends pkt_in to not-connected controller and checks FlowVisor sends flow_mod_drop msg to switch .
-
Lldp2nobody: LLDP from switch to nobody Check that un-trailered LLDP message from switch goes to controller without modification.
-
FeaturesReply: Features_request and features_reply with flood port Even if switch sends back information about all of its ports, FlowVisor should only send controller the information about the ports within the slice rule
-
PktOutFlood: Packet_out to flood port Packet_out with Flood should be expanded to the ports owned by the slice, if a slice has only portion of the switch ports.
-
PktOutNoFloodPort: Packet_out to flood port Set one port in slice to NO_FLOOD, so the expansion should be to all ports except that one
-
TrackOff: Flow_mod without tracking Send flowmod messages and check flowdb status . It should not be updated since tracking is off in this test.
-
TrackOn: Flow_mod with tracking Send flowmod messages and check flowdb status . It should be updated since tracking is on in this test.
-
ExpandNot: Send a flowmod from the controller to the switch without wildcarding. Check if the appropriate switch receives the flow mod without any expansion of the rules by flowvisor onto the switches.
-
Expand: Send a flowmod from the controller to the switch with the match field wildcarded. The flowmod should get expanded and applied on the appropriate switches.
-
FlowStats: On receiving the flowStatsReq, flowVisor sould send back the flowStatsReply pertaining to that slice only.
-
FlowStatFragments: When the switch sends the FlowStatsResponse in segments with the 'MORE_FLAG' set, FV should collect all the response and send them.
-
FlowStatsSpecific: User request a specific flow entry(with a particular match) as stats and receives them from FlowVisor.
-
AggStats: On receiving the AggStatsReq, flowVisor sould send back the AggStatsReply pertaining to that slice only.
-
AggStatsSpecific: User request a specific aggregate flow entry(with a particular match) as stats and receives them from FlowVisor.
-
PktOutInport: Packet_out to flood port with ingress port mentioned. Check if FlowVisor expands the message so that it can exclude ingress_port from the message when it sends it to switch.
-
AddPort: Port_status with adding a port. When switch sends port_status with 'add port',check if controller which has all the switch ports can receive it while controller which has only specific ports cannot.
-
RmPortApi: ChangeFlowSpace with Remove via API Remove a port from flow space using API. Check if the removed port is now invisible
-
EnqueueNoQueue: Enqueue Action Check if enqueue action is rejected, if the queue_id is not in the slice.
-
EnqueueQueue: Enqueue Action Check is enqueue action is passed if the queue_id is in the slice.
-
EnqueueForce: Enqueue Action If the flowspace entries forces a queue then check that the output action is replaced by the enqueue action.
-
QueueConfig: Push QueueConfigRequest. If for a port, that is not in the slice verify that we get an error. If for a port, that is in the slice, check that we get a reply appropriately pruned by the queues defined in the slice.
-
PktInPing: Pakcet_in with ping as a packet Check if controller gets it when the packet inside packet_in matches its flow space
-
BrokenFlowMod: Flow_mod with misaligned fields When controller sends misaligned flow_mod, FlowVisor should reject it and send back error message with permission_error
-
PktOutLldp: Packet_out with LLDP packet Check that when controller sends a valid LLDP packet, FlowVisor adds 'trailer' before is sends it to switch.
-
LldpErr1: LLDP-ish irregular message and its error response Check that even if the packet in packet_out is LLDP-ish packet, if the dl_type is different send back error message to controller The send-back error message should be OFPED_BAD_ACTION, OFPBAC_EPERM
-
LldpErr2: LLDP-ish irregular message and its error response Check that even if the packet in packet_out is LLDP-ish packet and even if the dl_type is different, if the buffer_id is incorrect, send back error message to controller The send-back error message should be OFPED_BAD_REQUEST, OFPBRC_BUFFER_UNKNOWN
-
Lldp2nobody: LLDP from switch to nobody Check that un-trailered LLDP message from switch goes to controller without modification.
-
RateLimit: Test Global slice limit. After the maximum number of rules have been installed, FlowVisor should push an error back to the controller.
-
EchoPayLoad: Echo_request with Payload Check if FlowVisor pass the echo_request with payload
-
FeatReqErr: Features_request and its error_reply First, make up a features_request and exchange error message This test is to check whether Flowvisor's XID mapping works.
-
FlowModFail: Flow_mod to erase all and its error_reply Send a 'flow_mod erase all' and FlowVisor expands it so that it can exclude non-matching conditions. Assume it causes an error and check whether these message exchange are successful. In this test, the matching conditions are ports and dl_src.
-
OldOFVer: Echo_request with old OpenFlow version When controller sends echo_request with old OpenFlow version, check if it gets echo_reply with current OpenFlow version (FlowVisor terminates echo message)
-
Pkt2DelSlice: Packet_in to dynamically deleted slice After deleting a slice, test to see that the controller cannot receive packet_in from switch via FlowVisor
-
PortStats: Port_stats_request Check if switch gets the same port_stats message as controller has issued
-
QueueStats: Queue_stats_request Check if switch gets the same queue_stats message as controller has issued
-
DescStats: Desc_stats_request and desc_stats_reply Check if desc_stats_request goes from controller to switch, and check desc_Stats_reply comes back from switch to controller.
-
TableStats: Table_stats request and reply Check if table_stats_request goes to switch through FlowVisor. Check if table_stats_reply goes to controller through FlowVisor.
-
NoVlan1: Non Vlan packet_in when vlan matching is in the slice rules A flowspace rule specifying a vlan id to controller 0 is added to flowvisor and there is no vlan id match attached to controller1. When a packet_in with no vlan id comes to flowvisor, check if it doesn't match the slice with vlan, it should be sent to controller1.
-
NoVlan2: Non Vlan packet_in when vlan matching is in the slice rules, same test case as above but with different match set. A flowspace rule specifying a vlan id to controller 0 is added to flowvisor and there is no vlan id match attached to controller1. When a packet_in with no vlan id comes to flowvisor, check if it doesn't match the slice with vlan , it should be sent to controller1.
-
Vlan1: Vlan packet_in when vlan matching is in the slice rules Check if the vlan id of the packet_in doesn't match to what is specified in the flowspace rule, it should be sent to a different slice. Here, a flowspace rule specifying a vlan id to controller 0 is added to flowvisor and there is no vlan id match attached to controller1. In this test, the packet_in with a differnet vlan_id than that specified in the flowspace should go to controller1.
-
Vlan2: When the packet_in has the same vlan id as mentioned in the flowspace of flowvisor, it should go to the respective controller. In this case it should go to controller0.
-
Internet2_Vlans: Internet2 guys had claimed that FV overwrites their inport when using vlans with FV rules which wildcard the inport. This test checks whether pushing a flow mod with a vlan tag and an inport is overwritten erroneously by flowvisor.