blob: 34922ccf7d73272b9e9f127e3a4fc5dcf08475be [file] [log] [blame]
Sreeju Sreedhare3fefd92019-04-02 15:57:15 -07001 *********** Conformance Test-suite ****************
2 OF-Switch-1.0.0-TestCases detailed testing methodology
3
4
5
6
7
8**** Openflow protocol messages ****
9
10
11
121. Features Request
13
14Test Description: Check features request is implemented
15
16Test mode: Automated
17Test Title: FeaturesRequest
18Ports: I (Control Plane)
19Initial State: Default (Clear switch state), Connection Setup
20Test-Field: Mandatory
21
22
23Test Notes:
24
25a) Send OFPT_FEATURES_REQUEST from controller.
26b) Verify OFPT_FEATURES_REPLY is received without errors
27
28
29
302. Configuration request
31
32Test Description: Check basic get configuration request is implemented
33
34Test mode: Automated
35Test Title: ConfigurationRequest
36Ports: I (Control Plane)
37Initial State: Default (Clear switch state), Connection Setup
38Test-Field: Mandatory
39
40
41Test Notes:
42
43a) Send OFPT_GET_CONFIG_REQUEST
44b) Verify OFPT_GET_CONFIG_REPLY is received without errors.
45
46
47
483. Modify State (ADD)
49
50Test Description: Check basic Flow ADD request is implemented
51
52Test mode: Automated
53Test Title: ModifyStateAdd
54Ports: 3 (1 Control Plane 2 dataplane)
55Initial State: Default (Clear switch state), Connection Setup
56Test-Field: Mandatory
57
58
59Test Notes:
60
61a) Send OFPT_FLOW_MOD, command = OFPFC_ADD
62b) Send ofp_table_stats request
63c) Verify that active_count=1 in the reply
64
65
66
67
684. Modify State (DELETE)
69
70Test Description: Check basic Flow Delete request is implemented
71
72Test mode: Automated
73Test Title: ModifyStateDelete
74Ports: 3 (1 Control Plane 2 dataplane)
75Initial State: Default (Clear switch state), Connection Setup
76Test-Field: Mandatory
77
78
79Test Notes:
80
81a) Send OFPT_FLOW_MOD, command = OFPFC_ADD
82b) Send ofp_table_stats request
83c) Verify that active_count=1 in the reply
84d) Send OFPT_FLOW_MOD, command = OFPFC_DELETE
85e) Send ofp_table_stats request
86f) Verify active _count=0 in the reply
87
88
89
905. Modify State (MODIFY)
91
92Test Description: Check basic Flow Modify request is implemented
93
94Test mode: Automated
95Test Title: ModifyStateModify
96Ports: 3 (1 Control Plane and 2 Dataplane)
97Initial State: Default (Clear switch state), Connection Setup
98Test-Field: Mandatory
99
100
101Test Notes:
102
103a) Send OFPT_FLOW_MOD , command = OFPFC_ADD, action A
104b) Send ofp_table_stats request, Verify active_count=1
105c) Send OFPT_FLOW_MOD , command = OFPFC_MODIFY, action A’
106d) Send Test Packet matching the flow
107e) Verify packet implements action A’
108
109
110
1116. Read State
112
113Test Description: Check basic Read State is implemented
114
115Test mode: Automated
116Test Title: ReadState
117Ports: 3 (1 Control Plane, 2 dataplane)
118Initial State: Default (Clear switch state), Connection Setup
119Test-Field: Mandatory
120
121
122Test Notes:
123
124a) Send OFPT_FLOW_MOD, command = OFPFC_ADD
125b) Create a OFPC_FLOW_STATS message and send it
126c) Verify switch replies without errors
127
128
129
1307. Send packet
131
132Test Description: Check basic Send-Packet is implemented.
133 Send-Packet: These are used by the controller to send packets out of a specified port on the switch.
134
135Test mode: Automated
136Test Title: SendPacket
137Ports: 5 (1 Control Plane, 4 Dataplane)
138Initial State: Default (Clear switch state), Connection Setup
139Test-Field: Mandatory
140
141
142Test Notes:
143
144a) Send OFPT_PACKET_OUT out message from controller to switch for every dataplane port.
145b) Verify the packet appears on the each dataplane port
146c) Verify sent packet matches the received packet
147
148
149
1508. Barrier Request
151
152Test Description: This test checks that a basic barrier request does not generate an error.
153
154Test mode: Automated
155Test Title: BarrierRequestReply
156Ports: I (Control Plane)
157Initial State: Default (Clear switch state), Connection Setup
158Test-Field: Mandatory
159
160
161Test Notes:
162
163a) Send OFPT_BARRIER_REQUEST
164c) Verify OFPT_BARRIER_REPLY is received on the control plane.
165
166
167
1689. Packet In
169
170Test Description: Check packet_in is implemented. This test just checks that non matched dataplane packets
171 generate a packet_in
172
173Test mode: Automated
174Test Title: PacketIn
175Ports: 2 (1 Control Plane and 1 Dataplane)
176Initial State: Default (Clear switch state), Connection Setup
177Test-Field: Mandatory
178
179
180Test Notes:
181
182a) Send a packet to dataplane port , without inserting a flow entry
183b) Verify a OFPT_PACKET_IN is generated on the control plane
184
185
186
18710. Hello
188
189Test Description: This test checks for basic Hello message generation with correct version field.
190
191Test mode: Automated
192Test Title: Hello
193Ports: 1 (Control Plane)
194Initial State: Default (Clear switch state), Connection Setup
195Test-Field: Mandatory
196
197
198Test Notes:
199
200a) Send OFPT_HELLO from controller to switch
201b) Verify switch also sends OFPT_HELLO message in response
202c) Verify version field in the hello message is set to Openflow version 1.0.0
203
204
205
20611. Echo
207
208Test Description: This test checks for basic Echo Reply message generation with correct version field with
209 same transaction id.
210
211Test mode: Automated
212Test Title: EchoWithoutBody
213Ports: 1 (Control Plane)
214Initial State: Default (Clear switch state), Connection setup
215Test-Field: Mandatory
216
217
218Test Notes:
219
220a) Send OFPT_ECHO_REQUEST from the controller side.
221b) Verify switch responds back with OFPT_ECHO_REPLY with same xid.
222c) Verify Openflow version in header is set to Openflow version 1.0.0.
223
224
225
226
227
228**** Detailed controller to switch messages ****
229
230
231
2321. Overlap checking
233
234Test Description: Verify that if overlap check flag is set in the flow entry and an overlapping flow is
235 inserted then an error is generated and switch refuses flow entry
236
237Test mode: Automated
238Test Title: OverlapChecking
239Ports: 3 (1 Control Plane 2 dataplane)
240Initial State: Default (Clear switch state), Connection setup
241Test-Field: Mandatory
242
243
244Test-Notes:
245
246a) Generate Flow F1--> Wildcard All
247b) Send ofp_table_stats request , verify active_count=1
248c) Generate overlapping flow F2 --> Wildcard All Except Ingress Port ( with flag OFPFF_CHECK_OVERLAP set)
249d) Verify that switch generates OFPT_ERROR msg.
250 Type: OFPET_FLOW_MOD_FAILED code : OFPFMFC_OVERLAP
251
252
253
2542. No overlap checking
255
256Test Description: Verify that without overlap check flag set, overlapping flows can be created.
257
258Test mode: Automated
259Test Title: NoOverlapchecking
260Ports: 3 (1 Control Plane, 2 Dataplane)
261Initial State: Default (Clear switch state), Connection setup
262Test-Field: Mandatory
263
264
265Test Notes:
266
267a) Generate Flow F1--> Wildcard All.
268b) Send ofp_table_stats request , verify active_count=1
269e) Generate overlapping flow F2 --> Wildcard All Except Ingress Port ( without flag OFPFF_CHECK_OVERLAP set)
270c) Send a ofp_table_stats request, verify active_count=2
271
272
273
2743. Identical flows
275
276Test Description: Verify that adding two identical flows overwrites the existing one and clears counters
277
278Test mode: Automated
279Test Title: IdenticalFlows
280Ports: 3 (1 Control Plane), (2 dataplane)
281Initial State: Default (Clear switch state), Connection setup
282Test-Field: Mandatory
283
284
285Test Notes:
286
287a) Generate Flow F1.
288b) Send ofp_table_stats request , verify active_count=1
289b) Increment counters (packet_count, byte_count) by sending a packet matching flow F1.
290C) Send ofp_flow_stats request. Verify flow counters: byte_count and packet_count
291c) Create identical flow F2
292d) Send a ofp_table_stats request, verify active_count=1
293e) Send ofp_flow_stats request. Verify flow counters: byte_count and packet_count are reset
294
295
296
2974. No table to add (Written in oftest—Need to add to conformance Test-Suites)
298
299
300
3015. Never valid port (TBD)
302
303
304
305
3066. Currently not existing port Version A and B (TBD)
307
308
309
310
3117. Emergency flow with timeout values
312
313Test Description: Timeout values are not allowed for emergency flows
314
315Test Title: EmerFlowTimeout
316Test mode: Automated
317Ports: 3 (1 control plane, 2 Dataplane)
318Initial State: Default (Clear switch state), Connection setup
319
320
321Test Notes:
322
323a) Generate a flow F with OFPFF_EMERG set in flag and timeout values assigned.
324b) Verify switch generates an OFPT_ERROR msg, Type: OFPET_FLOW_MOD_FAILED, Code OFPFMFC_BAD_EMERG_TIMEOUT
325
326
327
3288. Missing modify adds
329
330Test Description: If a modify does not match an existing flow, the flow gets added.
331
332Title: MissingModifyAdd
333Test mode: Automated
334Ports:3 (1 control plane,2 Data Plane)
335Initial State: Connection setup, Clear Switch State
336Test-Field: Mandatory
337
338
339Test Notes:
340
341a) Generate a flow-mod , command OFPC_MODIFY (Note: There should be no flows matching this flow_mod modify command)
342b) Send a ofp_table_stats request, verify active_count=1
343
344
345
346
3479. Modify changes action, preserves counters
348
349Test Description: A modified flow preserves counters
350
351Title: ModifyAction
352Test mode: Automated
353Ports: 4(1 control plane, 3 Dataplane)
354Initial State: Connection setup, Clear Switch State
355Test-Field: Mandatory
356
357
358Test Notes:
359
360a) Create a flow_mod F-1 with command OFPC_ADD, action A
361b) Send a test Packet matching the flow
362c) Send an ofp_flow_stats request, verify byte_count and packet_count
363e) Create flow_mod with command OFPC_MODIFY ,action A’ and modify action of flow F-1
364f) Send a ofp_flow_stats request, verify flow counters are preserved
365g) Send test packet, verify it implements action A’
366
367
368
36910. Strict Modify changes action, preserves counters
370
371Test Description: Strict Modify Flow also changes action preserves counters
372
373Title: StrictModifyAction
374Test mode: Automated
375Ports: 4(1 control plane, 3 Dataplane)
376Initial State: Connection setup, Clear Switch State
377Test-Field: Mandatory
378
379
380Test Notes:
381
382a) Create two overlapping flows: F --> Match on all, except one wildcarded (src address). Action A. Priority=100
383 F’ --> Match on ingress_port = port [0], wildcarded rest. Action A. Priority=10
384b) Send a ofp_table_stats request, verify active_count=2
385c) Send Packet (it would have matched both the flows, since they are overlapping flows but it would match Flow-F1 as it has higher priority.)
386d) Send ofp_flow_stats request for Flow-1 and verify counters packet_count and byte_count
387e) Create flow_mod ,command OFPC_STRICT_MODIFY,match on all except src address ,priority 100 action A’
388f) Send test packet , verify action is modified
389g) Send ofp_flow_stats request, verify counters are preserved.
390
391
392
393
39411. Delete non existing flow
395
396Test Description: Request deletion of non-existing flow
397
398Title: DeleteNonexistingFlow
399Test mode: Automated
400Ports: 1(1 control plane)
401Initial State: Connection setup, Clear Switch State
402Test-Field: Mandatory
403
404
405Test Notes:
406
407a) Issue a delete command, with no flows inserted
408b) Make sure no error is generated on the control plane
409
410
411
41212. Delete flows with and without removed message
413
414Test Description: Check deletion of flows happens and generates messages as configured. i.e. if ‘Send Flow removed message’Flag
415 is set in the flow entry, the flow deletion of that respective flow should generate the flow removed message,
416 vice versa also exists
417
418Test Title: SendFlowRem
419Test mode: Automated
420Ports: 3 (1 control plane, 2 Dataplane)
421Initial State: Connection setup, Default (clear switch state)
422Test-Field: Mandatory
423
424
425Test Notes:
426
427a) Generate a flow F without OFPFF_SEND_FLOW_REM flag set
428b) Issue a delete command OFPFC_DELETE
429c) Verify that OFPT_FLOW_REMOVED message is not generated.
430c) Generate a flow F’ with OFPFF_SEND_FLOW_REM flag set
431d) Issue a delete command OFPFC_DELETE
432e) Verify that OFPT_FLOW_REMOVED message is generated
433
434
435
43613. Delete emergency flow
437
438Test Description: Delete emergency flow and verify no message is generated.An emergency flow deletion will not generate
439 flow-removed messages even if ‘Send Flow removed message’ flag was set during the emergency flow entry.
440
441
442Title: DeleteEmerFlow
443Test mode: Automated
444Ports: 3 (1 control plane, 2 Dataplane)
445Initial State: Connection setup, Clear Switch State (default)
446
447
448Test-Notes:
449
450a) Insert a flow with OFPFF_EMERG flag set.
451b) Delete the added flow with OFPFF_SEND_FLOW_REM flag set
452c) Test successful if no flow removed message is generated.
453
454
455
45614. Delete and verify strict and non-strict
457
458Test Description: Delete and verify strict and non-strict behaviors
459
460This test compares the behavior of delete strict and non-strict.
461Title: StrictVsNonstrict
462Test mode: Automated
463Ports: 3 (1 control plane, 2 dataplane)
464Initial State: Connection setup, Clear Switch State
465
466
467Test-Notes:
468
469a) Insert Flow F with an exact match.
470b) Issue Non-strict Delete command, verify F gets deleted.
471c) Insert F with an exact Match
472d) Issue Strict Delete Command, verify F gets deleted.
473e) Insert Flow T with match on all, except one wildcarded (say src address).
474f) Insert another flow T' with match on ingress_port, wildcarded rest.
475g) Issue Non-strict Delete ( match on ingress_port). Verify T+T' gets deleted.
476h) Insert T and T' again. Issue Strict Delete (match on ingress port), verify only T' gets deleted
477i) Insert T, add Priority P (say 100)
478j) Insert T' add priority (200).
479k) Insert T' again add priority 300 --> T”
480l) Issue Non-Strict Delete (match on ingress port). Verify T+T’+T’’ gets deleted.
481m) Insert T, T’, T’’ again, Issue Strict Delete (match on ingress_port) with priority = 200. Verify only T’ gets deleted
482
483
484
48515. Delete flows with constraint out_port
486
487Test Description: Delete flows filtered by action output.DELETE and DELETE STRICT commands can be optionally filtered by output port.
488 If the out_port field contains a value other than OFPP_NONE, it introduces a constraint when matching.
489 This constraint is that the rule must contain an output action directed at that port.
490
491Title: Outport1
492Test mode: Automated
493Ports: 3 (1 control plane, 2 Dataplanes)
494Initial State: Connection setup, Clear Switch State
495Test-Field: Mandatory
496
497
498Test-Notes:
499
500a) Insert a flow F with output action = port x
501b) Send a delete command matching flow F ,but out_port =port y
502c) Send a table_stats request , verify no flow gets deleted i.e. active_count=1
503d) Send a delete command matching flow F ,outport = port x
504e) Send a table_stats request, verify flow F gets deleted.
505
506
507
50816. Add, modify flows with constraint output
509
510Test Description: Add, modify flows with outport set. This field is ignored by ADD, MODIFY, and MODIFY STRICT messages.
511
512Title: Outport2
513Test mode: Automated
514Ports: 4 (1 control plane, 3 Data planes)
515Initial State: Connection setup, Clear Switch State
516Test-Field: Mandatory
517
518Test-Notes:
519
520a) Insert a flow F with action A (output --> port x) , but out_port field in the flow mod set as port y
521b) Send Table_Stats_Request, Verify Flow gets inserted. ( Flow add ignores out_port field)
522c) Modify the action in flow F , action A’ ( output -->port z ), but out_port field in the flow mod set as port y
523d) Send test packet matching the flow F
524e) Verify packet implements action A’ (flow modify ignores out_port field)
525
526
527
52817. Verify that idle timeout is implemented
529
530Test Description: Verify that idle timeout is implemented
531
532Title: IdleTimeout
533Test mode: Automated
534Ports: 3 (1 control plane, 2 Dataplanes)
535Initial State: Connection setup, Clear Switch State
536Test-Field: Mandatory
537
538
539Test-Notes:
540
541a) Add a flow with idle timeout set and with OFPP_SEND_FLOW_REM bit set
542b) Verify flow removed message is received.
543c) Verify flow removed reason was idle_timeout
544d) Verify the duration_sec field is 1 sec
545
546
547
54818. Verify that hard timeout is implemented
549
550Test Description: Verify that hard timeout is implemented
551
552Title: HardTimeout
553Test mode: Automated
554Ports: 3 (1 control plane, 2 Dataplanes)
555Initial State: Connection setup, Clear Switch State
556Test-Field: Mandatory
557
558
559Test-Notes:
560
561a) Add a flow with hard timeout =1 set and with OFPP_SEND_FLOW_REM bit set
562b) Verify flow removed message is received.
563c) Verify flow removed reason was hard_timeout
564d) Verify the duration_sec field is 1 sec
565
566
567
56819. Verify that messages are generated as expected
569
570Test Description: Verify that Flow removed messages are generated as expected
571 /* Since “flow removed messages being generated when flag is set” is already tested in the above tests
572 So here, we test the vice-versa condition.*/
573
574Title: FlowTimeout
575Test mode: Automated
576Ports: 3 (1control plane, 1dataplane)
577Initial State: Connection setup, Clear Switch State
578Test-Field: Mandatory
579
580
581Test-Notes:
582
583a) Generate and install a flow with idle_timeout = 1 set no OFPFF_SEND_FLOW_REM flag set.
584b) Verify no flow removed message is received.
585c) Send table_stats_request message and verify active_count=0
586
587
588
589
590
591*** Actions ***
592
593
594
5951. No Action drops packet
596
597Test Description: If no forward actions are present, the packet is dropped.
598
599Required Action: Drop.
600A flow-entry with no specified action indicates that all matching packets should be dropped.
601Test mode: Automated
602Test Title: NoAction
603Ports: 3 (1 Control Plane 2 Dataplane)
604Initial State: Default (Clear switch state), Connection setup
605Test-Field: Mandatory
606
607
608Test Notes:
609
610a) Send Flow mod message without any action specified
611b) Send N packets matching the flow
612c) Verify packets are not received on any of the dataplane ports
613d) Verify packets are not even sent to the controller
614
615
616
6172. Get supported actions from switch
618
619Test Description: Get the supported actions from switch and make sanity checks.
620 /*When connecting to the controller, a switch indicate which of the “Optional Actions” it supports*/
621
622Test mode: Automated
623Test Title: Announcement
624Ports: 1 (Control Plane)
625Initial State: Default (Clear switch state), Connection setup
626Test-Field: Mandatory
627
628
629Test Notes:
630
631a) Send features_request .
632b) Verify response is OFPT_FEATURES_REPLY
633c) Verify reply has supported action list specified
634
635
636
6373. Forward All
638
639Test Description: Packet is sent to all dataplane ports except ingress port when output action.port = OFPP_ALL
640
641Test mode: Automated
642Test Title: ForwardAll
643Ports: 3 (1 Control Plane 2 Dataplane)
644Initial State: Default (Clear switch state), Connection setup
645Test-Field: Mandatory
646
647
648Test Notes:
649
650a) Install a flow with output action.port = OFPP_ALL.
651b) Verify packets are forwarded to all ports except ingress port.
652
653
654
6554. Forward Controller
656
657Test Description: Packet is sent to controller output.port = OFPP_CONTROLLER
658
659Test mode: Automated
660Test Title: ForwardController
661Ports: 3 (1 Control Plane 2 Dataplane)
662Initial State: Default (Clear switch state), Connection setup
663Test-Field: Mandatory
664
665
666Test Notes:
667
668a) Insert a flow with action output port = OFPP_CONTROLLER
669b) Send packets matching the flow
670c) Verify packet received on the control plane as a packet_in message
671
672
673
6745. Forward Local (TBD – Verification of packet being received at local networking stack)
675
676Test Description: Packet is sent to switch’s local networking stack if output.port = OFPP_LOCAL
677
678Test mode: Automated
679Test Title: ForwardLocal
680Ports: 3 (1 Control Plane 2 Dataplane)
681Initial State: Default (Clear switch state), Connection setup
682Test-Field: Mandatory
683
684
685Test Notes:
686
687a) Insert a flow with action output port = OFPP_LOCAL
688b) Send packets matching the flow
689c) Verify packet received in the switch’s local networking stack.
690
691
692
6936. Forward Table
694
695Test Description: Perform actions in flow table. Only for packet-out messages.
696 /*If the output action.port in the packetout message = OFP.TABLE, then the packet implements the action
697 specified in the matching flow of the FLOW-TABLE*/
698
699Test mode: Automated
700Test Title: ForwardTable
701Ports: 3 (1 Control Plane 2 Dataplane)
702Initial State: Default (Clear switch state), Connection setup
703Test-Field: Mandatory
704
705Test Notes:
706
707a) Insert a flow F with action output.port = egress_port
708b) Send a OFPT_PACKET_OUT message with out port=OFPP_TABLE matching flow F
709c) Verify packet received on egress_port (i.e packetout message implemented the action specified in the matching flow of the Table)
710
711
712
7137. Forward In Port
714
715Test Description: Packet is sent to input port if output.port = OFPP_INPORT
716
717Test mode: Automated
718Test Title: ForwardInport
719Ports: 3 (1 Control Plane 2 Dataplane)
720Initial State: Default (Clear switch state), Connection setup
721Test-Field: Mandatory
722
723Test Notes:
724
725a) Insert a flow with action output port = OFPP_INPORT
726b) Send packets matching the flow
727c) Verify packet received on all dataplane ports except for input port
728
729
730
7318. Forward Flood
732
733Test Description:Flood the packet along the minimum spanning tree, not including the incoming interface.
734 Packet is sent all the dataplane ports except the input port if output.port = OFPP_FLOOD
735
736Test mode: Automated
737Test Title: Forward_Flood
738Ports: 3 (1 Control Plane 2 Dataplane)
739Initial State: Default (Clear switch state), Connection setup
740Test-Field: Optional
741
742Test Notes:
743
744a) Insert a flow with action output port = OFPP_FLOOD
745b) Send packets matching the flow
746c) Verify packet received on all dataplane ports except for input port
747
748
749
7509. Multiple Ports -- TBD
751
752
753
754
75510. Forward Enqueue --- TBD
756
757
758
759
76011. Set VLAN Id
761
762Test Description: Attach VLAN ID to untagged packet.
763 If no VLAN is present, a new header is added with the specified VLAN ID and priority of zero.
764
765Test mode: Automated
766Test Title: AddVlanId
767Ports: 3 (1 Control Plane 2 Dataplane)
768Initial State: Default (Clear switch state), Connection setup
769Test-Field: Optional
770
771
772Test Notes:
773
774a) Insert a flow with action = OFPAT_SET_VLAN_VID , vlan_vid = x
775b) Send packet (length = 100 bytes) matching the flow
776b) Verify packet received has vlan id added to it. (I.e length of packet with vid is 104 bytes, dl_vlan_enable = True, dl_vlan= x, dl_vlan_pcp=0)
777
778
779
78012. Modify VLAN Id
781
782Test Description: Modifies Vlan Tag for a tagged packet
783 If a VLAN header already exists, the VLAN ID is replaced with the specified value
784
785Test mode: Automated
786Test Title: ModifyVlanId
787Ports: 3 (1 Control Plane 2 Dataplane)
788Initial State: Default (Clear switch state), Connection setup
789Test-Field: Optional
790
791
792Test Notes:
793a) Insert a flow with action = OFPAT_SET_VLAN_VID , vlan_vid = x
794b) Send packet (length = 100 bytes) matching the flow
795c) Verify packet received has vlan id rewritten. (I.e length of 104 bytes, dl_vlan_enable = True, dl_vlan=x)
796
797
798
79913. Add VLAN Priority to an untagged packet
800
801Test Description: Attach VLAN priority to an untagged packet.
802 Since, no VLAN ID is present; a new header is added with the specified priority and a VLAN ID of zero.\
803
804Test mode: Automated
805Test Title: VlanPrio1
806Ports: 3 (1 Control Plane 2 Dataplane)
807Initial State: Default (Clear switch state), Connection setup
808Test-Field: Optional
809
810
811Test Notes:
812
813a) Insert a flow with action = OFPAT_SET_VLAN_PCP , dl_vlan_pcp =x
814b) Send untagged packet matching the flow
815c) Verify packet received has vlan priority added to it along with a vid value of zero added by default (dl_vlan_enable , dl_vlan = 0 , dl_vlan_pcp =x )
816
817
818
81914. Rewrite existing VLAN priority
820
821Test Description: Modify VLAN priority for a tagged packet.
822
823Test mode: Automated
824Test Title: VlanPrio2
825Ports: 3 (1 Control Plane 2 Dataplane)
826Initial State: Default (Clear switch state), Connection setup
827Test-Field: Optional
828
829
830Test Notes:
831
832a) Insert a flow with action = OFPAT_SET_VLAN_PCP , dl_vlan_pcp =new_vlan_pcp
833b) Send tagged packet matching the flow (dl_vlan = old_vlan_id , dl_vlan_pcp = old_vlan_pcp)
834c) Verify packet received has vlan id added to it. (dl_vlan_enable , dl_vlan = 0 , dl_vlan_pcp = new_vlan_pcp)
835
836
837
838
83915. Modify L2 Src Address
840
841Test Description: Modify Ethernet Src Address of a packet
842
843Test mode: Automated
844Test Title: ModifyL2Src
845Ports: 3 (1 Control Plane 2 Dataplane)
846Initial State: Default (Clear switch state), Connection setup
847Test-Field: Optional
848
849
850Test Notes:
851
852a) Insert a flow with action = OFPAT_SET_DL_SRC , dl_src =new_dl_src
853b) Send packet matching the flow (dl_dst = old_dl_src )
854c) Verify packet received has src address rewritten. (dl_src= new_dl_src)
855
856
857
85816. Modify L2 Destination Address
859
860Test Description: Modify Ethernet Destination Address of a packet
861
862Test mode: Automated
863Test Title: ModifyL2Dst
864Ports: 3 (1 Control Plane 2 Dataplane)
865Initial State: Default (Clear switch state), Connection setup
866Test-Field: Optional
867
868
869Test Notes:
870
871a) Insert a flow with action = OFPAT_SET_DL_DST , dl_dst =new_dl_dst
872b) Send packet matching the flow (dl_dst = old_dl_src )
873c) Verify packet received has destination address rewritten. (dl_src= new_dl_src)
874
875
876
87717. Strip VLAN header – (In oftest, need to add in conformance test-suite )
878
879
880
88118. Modify L3 Src Address
882
883Test Description: Modify Network Src Address of a packet
884
885Test mode: Automated
886Test Title: ModifyL3Src
887Ports: 3 (1 Control Plane 2 Dataplane)
888Initial State: Default (Clear switch state), Connection setup
889Test-Field: Optional
890
891
892Test Notes:
893
894a) Insert a flow with action = OFPAT_SET_NW_SRC , nw_src =new_nw_src
895b) Send packet matching the flow (nw_src = old_nw_src )
896c) Verify packet received has nw address rewritten. (nw_src= new_nw_src)
897
898
899
90019. Modify L3 Dst Address
901
902Test Description: Modify Network Dst Address of a packet
903
904Test mode: Automated
905Test Title: ModifyL3Dst
906Ports: 3 (1 Control Plane 2 Dataplane)
907Initial State: Default (Clear switch state), Connection setup
908Test-Field: Optional
909
910
911Test Notes:
912
913a) Insert a flow with action = OFPAT_SET_NW_DST , nw_dst =new_nw_dst
914b) Send packet matching the flow (nw_dst = old_nw_dst )
915c) Verify packet received has nw destination address rewritten. (nw_dst= new_nw_dst)
916
917
918
91920. Modify L4 Src Address
920
921Test Description: Modify TCP Source Port of a packet
922
923Test mode: Automated
924Test Title: ModifyL4Src
925Ports: 3 (1 Control Plane 2 Dataplane)
926Initial State: Default (Clear switch state), Connection setup
927Test-Field: Optional
928
929
930Test Notes:
931
932a) Insert a flow with action = OFPAT_SET_TP_SRC , tcp_sport =new_tcp_sport
933b) Send packet matching the flow (tcp_sport = old_tcp_sport )
934c) Verify packet received has tcp source port rewritten. (tcp_sport = new_tcp_sport)
935
936
93721. Modify L4 Dst Address
938
939Test Description: Modify TCP Destination Port of a packet
940
941Test mode: Automated
942Test Title: ModifyL4Dst
943Ports: 3 (1 Control Plane 2 Dataplane)
944Initial State: Default (Clear switch state), Connection setup
945Test-Field: Optional
946
947
948Test Notes:
949
950a) Insert a flow with action = OFPAT_SET_TP_DST , tcp_dport =new_tcp_dport
951b) Send packet matching the flow (tcp_dport = old_tcp_dport )
952c) Verify packet received has tcp destination port rewritten. (tcp_sport = new_tcp_sport)
953
954
955
95622. Modify TOS
957
958Test Description: Modify Network Type of service
959
960Test mode: Automated
961Test Title: ModifyTos
962Ports: 3 (1 Control Plane 2 Dataplane)
963Initial State: Default (Clear switch state), Connection setup
964Test-Field: Optional
965
966
967Test Notes:
968
969a) Insert a flow with action = OFPAT_SET_NW_TOS, ip_tos =new_ip_tos
970b) Send packet matching the flow (ip_tos= old_ip_tos)
971c) Verify packet received has tcp destination port rewritten. (ip_tos= new_ip_tos)
972
973
974
97523. Order Not possible -- TBD
976
977
978
979
98024. Sequential execution -- TBD
981
982
983
984
985
986**** Counters ****
987
988
989
9901. Received Packets per Flow
991
992
993Test Description: Verify that packet_count in the Flow_Stats reply increments in accordance with the packets in flow
994
995Test mode: Automated
996Test Tile: PktPerFlow
997POrts: 3 (1 Control Plane 2 Data Plane)
998Initial State: Default (Clear switch state), Connection setup
999Test-Field: Mandatory
1000
1001
1002Test Notes:
1003
1004a) Insert a flow , match = ingress_port
1005b) Send N packet matching the flow i.e packets should be sent on ingress_port
1006c) Send flow_stats_request for the flow
1007d) Verify packet_count = N in the flow_stats_reply
1008
1009
1010
10112. Received Bytes per Flow
1012
1013
1014Test Description: Verify that byte_count in the Flow_Stats reply increments in accordance with the bytes in flow
1015
1016Test mode: Automated
1017Test Tile: BytPerFlow
1018POrts: 3 (1 Control Plane 2 Data Plane)
1019Initial State: Default (Clear switch state), Connection setup
1020Test-Field: Mandatory
1021
1022
1023Test Notes:
1024
1025a) Insert a flow , match = ingress_port
1026b) Send N packet matching the flow i.e packets should be sent on ingress_port
1027c) Send flow_stats_request for the flow
1028d) Verify byte_count = N*(no. of bytes in one packet) in the flow_stats_reply
1029
1030
1031
10323. Duration in sec per Flow
1033
1034
1035Test Description: Verify that duration_sec in the Flow_Stats reply increments in accordance with the time that flow was alive in sec
1036
1037Test mode: Automated
1038Test Tile: DurationPerFlow
1039POrts: 3 (1 Control Plane 2 Data Plane)
1040Initial State: Default (Clear switch state), Connection setup
1041Test-Field: Mandatory
1042
1043
1044Test Notes:
1045
1046a) Insert a any flow
1047b) Send flow_stats_request for that flow periodically after n sec intervals upto timeout of y
1048c) Verify each flow_stats_reply has duration_sec field incrementing as n , 2n , 3n .. y
1049
1050
1051
10524. Duration in nsec per flow
1053
1054
1055Test Description: Verify that duration_nsec in the flow_stats repl increments in accordance with the time flow has been alive in nanoseconds
1056beyond duration_sec.
1057
1058Test mode: Automated
1059Test Tile: DurationPerFlow
1060POrts: 3 (1 Control Plane 2 Data Plane)
1061Initial State: Default (Clear switch state), Connection setup
1062Test-Field: Mandatory
1063
1064
1065Test Notes:
1066
1067a) Insert any flow
1068b) Send flow_stats_request periodically after n sec intervals upto timeout of y
1069c) Verify each flow_stats_reply has duration_sec field incrementing as n , 2n , 3n .. y and read out duration_nsec field ( Verification of nsec field
1070is out of scope)
1071
1072
1073
10745. Received packets per port
1075
1076
1077Test Description: Verify that rx_packets in the Port_Stats reply increments in accordance with the packets recieved on that port
1078
1079Test mode: Automated
1080Test Tile: RxPktPerPort
1081POrts: 3 (1 Control Plane 2 Data Plane)
1082Initial State: Default (Clear switch state), Connection setup
1083Test-Field: Mandatory
1084
1085
1086Test Notes:
1087
1088a) Insert a flow with match on ingress_port
1089b) Send N packets on the ingress_port
1090c) Send port_stats request for port=ingress_port
1091d) Verify port_stats_reply has rx_packet=N
1092
1093
1094
1095
10966. Transmitted packets per port
1097
1098
1099Test Description: Verify that tx_packets in the Port_Stats reply increments in accordance with the packets transmitted from a port
1100
1101Test mode: Automated
1102Test Tile: TxPktPerPort
1103POrts: 3 (1 Control Plane 2 Data Plane)
1104Initial State: Default (Clear switch state), Connection setup
1105Test-Field: Mandatory
1106
1107
1108Test Notes:
1109
1110a) Insert a flow with match on ingress_port, action output = egress_port
1111b) Send N packets on the ingress_port
1112c) Send port_stats request for port=ingress_port
1113d) Verify port_stats_reply had tx_packets=N
1114
1115
1116
11177. Received Bytes per port
1118
1119
1120Test Description: Verify that rx_bytes in the Port_Stats reply increments in accordance with the bytes recieved on a port
1121
1122Test mode: Automated
1123Test Tile: RxBytPerPort
1124POrts: 3 (1 Control Plane 2 Data Plane)
1125Initial State: Default (Clear switch state), Connection setup
1126Test-Field: Mandatory
1127
1128
1129Test Notes:
1130
1131a) Insert a flow with match on ingress_port, action output = egress_port
1132b) Send N packet matching the flow
1133c) Send port_stats request for port=ingress_port
1134d) Verify port_stats_reply had rx_bytes=N*(no. of bytes in a packet)
1135
1136
1137
11388. Transmitted Bytes per port
1139
1140
1141Test Description: Verify that tx_bytes in the Port_Stats reply increments in accordance with the bytes transmitted from a port
1142
1143Test mode: Automated
1144Test Tile: TxBytPerPort
1145POrts: 3 (1 Control Plane 2 Data Plane)
1146Initial State: Default (Clear switch state), Connection setup
1147Test-Field: Mandatory
1148
1149
1150Test Notes:
1151
1152a) Insert a flow with match on ingress_port, action output = egress_port
1153b) Send N packet matching the flow
1154c) Send port_stats request for port=ingress_port
1155d) Verify port_stats_reply had tx_bytes=N*(no. of bytes in a packet)
1156
1157
1158
11599. Recieve Drops per port (TBD ---> Verification of counter incrementing correctly)
1160
1161
1162Test Description: Verify that rx_dropped counters in the Port_Stats reply increments in accordance with the packets dropped by RX
1163
1164Test mode: Automated
1165Test Tile: RxDrops
1166POrts: 3 (1 Control Plane 2 Data Plane)
1167Initial State: Default (Clear switch state), Connection setup
1168Test-Field: Mandatory
1169
1170Test Notes :
1171
1172a) Send port_stats request for port=ingress_port
1173b) Verify port_stats reply has rx_dropped count
1174
1175
1176
1177
1178
117910. Transmit Drops per port (TBD ---> Verification of counter incrementing correctly)
1180
1181
1182Test Description: Verify that tx_dropped counters in the Port_Stats reply increments in accordance with the packets dropped by TX
1183
1184Test mode: Automated
1185Test Tile: TxDrops
1186POrts: 3 (1 Control Plane 2 Data Plane)
1187Initial State: Default (Clear switch state), Connection setup
1188Test-Field: Manadatory
1189
1190
1191a) Send port_stats request for port=ingress_port
1192b) Verify port_stats reply has tx_dropped count
1193
1194
1195
1196
119711. Recieve Errors (TBD ---> Verification of counter incrementing correctly)
1198
1199
1200Test Description: Verify that rx_errors counters in the Port_Stats reply increments in accordance with number of recieved error
1201 This is a super-set of more specific receive errors and should be greater than or equal to the sum of all
1202 rx_*_err values.
1203
1204Test mode: Automated
1205Test Tile: RxErrors
1206POrts: 3 (1 Control Plane 2 Data Plane)
1207Initial State: Default (Clear switch state), Connection setup
1208Test-Field: Mandatory
1209
1210
1211Test Notes:
1212
1213a) Send port_stats request for port=ingress_port
1214b) Verify port_stats reply has rx_errors count
1215
1216
1217
121812. Transmit Errors (TBD ---> Verification of counter incrementing correctly)
1219
1220
1221Test Description: Verify that tx_errors counters in the Port_Stats reply increments in accordance with number of trasmit errors
1222
1223Test mode: Automated
1224Test Tile: TxErrors
1225POrts: 3 (1 Control Plane 2 Data Plane)
1226Initial State: Default (Clear switch state), Connection setup
1227Test-Field: Mandatory
1228
1229
1230Test Notes:
1231
1232a) Send port_stats request for port=ingress_port
1233b) Verify port_stats reply has tx_errors count
1234
1235
1236
123713. Recieve Frame Errors (TBD ---> Verification of counter incrementing correctly)
1238
1239
1240Test Description: Verify that rx_frm_err counters in the Port_Stats reply increments in accordance with the number of frame alignment errors
1241Test mode: Automated
1242Test Tile: RxFrameErr
1243POrts: 3 (1 Control Plane 2 Data Plane)
1244Initial State: Default (Clear switch state), Connection setup
1245Test-Field: Mandatory
1246
1247
1248Test Notes:
1249
1250a) Send port_stats request for port=ingress_port
1251b) Verify port_stats reply has rx_frame_err count
1252
1253
1254
125514. Recieve Overrun Errors (TBD ---> Verification of counter incrementing correctly)
1256
1257
1258Test Description: Verify that rx_over_err counters in the Port_Stats reply increments in accordance with the number of with RX overrun
1259
1260Test mode: Automated
1261Test Tile: RxOErr
1262POrts: 3 (1 Control Plane 2 Data Plane)
1263Initial State: Default (Clear switch state), Connection setup
1264Test-Field: Mandatory
1265
1266
1267Test Notes:
1268
1269a) Send port_stats request for port=ingress_port
1270b) Verify port_stats reply has rx_over_err count
1271
1272
127315. CRC Errors (TBD ---> Verification of counter incrementing correctly)
1274
1275
1276Test Description: Verify that rx_crc_err counters in the Port_Stats reply increments in accordance with the number of crc errors
1277
1278Test mode: Automated
1279Test Tile: RxCrcErr
1280POrts: 3 (1 Control Plane 2 Data Plane)
1281Initial State: Default (Clear switch state), Connection setup
1282Test-Field: Manadatory
1283
1284
1285Test Notes:
1286
1287a) Send port_stats request for port=ingress_port
1288b) Verify port_stats reply has rx_crc_err count
1289
1290
1291
129216. Collisions (TBD ---> Verification of counter incrementing correctly)
1293
1294
1295Test Description: Verify that collisons counters in the Port_Stats reply increments in accordance with the collisions encountered by the switch
1296
1297Test mode: Automated
1298Test Tile: Collisions
1299POrts: 3 (1 Control Plane 2 Data Plane)
1300Initial State: Default (Clear switch state), Connection setup
1301Test-Field: Mandatory
1302
1303
1304Test Notes:
1305
1306a) Send port_stats request for port=ingress_port
1307b) Verify port_stats reply has collisions count
1308
1309
1310
131117. Active Entries per Table
1312
1313
1314Test Description: Verify that active_count in the table increments in accordance with the flows inserted in the table
1315
1316Test mode: Automated
1317Test Tile: ActiveCount
1318POrts: 3 (1 Control Plane 2 Data Plane)
1319Initial State: Default (Clear switch state), Connection setup
1320Test-Field: Mandatory
1321
1322
1323Test Notes:
1324
1325a) Insert a flow
1326b) Send table_stats_request
1327c) Verify active_count=1
1328
1329
1330
133118. Packet Lookup per Table
1332
1333
1334Test Description: Verify that lookup_count in the Table_Stats reply increments in accordance with the number of packets looked up in table
1335
1336Test mode: Automated
1337Test Tile: LookupMatchedCount
1338POrts: 3 (1 Control Plane 2 Data Plane)
1339Initial State: Default (Clear switch state), Connection setup
1340Test-Field: Mandatory
1341
1342
1343Test Notes:
1344
1345a) Insert a flow with match on ingress_port
1346b) Send N packets on ingress_port (matching the flow)
1347c) Send N' packets on x port (Not matching the flow)
1348d) Send table_stats_request
1349e) Verify lookup_count = N+N'
1350
1351
1352
135319. Packets matched per Table
1354
1355Test Description: Verify that matched_count in the Table_Stats reply increments in accordance with the number of packets matched with the table
1356
1357Test mode: Automated
1358Test Tile: LookupMatchedCount
1359POrts: 3 (1 Control Plane 2 Data Plane)
1360Initial State: Default (Clear switch state), Connection setup
1361Test-Field: Mandatory
1362
1363
1364Test Notes:
1365
1366a) Insert a flow with match on ingress_port
1367b) Send N packets on ingress_port (matching the flow)
1368c) Send N' packets on x port (Not matching the flow)
1369d) Send table_stats_request
1370e) Verify matched_count = N
1371
1372
1373
1374
137520. Transmit Packets per Queue
1376
1377Test Description: Verify that tx_packets in the queue_stats reply increments in accordance with the number of transmitted packets
1378
1379Test mode: Automated
1380Test Tile: TxPktPerQueue
1381POrts: 3 (1 Control Plane 2 Data Plane)
1382Initial State: Default (Clear switch state), Connection setup
1383Test-Field: Optional
1384
1385
1386Test Notes:
1387
1388a) Send queue_stats request for ports=ofp.OFPP_ALL and queue_ids=ofp.OFPQ_ALL (i.e all ports and all queues)
1389b) Send queue_stats request for egress_port[0] and queue_id[0] and note the tx_packets count in the reply
1390c) Insert a flow entry with enqueue action , port = egress_port[0] queue_id= queue_id[0]
1391d) Send packet matching the flow
1392e) Send queue_stats request again, verify tx_packet count incremented
1393f) Repeat b , c , d , e for all the queue_ids configured for egress_port[0]
1394h) Repeat b , c , d , e , f for all the egress_ports available
1395
1396
1397
1398
139921. Transmit Bytes per Queue
1400
1401Test Description: Verify that tx_bytes in the queue_stats reply increments in accordance with the number of transmitted bytes
1402
1403Test mode: Automated
1404Test Tile: TxBytPerQueue
1405POrts: 3 (1 Control Plane 2 Data Plane)
1406Initial State: Default (Clear switch state), Connection setup
1407Test-Field: Optional
1408
1409
1410Test Notes:
1411
1412a) Send queue_stats request for ports=ofp.OFPP_ALL and queue_ids=ofp.OFPQ_ALL (i.e all ports and all queues)
1413b) Send queue_stats request for egress_port[0] and queue_id[0] and note the tx_bytes count in the reply
1414c) Insert a flow entry with enqueue action , port = egress_port[0] queue_id= queue_id[0]
1415d) Send packet matching the flow
1416e) Send queue_stats request again, verify tx_byte count incremented
1417f) Repeat b , c , d , e for all the queue_ids configured for egress_port[0]
1418h) Repeat b , c , d , e , f for all the egress_ports available
1419
1420
1421
142222. Transmit Overrun Errors per queue (TBD ----> Verification of tx_error count being incremented correctly)
1423
1424Test Description: Verify that tx_errors in the queue_stats reply increments in accordance with the number of packets dropped due to overrun.
1425Test mode: Automated
1426Test Tile: TxErrorPerQueue
1427POrts: 3 (1 Control Plane 2 Data Plane)
1428Initial State: Default (Clear switch state), Connection setup
1429Test-Field: Optional
1430
1431Test Notes:
1432
1433
1434a) Send queue_stats request for port=egress_port and queue_ids=ofp.OFPQ_ALL
1435B) send queue_stats request for egress_port and queue_id[0] (i.e first queue configured for egress_port)
1436c) Verify reply has tx_errors count .
1437d) Repear b , c for the all queue_ids of egress_port
1438
1439
1440
1441
1442
1443**** Flow matches ****
1444
1445
1446
14471. All Wildcard Match
1448
1449Test Description: Adding a Flow that matches all the possible fields
1450
1451Test mode: Automated
1452Test Tile: AllWildcardMatch
1453POrts: 3 (1 Control Plane 2 Data Plane)
1454Initial State: Default (Clear switch state), Connection setup
1455Test-Field: Mandatory
1456
1457
1458Test Notes:
1459
1460a) Insert a flow with wildcard = OFPFW_ALL (wildcard all fields), action output to egress_port
1461b) Send packets with different header fields
1462c) Verify all packets match the flow and implement the action specified.
1463
1464
14652. Single Header Field: Ingress Port
1466
1467Test Description: Match on Ingress Port and Wildcard rest
1468
1469Test mode: Automated
1470Test Tile: IngressPort
1471POrts: 3 (1 Control Plane 2 Data Plane)
1472Initial State: Default (Clear switch state), Connection setup
1473Test-Field: Mandatory
1474
1475
1476Test Notes:
1477
1478a) Insert a flow with match = in_port (say port x), action output to egress_port
1479b) Send packet on port x
1480c) Verify packet was recieved on egress_port
1481d) Send packet on port y
1482e) Verify PacketIn event was triggered on control plane
1483
1484
1485
14863. Single Header Field: Ethernet Src Address
1487
1488Test Description: Match on Ethernet Source Address and Wildcard rest
1489
1490Test mode: Automated
1491Test Tile: EthernetSrcAddress
1492POrts: 3 (1 Control Plane 2 Data Plane)
1493Initial State: Default (Clear switch state), Connection setup
1494Test-Field: Mandatory
1495
1496
1497Test Notes:
1498
1499a) Insert a flow with match = dl_src (say x) , action output to egress_port
1500b) Send packet wth dl_src = x
1501c) Verify packet was recieved on egress_port
1502d) Send packet with dl_src = y
1503e) Verify PacketIn event was triggered on the control plane
1504
1505
1506
15074. Single Header Field: Ethernet Dst Address
1508
1509Test Description: Match on Ethernet Destination Address and Wildcard rest
1510
1511Test mode: Automated
1512Test Tile: EthernetDstAddress
1513POrts: 3 (1 Control Plane 2 Data Plane)
1514Initial State: Default (Clear switch state), Connection setup
1515Test-Field: Mandatory
1516
1517
1518Test Notes:
1519
1520a) Insert a flow with match = dl_dst (say x) , action output to egress_port
1521b) Send packet wth dl_dst = x
1522c) Verify packet was recieved on egress_port
1523d) Send packet with dl_dst = y
1524e) Verify PacketIn event was triggered on the control plane
1525
1526
1527
15285. Single Header Field: Ethernet Type
1529
1530Test Description: Match on Ehternet Type and Wildcard rest
1531
1532Test mode: Automated
1533Test Tile: EthernetType
1534POrts: 3 (1 Control Plane 2 Data Plane)
1535Initial State: Default (Clear switch state), Connection setup
1536Test-Field: Mandatory
1537
1538
1539Test Notes:
1540
1541a) Insert a flow with match = dl_type (say x) , action output to egress_port
1542b) Send packet wth dl_type = x
1543c) Verify packet was recieved on egress_port
1544d) Send packet with dl_type = y
1545e) Verify PacketIn event was triggered on the control plane
1546
1547
1548
1549
15506. Single Header Field: Vlan Id
1551
1552Test Description: Match on Ingress Port and Wildcard rest
1553
1554Test mode: Automated
1555Test Tile: VlanId
1556POrts: 3 (1 Control Plane 2 Data Plane)
1557Initial State: Default (Clear switch state), Connection setup
1558Test-Field: Mandatory
1559
1560
1561Test Notes:
1562
1563a) Insert a flow with match = dl_vlan (say x) , action output to egress_port
1564b) Send a tagged packet with (dl_vlan_enable=True,dl_vlan = x)
1565c) Verify packet was recieved on egress_port
1566d) Send another tagged packet with (dl_vlan_enable=True,dl_vlan = y )
1567e) Verify PacketIn event was triggered on the control plane
1568
1569
1570
1571
15727. Single Header Field: Vlan PCP
1573
1574Test Description: Match on Vlan ID Priority
1575
1576Test mode: Automated
1577Test Tile: VlanPcp
1578POrts: 3 (1 Control Plane 2 Data Plane)
1579Initial State: Default (Clear switch state), Connection setup
1580Test-Field: Mandatory
1581
1582
1583Test Notes:
1584
1585a) Insert a flow with match = dl_vlan_pcp (say x) , action output to egress_port
1586b) Send a tagged packet with (dl_vlan_enable=True, dl_vlan = * , dl_vlan_pcp = x)
1587c) Verify packet was recieved on egress_port
1588b) Send a tagged packet with (dl_vlan_enable=True, dl_vlan = * , dl_vlan_pcp = y)
1589e) Verify PacketIn event was triggered on the control plane
1590
1591
1592
1593
1594
15958. Single Header Field: IP Src Address -------- > (TBD)
1596
1597Test Description: Match on IP Src Address and Wildcard rest
1598
1599Test mode: Automated
1600Test Tile: IPSrcAddress
1601POrts: 3 (1 Control Plane 2 Data Plane)
1602Initial State: Default (Clear switch state), Connection setup
1603Test-Field: Mandatory
1604
1605
1606
1607
16089. Single Header Field: IP Dst Address -----------> (TBD)
1609
1610Test Description: Match on IP Dst Address and Wildcard rest
1611
1612Test mode: Automated
1613Test Tile: IPDstAddress
1614POrts: 3 (1 Control Plane 2 Data Plane)
1615Initial State: Default (Clear switch state), Connection setup
1616Test-Field: Mandatory
1617
1618
1619
1620
1621
162210. Single Header Field: IP protocol---------------> (TBD)
1623
1624Test Description: Match on IP Protocol and Wildcard rest
1625
1626Test mode: Automated
1627Test Tile: IPprotocol
1628POrts: 3 (1 Control Plane 2 Data Plane)
1629Initial State: Default (Clear switch state), Connection setup
1630Test-Field: Mandatory
1631
1632
1633
1634
1635
1636
163711. Single Header Field: IP Tos bits
1638
1639Test Description: Match on IP Tos bits and Wildcard rest
1640
1641Test mode: Automated
1642Test Tile: IpTos
1643POrts: 3 (1 Control Plane 2 Data Plane)
1644Initial State: Default (Clear switch state), Connection setup
1645Test-Field: Mandatory
1646
1647
1648Test Notes:
1649
1650a) Insert a flow with match = nw_tos (say x) , action output to egress_port
1651b) Send a tcp packet with (nw_tos=x)
1652c) Verify packet was recieved on egress_port
1653b) Send a tcp packet with (nw_tos = y)
1654e) Verify PacketIn event was triggered on the control plane
1655
1656
1657
165812. Single Header Field: Transport Source Port
1659
1660Test Description: Match on Transport Src Port and Wildcard rest
1661
1662Test mode: Automated
1663Test Tile: TcpSrcPort
1664POrts: 3 (1 Control Plane 2 Data Plane)
1665Initial State: Default (Clear switch state), Connection setup
1666Test-Field: Mandatory
1667
1668
1669Test Notes:
1670
1671a) Insert a flow with match = tp_src (say x) , action output to egress_port
1672b) Send a tcp packet with (tp_src=x)
1673c) Verify packet was recieved on egress_port
1674b) Send a tcp packet with tp_src= y)
1675e) Verify PacketIn event was triggered on the control plane
1676
1677
1678
167913. Single Header Field: Transport Destination Port
1680
1681Test Description: Match on Transport Dst Port and Wildcard rest
1682
1683Test mode: Automated
1684Test Tile: TcpDstPort
1685POrts: 3 (1 Control Plane 2 Data Plane)
1686Initial State: Default (Clear switch state), Connection setup
1687Test-Field: Mandatory
1688
1689
1690Test Notes:
1691
1692a) Insert a flow with match = tp_dst (say x) , action output to egress_port
1693b) Send a tcp packet with (tp_dst=x)
1694c) Verify packet was recieved on egress_port
1695b) Send a tcp packet with tp_dst = y)
1696e) Verify PacketIn event was triggered on the control plane
1697
1698
1699
1700
170114. Multiple Header Fields: L2
1702
1703
1704Test Description: Match on Ethernet Type, Ethernet Source Address, Ethernet Destination Address and Wildcard rest
1705
1706Test mode: Automated
1707Test Tile: MultipleHeaderFieldL2
1708POrts: 3 (1 Control Plane 2 Data Plane)
1709Initial State: Default (Clear switch state), Connection setup
1710Test-Field: Mandatory
1711
1712
1713Test Notes:
1714
1715a) Insert a flow with match = dl_type (say x), dl_src (say y ), dl_dst (say z), action output to egress_port
1716b) Send a eth packet with dl_type (say x), dl_src (say y ), dl_dst (say z)
1717c) Verify packet was recieved on egress_port
1718b) Send a eth packet with dl_type (say w), dl_src (say v ), dl_dst (say f)
1719e) Verify PacketIn event was triggered on the control plane
1720
1721
1722
172315. Multiple Header Fields: L3 ------> TBD
1724
1725
1726
1727
172816. Multiple Header Fields: L4
1729
1730Test Description: Match on Tcp Source Port, Tcp Destination Port
1731
1732Test mode: Automated
1733Test Tile: MultipleHeaderFieldL4
1734POrts: 3 (1 Control Plane 2 Data Plane)
1735Initial State: Default (Clear switch state), Connection setup
1736Test-Field: Mandatory
1737
1738
1739Test Notes:
1740
1741a) Insert a flow with match = tp_src (say x), tp_dst (say y )
1742b) Send a tcp packet with tp_src (say x), tp_dst (say y )
1743c) Verify packet was recieved on egress_port
1744b) Send a eth packet with tcp_src (say w), tcp_dst (say v )
1745e) Verify PacketIn event was triggered on the control plane
1746
1747
1748
174917. All Header Fields: Exact Match flows
1750
1751Test Description: Verify exact flow matches are possible
1752
1753Test mode: Automated
1754Test Tile: ExactMatch
1755POrts: 3 (1 Control Plane 2 Data Plane)
1756Initial State: Default (Clear switch state), Connection setup
1757Test-Field: Mandatory
1758
1759
1760Test Notes:
1761
1762a) Insert a flow with exact match, action output to egress_port
1763b) Send packet matching the flow
1764c) Verify packet received on egress_port
1765d) Send a non-matching packet
1766e) Verify PacketIn event gets triggered
1767
1768
1769
177018. Exact Match Highest Priority
1771
1772Test Description: An exact match flow entry has a highest priority compared to other flow entries
1773
1774Test mode: Automated
1775Test Tile: ExactMatchHigh
1776POrts: 4 (1 Control Plane 3 Data Plane)
1777Initial State: Default (Clear switch state), Connection setup
1778Test-Field: Mandatory
1779
1780
1781Test Notes:
1782
1783a) Insert two overlapping flows:
1784 Exact Match (prio = p ) action egress_port
1785 Wildacrd All (prio = p+ ) action egress_port2
1786b) Send packet matching the flows
1787c) Verify packet received on egress_port
1788
1789
1790
1791
179219. Wildcard Match Highest Priority
1793
1794Test Description: If Wildcard flow entries have priority associated with them.
1795 Higher priority Wildcard flow overrides the lower priroty Wildcard flow
1796
1797Test mode: Automated
1798Test Tile: WildcardMatchHigh
1799POrts: 4 (1 Control Plane 3 Data Plane)
1800Initial State: Default (Clear switch state), Connection setup
1801Test-Field: Mandatory
1802
1803
1804Test Notes:
1805
1806a) Insert two wildcarded flows :
1807 Wildcard All Except ingress (prio = p ) , action = egress_port
1808 Wildcard All (prio = p+ ) ,action = egress_port2
1809b) Send packet matching the flows
1810c) Verify packet is recieved on egress_port2
1811
1812
1813
181420. Fragment TCP Segments ------> TBD
1815
1816Test Description: Create flow matching on tcp port number. Verify that fragmented packets always match that flow rule.
1817
1818Test mode: Automated
1819Test Tile: FragTcpSeg
1820POrts: 3 (1 Control Plane 2 Data Plane)
1821Initial State: Default (Clear switch state), Connection setup
1822Test-Field: Mandatory