Slicer provides the ability to create multiple Slice Network by duplicating the Original Network.
-
Topology
Original network and the sliver network is the same topology.
Update topology in the original network is reflected in the sliver network. -
Flows
Flow will be reflected in the original network when it is set at sliver network.
Set to Flow, it is necessary to match the information in the SliceConditionTable.
The status of Flow become a "failed" if the Flow of sliver network does not match the information in the SliceConditionTable. -
Packets
InPacket transfer from original network to sliver network.
OutPacket transfer from sliver network to original network.
packet become a "drop" if the packet header does not match the information in the SliceConditionTable. -
SliceConditionTable&SliceCondition
SliceCondition has a match condition and connection information.
slicer does the split of Flow and Packet in match conditions.
Setting the Match and ConnectionId to sliceCondition. Match set the split of Flow and Packet.
The search order is determined by the priority.
-
Create Instance of Slicer.
Generate an instance of Slicer by performing a PUT (or POST) to the System Manager.
key | value | description |
---|---|---|
id | <String> | Unique Identifier in ODENOS. |
type | "Slicer" | ObjectType |
cm_id | <String> | Specify the componentManager.Property.id to generate an instance. (Optional) |
-
Component Connections
Connection of Slicer and Network by performing a PUT (or POST) to the System Manager.network | Connection possible number | connection_type -----------------|----------------------------|---------------------------------- original network | Only one | "original" Sliver network | One or more | "sliver"
key | value | description |
---|---|---|
id | <String> | Unique Identifier in ODENOS. |
type | "LogicAndNetwork" | |
connection_type | "original" or "sliver" | |
state | none | default "initializing" |
logic_id | <String> | Slicer ID |
network_id | <String> | Network ID |
-
POST <base_uri>/settings/slice_condition_table/<priority>/conditions
-
PUT <base_uri>/settings/slice_condition_table/<priority>/conditions/<condition_id>
-
DELETE <base_uri>/settings/slice_condition_table/conditions/<condition_id>
-
GET <base_uri>/settings/slice_condition_table/conditions/<condition_id>
-
GET <base_uri>/settings/slice_condition_table/connections/<connection_id>
-
GET <base_uri>/original_network_flow
Here, <base_uri> is http://<hostname>:10080/systemmanager/components/slicer such as http://localhost:10080/systemmanager/components/slicer
To provide rules for dividing the topology. SliceCondition is abstract class.
key | value | description |
---|---|---|
id | <String> | ID that is unique in the ODENOS |
connection | <String> | Sliver's ComponentConnectionProperty.id |
type | <String> | SliceCondition Type |
SliceCondition is setting Slice rules.
BasicSliceCondition support mutch "in_node" and "in_port".
key | value | description |
---|---|---|
id | <String> | ID that is unique in the ODENOS |
type | <String> | SliceCondition type is "BasicSliceCondition" |
connection | <String> | Sliver's ComponentConnection.id |
in_node | <String> | Node.id |
in_port | <String> | Port.id |
{ "id": "sliceconditon1", "type": "BasicSliceCondition", "connection":"sliver1_connection" "in_node": "node1", "in_port": "port1" }
SliceConditionTable for managing the order of priority SliceCondition.
key | value | description |
---|---|---|
priority | list<SliceCondition.id> | priority : 0 ~ 65535 (65535:Max Priority) |
{ "30": [of_slcond7, of_slcond8, of_slcond9], "20": [of_slcond4, of_slcond5, of_slcond6], "10": [of_slcond1, of_slcond2, of_slcond3] }
- get Object property.
- Body : none
- Status Code : 200
- Body : ObjectProperty
- update Object property.
- Body : ObjectProperty
- Status Code : 200
- Body : ObjectProperty
Get Setting Slice List.
- Body : none
- Status Code : 200
- Body : dict<"slice_condition_table": SliceConditionTable>
Create a slice_condition_table/<priority> and to set the slice condition list.
notification event ObjectSettingsChanged
- Body : List[SliceCondition]
- Status Code : 200
- Body : List[SliceCondition]
[ {"id":"condition1", "type":"BasicSliceCondition", "connection":"slice1", "in_node":"node1", "in_port":"port1"}, {"id":"condition2", "type":"BasicSliceCondition", "connection":"slice1", "in_node":"node1", "in_port":"port2"} {"id":"condition3", "type":"BasicSliceCondition", "connection":"slice1", "in_node":"node1", "in_port":"port3"} ]
create of slice Conditon.id is granted automatically. (specified id is invalid)
If slice_condition_table/<priority> is not, slice_condition_table/<priority> to create a new one.
notification event ObjectSettingsChanged
- Body : SliceCondition
- Status Code : 200
- Body : SliceCondition
{ "type":"BasicSliceCondition", "connection":"slicer_nw01", "in_node":"node001", "in_port":"port0011" }
create of slice Conditon.If you already have a slice Conditon, It will update.
If slice_condition_table/<priority> is not, slice_condition_table/<priority> to create a new one.
notification event ObjectSettingsChanged
- Body : SliceCondition
- Status Code : 200
- Body : SliceCondition
{ "id":"sliceconditon1", "type":"BasicSliceCondition", "connection":"slicer_nw01", "in_node":"node001", "in_port":"port0011" }
All crear slice_condition_table, and slice_condition.
- Body : none
- Status Code : 200
- Body : none
Delete this SliceCondition from the slice_condition_table.
- Body : none
- Status Code : 200
- Body : none
Get SliceConditionTable.
- Body : none
- Status Code : 200
- Body : SliceConditionTable
Get a list of <condition_id> corresponding to <priority>.
- Body : none
- Status Code : 200
- Body : List<condition_id>
- Status Code : 200
- Body : List[BasicSliceCondition]
Get SliceCondition.
- Body : none
- Status Code : 200
- Body : BasicSliceCondition
Get a list of <condition_id> corresponding to <connection_id>.
- Body : none
- Status Code : 200
- Body : List[condition_id]
- Status Code : 200
- Body : List[BasicSliceCondition]
Relationship of the sliver flow id and original flow id. (Key is original)
- Body : none
- Status Code : 200
- Body : dict<original_flow_id, sliver_network_id::sliver_flow_id>
Get relationship of the sliver flow id and original flow id. (Key is sliver)
- Body : none
- Status Code : 200
- Body : dict<sliver_network_id::sliver_flow_id, original_flow_id>