Skip to content

Latest commit

 

History

History
362 lines (266 loc) · 11.8 KB

Slicer.md

File metadata and controls

362 lines (266 loc) · 11.8 KB

Slicer

Slicer provides the ability to create multiple Slice Network by duplicating the Original Network.


Operating specifications of the Slicer.

  • 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.

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"

    PUT <base_uri>/connections/<conn_id>

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

Data Class

REST APIs


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

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
example(JSON)
    {    
    "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)
example(JSON)
    {    
     "30": [of_slcond7, of_slcond8, of_slcond9],   
     "20": [of_slcond4, of_slcond5, of_slcond6],   
     "10": [of_slcond1, of_slcond2, of_slcond3]    
    }    

  • get Object property.
[Request]:
  • Body : none
[Response]:

  • update Object property.
[Request]:
[Response]:

Get Setting Slice List.

[Request]:
  • Body : none
[Response]:
  • 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

[Request]:
[Response]:
example(JSON)
  [
   {"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

[Request]:
[Response]:
example(JSON)
   {  
    "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

[Request]:
[Response]:
example(JSON)
   {  
    "id":"sliceconditon1",  
    "type":"BasicSliceCondition",  
    "connection":"slicer_nw01",  
    "in_node":"node001",  
    "in_port":"port0011"  
   }  

All crear slice_condition_table, and slice_condition.

[Request]:
  • Body : none
[Response]:
  • Status Code : 200
  • Body : none

Delete this SliceCondition from the slice_condition_table.

[Request]:
  • Body : none
[Response]:
  • Status Code : 200
  • Body : none

Get SliceConditionTable.

[Request]:
  • Body : none
[Response]:

Get a list of <condition_id> corresponding to <priority>.

[Request]:
  • Body : none
[Response]:
  • Status Code : 200
  • Body : List<condition_id>
[Response](detail):

Get SliceCondition.

[Request]:
  • Body : none
[Response]:

Get a list of <condition_id> corresponding to <connection_id>.

[Request]:
  • Body : none
[Response]:
  • Status Code : 200
  • Body : List[condition_id]
[Response](detail):

Relationship of the sliver flow id and original flow id. (Key is original)

[Request]:
  • Body : none
[Response]:
  • 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)

[Request]:
  • Body : none
[Response]:
  • Status Code : 200
  • Body : dict<sliver_network_id::sliver_flow_id, original_flow_id>