26 | | * '''OF-OPR-SLCR-FN-002''': The slicer MUST be capable of enforcing data plane traffic isolation when it is the first control plane entity in the path of a network device. |
27 | | * '''OF-OPR-SLCR-FN-002-a''': The slicer MUST NOT allow the strip_vlan action to be performed followed by an output to a port unless the slice owner owns the untagged space for that port. |
28 | | * '''OF-OPR-SLCR-FN-002-b''': The slicer MUST NOT allow the set_vlan_id action to be performed followed by an output to a port unless the slice owner owns that particular VLAN tag on that port. |
29 | | * '''OF-OPR-SLCR-FN-002-c''': The slicer MUST support constraining traffic sent to the OFPP_ALL and OFPP_FLOOD ports to the ports that are in a user's slice. |
30 | | * '''OF-OPR-SLCR-FN-003''': The slicer MUST be able to map ''all'' OpenFlow 1.0 control plane messages to either a slice or to the space which has not been sliced. |
31 | | * '''OF-OPR-SLCR-FN-003-a''': In the event that control plane traffic from a network device does not belong to a slice, it MUST NOT be sent to controllers belonging to experimenters' slices. |
32 | | * '''OF-OPR-SLCR-FN-003-b''': In the event that control plane traffic from a network device does belong to a slice, it MUST be sent to only the controller associated with the slice. |
33 | | * '''OF-OPR-SLCR-FN-003-c''': There MUST NOT be a situation where it is unclear if control plane traffic from a network device belongs to a slice or not. |
34 | | * '''OF-OPR-SLCR-FN-003-d''': There MUST NOT be a situation where it is unclear which slice control plane traffic from a network device belongs to. |
35 | | * '''OF-OPR-SLCR-FN-003-e''': The slicer MUST ensure all traffic from a controller maps to a slice, or else it must drop the traffic. If the traffic is dropped the slicer SHOULD notify the controller through an !OpenFlow error message. |
36 | | * '''OF-OPR-SLCR-FN-003-f''': The slicer MUST NOT prevent any OpenFlow 1.0 match or action primitives from being used unnecessarily. Only match or action primitives that violate the slice restrictions may be prevented. |
37 | | * '''OF-OPR-SLCR-FN-003-g''': The slicer MUST know which controller sent a give ''request'' message (e.g. stats request, barrier request, etc) and only send the ''reply'' message back to that controller. |
38 | | * '''OF-OPR-SLCR-FN-004''': The slicer MUST have support for functions needed to implement GENI AM API on top of it. The API calls and parameters MAY implement a superset of what is needed for the GENI API (e.g. flowspace[] instead of vlan_ids[]). |
39 | | * '''OF-OPR-SLCR-FN-004-a''': There MUST be an API call similar to the following: ''add_slice(slice_id, controller_url, vlan_ids[])''. The slice should not timeout from the slicer without explicit removal from a separate API call or from the administrator. |
40 | | * '''OF-OPR-SLCR-FN-004-b''': There MUST be an API call similar to the following: ''delete_slice(slice_id)'' |
41 | | * '''OF-OPR-SLCR-FN-004-c''': There MUST be an API call similar to the following: ''change_controller(slice_id, controller_url)'' |
42 | | * '''OF-OPR-SLCR-FN-004-d''': There MUST be an API call similar to the following: ''dump_slices()''. This can be used by a GENI AM for synchronization purposes. It should list all slices managed by the slicer, all DPIDs connected to the slicer, and the controllers and VLANs that correspond to each slice. |
43 | | * '''OF-OPR-SLCR-FN-004-e''': There MAY be an API call similar to the following: ''update_slice(slice_id, vlan_ids[])'' |
44 | | * '''OF-OPR-SLCR-FN-005''': The slicer MUST ensure that OpenFlow 1.0 synchronous messages which arrive at the slicer and that are initiated by the controller receive a response, either from the switch or from the slicer itself. This includes forwarding !OpenFlow error messages which are generated by the switches. |
45 | | * '''OF-OPR-SLCR-FN-006''': The slicer MUST prevent device configuration change requests that would affect other slices (such as port down, adding a queue to a port, etc) from reaching the network device. |
46 | | * '''OF-OPR-SLCR-FN-006-a''': The slicer MUST prevent OFPT_PORT_MOD messages from reaching a switch. |
47 | | * '''OF-OPR-SLCR-FN-006-b''': The slicer MUST prevent OFPT_SET_CONFIG messages from reaching a switch. |
48 | | * '''OF-OPR-SLCR-FN-006-c''': The slicer MAY emulate some OFPT_PORT_MOD or OFP_SET_CONFIG changes within a slice for the slice's controller. |
49 | | * '''OF-OPR-SLCR-FN-007''': The slicer SHOULD provide some reasonable notification to slice owners in the event that they hit error conditions. |
50 | | * '''OF-OPR-SLCR-FN-007-a''': The slicer MUST notify the controller if an OpenFlow message falls outside the bounds of a slice (either in terms of VLANs or in terms of limits), and it should be clear to the experimenter what the problem was. |
51 | | * '''OF-OPR-SLCR-FN-007-b''': The slicer MUST make it possible for the GENI AM to notify the slice owner if their slice is programmatically disabled. |
52 | | * '''OF-OPR-SLCR-FN-007-c''': The slicer MUST make it possible for the GENI AM to notify the slice owner if their slice is administratively removed. |
53 | | * '''OF-OPR-SLCR-FN-008''': The slicer SHOULD NOT modify control plane traffic more than is necessary to perform the function of slicing. |
54 | | * '''OF-OPR-SLCR-FN-009''': The slicer MUST implement critical features in a way that allows for additional slicers to run in the northbound control plane for a slice. |
55 | | * '''OF-OPR-SLCR-FN-010''': The slicer MAY support control plane performance isolation. |
56 | | * '''OF-OPR-SLCR-FN-011''': The slicer MAY support data plane performance isolation if the substrate can support it. |
57 | | * '''OF-OPR-SLCR-FN-012''': The slicer MAY support per-slice flow limits. |
58 | | * '''OF-OPR-SLCR-FN-013''': The slicer SHOULD be able to abstract the VLAN in the substrate away from the controller when possible. It SHOULD be possible to disable this feature per slice. |
59 | | * '''OF-OPR-SLCR-FN-013-a''': In the case where a slice only includes one VLAN for a particular device belonging to that slice and this feature is enabled for the slice, the slicer SHOULD apply VLAN tags to the data packets in packet-out messages. |
60 | | * '''OF-OPR-SLCR-FN-013-b''': In the case where a slice only includes one VLAN for a particular device belonging to that slice and this feature is enabled for the slice, the slicer SHOULD remove VLAN tags from the data packets in packet-in messages. |
61 | | * '''OF-OPR-SLCR-FN-013-c''': In the case where a slice only includes one VLAN for a particular device belonging to that slice and this feature is enabled for the slice, and when the VLAN ID of the match in a flowmod is wildcarded, the slicer SHOULD apply a VLAN tag and remove the wildcard flag for the VLAN ID in the match. |
62 | | * '''OF-OPR-SLCR-FN-013-d''': In the case where a slice includes multiple VLANs for a particular device belonging to that slice, the slicer SHOULD NOT attempt to modify data packets in packet-outs, data packets in packet-ins, or matches and wildcards in flowmods. |
| 26 | * '''OF-OPR-SLCR-FN-001-c''': The slicer MAY support allocating untagged traffic on a port to a slice. |
| 27 | * '''OF-OPR-SLCR-FN-002''': The slicer MUST ensure that unmatched traffic is dropped by default at the switch. |
| 28 | * '''OF-OPR-SLCR-FN-003''': The slicer MUST be capable of enforcing data plane traffic isolation when it is the first control plane entity in the path of a network device. |
| 29 | * '''OF-OPR-SLCR-FN-003-a''': The slicer MUST NOT allow the strip_vlan action to be performed followed by an output to a port unless the slice owner owns the untagged space for that port. |
| 30 | * '''OF-OPR-SLCR-FN-003-b''': The slicer MUST NOT allow the set_vlan_id action to be performed followed by an output to a port unless the slice owner owns that particular VLAN tag on that port. |
| 31 | * '''OF-OPR-SLCR-FN-003-c''': The slicer MUST support constraining traffic sent to the OFPP_ALL and OFPP_FLOOD ports to the ports that are in a user's slice. |
| 32 | * '''OF-OPR-SLCR-FN-004''': The slicer MUST be able to map ''all'' OpenFlow 1.0 control plane messages to either a slice or to the slicer itself for administrative/slicing purposes. Since unmatched traffic will be dropped by default at the switch, there should be no traffic that does not belong to a slice or to the slicer. |
| 33 | * '''OF-OPR-SLCR-FN-004-a''': In the event that control plane traffic from a network device does not belong to a slice, it MUST NOT be sent to controllers belonging to experimenters' slices. |
| 34 | * '''OF-OPR-SLCR-FN-004-b''': In the event that control plane traffic from a network device does belong to a slice, it MUST be sent to only the controller associated with the slice. |
| 35 | * '''OF-OPR-SLCR-FN-004-c''': There MUST NOT be a situation where it is unclear if control plane traffic from a network device belongs to a slice or not. |
| 36 | * '''OF-OPR-SLCR-FN-004-d''': There MUST NOT be a situation where it is unclear which slice control plane traffic from a network device belongs to. |
| 37 | * '''OF-OPR-SLCR-FN-004-e''': The slicer MUST ensure all traffic from a controller maps to a slice, or else it must drop the traffic. If the traffic is dropped the slicer SHOULD notify the controller through an !OpenFlow error message. |
| 38 | * '''OF-OPR-SLCR-FN-004-f''': The slicer MUST NOT prevent any OpenFlow 1.0 match or action primitives from being used unnecessarily. Only match or action primitives that violate the slice restrictions may be prevented. |
| 39 | * '''OF-OPR-SLCR-FN-004-g''': The slicer MUST know which controller sent a given ''request'' message (e.g. stats request, barrier request, etc) and only send the ''reply'' message back to that controller. |
| 40 | * '''OF-OPR-SLCR-FN-005''': The slicer MUST have support for functions needed to implement the GENI AM API on top of it. The API calls and parameters MAY implement a superset of what is needed for the GENI API (e.g. flowspace[] instead of vlan_ids[]). |
| 41 | * '''OF-OPR-SLCR-FN-005-a''': There MUST be an API call similar to the following: ''add_slice(slice_id, controller_url, vlan_ids[])''. The slice should not timeout from the slicer without explicit removal from a separate API call or from the administrator. |
| 42 | * '''OF-OPR-SLCR-FN-005-b''': There MUST be an API call similar to the following: ''delete_slice(slice_id)'' |
| 43 | * '''OF-OPR-SLCR-FN-005-c''': There MUST be an API call similar to the following: ''change_controller(slice_id, controller_url)'' |
| 44 | * '''OF-OPR-SLCR-FN-005-d''': There MUST be an API call similar to the following: ''dump_slices()''. This can be used by a GENI AM for synchronization purposes. It should list all slices managed by the slicer, all DPIDs connected to the slicer, and the controllers and VLANs that correspond to each slice. |
| 45 | * '''OF-OPR-SLCR-FN-005-e''': There MAY be an API call similar to the following: ''update_slice(slice_id, vlan_ids[])'' |
| 46 | * '''OF-OPR-SLCR-FN-006''': The slicer MUST ensure that OpenFlow 1.0 synchronous messages which arrive at the slicer and that are initiated by the controller receive a response, either from the switch or from the slicer itself. This includes forwarding !OpenFlow error messages which are generated by the switches. |
| 47 | * '''OF-OPR-SLCR-FN-007''': The slicer MUST prevent device configuration change requests that would affect other slices (such as port down, adding a queue to a port, etc) from reaching the network device. |
| 48 | * '''OF-OPR-SLCR-FN-007-a''': The slicer MUST prevent OFPT_PORT_MOD messages from reaching a switch. |
| 49 | * '''OF-OPR-SLCR-FN-007-b''': The slicer MUST prevent OFPT_SET_CONFIG messages from reaching a switch. |
| 50 | * '''OF-OPR-SLCR-FN-007-c''': The slicer MAY emulate some OFPT_PORT_MOD or OFP_SET_CONFIG changes within a slice for the slice's controller. |
| 51 | * '''OF-OPR-SLCR-FN-008''': The slicer SHOULD provide some reasonable notification to slice owners in the event that they hit error conditions. |
| 52 | * '''OF-OPR-SLCR-FN-008-a''': The slicer MUST notify the controller if an OpenFlow message falls outside the bounds of a slice (either in terms of VLANs or in terms of limits), and it should be clear to the experimenter what the problem was. |
| 53 | * '''OF-OPR-SLCR-FN-008-b''': The slicer MUST make it possible for the GENI AM to notify the slice owner if their slice is programmatically disabled. |
| 54 | * '''OF-OPR-SLCR-FN-008-c''': The slicer MUST make it possible for the GENI AM to notify the slice owner if their slice is administratively removed. |
| 55 | * '''OF-OPR-SLCR-FN-009''': The slicer SHOULD NOT modify control plane traffic more than is necessary to perform the function of slicing. |
| 56 | * '''OF-OPR-SLCR-FN-010''': The slicer MUST implement critical features in a way that allows for additional slicers to run in the northbound control plane for a slice. |
| 57 | * '''OF-OPR-SLCR-FN-011''': The slicer MAY support control plane performance isolation. |
| 58 | * '''OF-OPR-SLCR-FN-012''': The slicer MAY support data plane performance isolation if the substrate can support it. |
| 59 | * '''OF-OPR-SLCR-FN-013''': The slicer MAY support per-slice flow limits. |
| 60 | * '''OF-OPR-SLCR-FN-014''': The slicer SHOULD be able to abstract the VLAN in the substrate away from the controller when possible. It SHOULD be possible to disable this feature per slice. |
| 61 | * '''OF-OPR-SLCR-FN-014-a''': In the case where a slice only includes one VLAN for a particular device belonging to that slice and this feature is enabled for the slice, the slicer SHOULD apply VLAN tags to the data packets in packet-out messages. |
| 62 | * '''OF-OPR-SLCR-FN-014-b''': In the case where a slice only includes one VLAN for a particular device belonging to that slice and this feature is enabled for the slice, the slicer SHOULD remove VLAN tags from the data packets in packet-in messages. |
| 63 | * '''OF-OPR-SLCR-FN-014-c''': In the case where a slice only includes one VLAN for a particular device belonging to that slice and this feature is enabled for the slice, and when the VLAN ID of the match in a flowmod is wildcarded, the slicer SHOULD apply a VLAN tag and remove the wildcard flag for the VLAN ID in the match. |
| 64 | * '''OF-OPR-SLCR-FN-014-d''': In the case where a slice includes multiple VLANs for a particular device belonging to that slice, the slicer SHOULD NOT attempt to modify data packets in packet-outs, data packets in packet-ins, or matches and wildcards in flowmods. |