Skip to content

Latest commit

 

History

History
1172 lines (950 loc) · 56.7 KB

File metadata and controls

1172 lines (950 loc) · 56.7 KB

ODENOS data class Objects


This represent the overall topology of Network.

Key Value Description POST PUT
type <String> type is "Topology" - Mandatory
version <String> NetworkCompnent will assign valid version in response message when the request is success. - Mandatory (*1)
nodes dict<Node.id, Node> Node set. - Optional
links dict<Link.id, Link> Link set. - Optional

(*1) version is assigned automatically when creating a new object.


Switch Node data class.

Key Value Description POST PUT
type <String> type is "Node" Mandatory Mandatory
version <String> NetworkCompnent will assign valid version in response message when the request is success. - (*1) Mandatory (*1)
node_id <String> Unique node's Identifier in this topology - (*2) Mandatory
ports dict<Port.port_id, Port> Set of ports in this Node. Optional Optional
attributes dict{<String>, <String>} See the table attributes. Optional Optional

(*1) version is assigned automatically when creating a new object. (*2) node_id is assigned automatically.

Attributes
Key Value Description init Direction of the reflected(*)
oper_status <String> "UP" : Physical device normal.
"DOWN" : Physical device failure.
"UP" Lower -> Upper
physical_id <String> ID of the physical device. Numbering in the driver.
For example, openflow driver to set the "dpid"
any Lower -> Upper
vendor <String> Vendor name is set.
For example, It is used for the GUI system.
any Lower -> Upper

(*) Lower : Driver side. Upper : Controller side.


Switch Port data class.

Key Value Description POST PUT
type <String> type is "Port" Mandatory Mandatory
version <String> NetworkCompnent will assign valid version in response message when the request is success. -(*1) Mandatory(*1)
port_id <String> Unique port's Identifier in this node -(*2) Mandatory
node_id <String> Owner of this port Mandatory Mandatory
out_link <String> source Link.id -(*3) -(*3)
in_link <String> destination Link.id -(*3) -(*3)
attributes dict{<String>, <String>} See the table attributes. Optional Optional

(*1) version is assigned automatically when creating a new object. (*2) port_id is assigned automatically. (*3) Setting not required because it is set automatically by the Link Configuration

Attributes
Key Value Description init Direction of the reflected(*)
oper_status <String> "UP" : Physical device normal.
"DOWN" : Physical device failure.
"UP" Lower -> Upper
max_bandwidth <Number> Unit is Mbps. maximum bandwidth of the port.
Driver to set the value.
any Lower -> Upper
unreserved_bandwidth <Number> Unit is Mbps. Current bandwidth of the port.
Driver to set the initial value.
max_bandwidth Upper -> Lower
physical_id <String> ID of the physical device. Driver may assign this ID.
For example, openflow driver will assign like "port_no@dpid"
any Lower -> Upper
vendor <String> Vendor name is set.
For example, It is used for the GUI system.
any Lower -> Upper
is_boundary "true" or "false" Boundary setting is the "true" when enabled.
For example, It is used for the GUI system.
"false" Upper -> Lower

(*) Lower : Driver side. Upper : Controller side.


Key Value Description POST PUT
type <String> type is "Link" Mandatory Mandatory
version <String> NetworkCompnent will assign valid version in response message when the request is success. -(*1) Mandatory (*1)
link_id <String> Unique Link's Identifier in this topology. -(*2) Mandatory
src_node <String> source Node.id Mandatory Mandatory
src_port <String> source Port.id Mandatory Mandatory
dst_node <String> destination Node.id Mandatory Mandatory
dst_port <String> destination Port.id Mandatory Mandatory
attributes dict{<String>, <String>} See the table attributes. Optional Optional

(*1) version is assigned automatically when creating a new object. (*2) link_id is assigned automatically.

Attributes
Key Value Description init Direction of the reflected(*)
oper_status <String> "UP" : Link is in a state ready to forward traffic.
"DOWN" : Link is in a state not ready to forward traffic.
"UP" Lower -> Upper
cost <Number> link cost. 1 Upper -> Lower
req_latency <Number> Unit is msec. Request latency. (There may be different from the actual latency.) any Upper -> Lower
latency <Number> Unit is msec. any Lower -> Upper
req_bandwidth <Number> Unit is Mbps. Request bandwidth.(There may be different from the actual bandwidth.) any Upper -> Lower
max_bandwidth <Number> Unit is Mbps. maximum bandwidth of the port.
Driver to set the value.
any Lower -> Upper
unreserved_bandwidth <Number> Unit is Mbps. Current bandwidth of the port.
Driver to set the initial value.
max_bandwidth Upper -> Lower
establishment_status <string> Use LinkLayerizer Only. Link that was generated from Flow.
"establishing" :
"established" :
If it is a "establishing", oper_status is "DOWN"
any -

(*) Lower : Driver side. Upper : Controller side.


Flow is abstract class.

Key Value Description POST PUT
type <string> FlowType (see below) Mandatory Mandatory
version <String> NetworkCompnent will assign valid version in response message when the request is success. -(*1) Mandatory (*1)
flow_id <string> Unique flow's Identifier in this network. -(*1) Mandatory
owner <string> Author of flow. Mandatory Mandatory
enabled <boolean> The value the owner is usually set. "True":flow is activation. "False":flow is invalidation. Mandatory Mandatory
priority <number> value:0-65535(max priority). It is to be 32768 if not set. Mandatory Mandatory
status <string> see Flow status, Lower Layer Component(usually, Driver Component) makes a state transition. Optional(*3) Mandatory
attributes dict{<String>, <String>} See the table attributes. Optional Optional

(*1)version is assigned automatically when creating a new object. (*2)flow_id is assigned automatically. (*3)If you do not set the state,state set "none"

type
type description
BasicFlow Class that represents a basic flow.
OFPFlow Class that represents a openflow's flow
Attributes
Key Value Description init Direction of the reflected(*)
req_bandwidth <Number> Unit is Mbps. Request bandwidth.(There may be different from the actual bandwidth.) any Upper -> Lower
req_latency <Number> Unit is msec. Request latency. (There may be different from the actual latency.) any Upper -> Lower
bandwidth <Number> Unit is Mbps. any Lower -> Upper
latency <Number> Unit is msec. any Lower -> Upper

State Transition Table

  • none: Definition of Flow is, the state is not enabled.
  • establishing:Set during the flow of the physical layer by the driver.
  • established: Flow enabled.
  • teardown: The removal process during the flow of the physical layer by the driver.
  • failed: failure to flow.
State Current ↓ Next→ none establishing established teardown failed (none Flow)
none - Creating or Updating Flow - - - Deleted Flow
establishing - Created/Updated Flow Deleting Flow failure -
established - Updating Flow - Deleting Flow or Invaliding Flow failure -
teardown Deleted or Invalided Flow - - - failure
failed - Updating Flow Updated Flow Deleting Flow - -

Sequence


create

    [controller/LogicComponent]    [Network]     [Driver]
         |                            |            |
         |POST/PUT flow               |            |
         |--------------------------->|            |
         |         [enabled:true, status:none]     |
         |                            |            |
         |                            |FlowChanged(Add)
         |                            |----------->|
         |                            | PUT flow(stats:establishing)
         |                            |<-----------|
         |  [enabled:true, status:establishing]    |        [Physical Switch]
         |        FlowChanged(UPDATE) |            | Flow setting  |
         |<---------------------------|            |-------------->|
         |                      FlowChanged(UPDATE)|               |
         |                            |----------->|               |
         |                            |            | Flow setting completed
         |                            |            |<--------------|
         |                            | PUT flow(stats:established)
         |                            |<-----------|
         |  [enabled:true, status:established]     |
         |       FlowChanged(UPDATE)  |            |
         |<---------------------------| FlowChanged(UPDATE)
         |                            |----------->|
         |                            |            |

delete

    [controller/LogicComponent]    [Network]     [Driver]
         |                            |            |
         |  [enabled:true, status:established]     |
         |                            |            |
         |DELETE flow                 |            |
         |--------------------------->|            |
         |         FlowChanged(DELETE)|            |
         |<---------------------------|            |
         |                            |FlowChanged(DELETE)
         |                            |----------->|
         |                            | PUT flow(stats:teardown)
         |                            |<-----------|
         |  [enabled:true, status:teardown]        |         [Physical Switch]
         |        x[FlowChanged(UPDATE)](*)        |               |
         |                        x---|x[FlowChanged(UPDATE)](*)   |
         |                            |-->x        |               |
         |                            |            | Flow delete   |
         |                            |            |-------------->|
         |                            |            | Flow delete completed
         |                            |            |<--------------|
         |                            | PUT flow(stats:none)       |
         |                            |<-----------|
         |      [enabled:true, status:none]        |
         |        x[FlowChanged(UPDATE)](*)        |
         |                        x---|x[FlowChanged(UPDATE)](*)
         |                            |-->x        |
         |                            |            |
         |                     (Flow Deleted)      |
         |                            | x[FlowChanged(DELETE)](*)
         |                            |-->x        |
         |  x[FlowChanged(DELETE)](*) |            |
         |                        x---|            |

(*) Event notification None.


Invalid

    [controller/LogicComponent]    [Network]     [Driver]
         |                            |            |
         |  [enabled:true, status:established]     |
         |                            |            |
         |PUT flow(enabled change)    |            |
         |--------------------------->|            |
         |  [enabled:false, status:established]    |
         |                            |            |
         |                            |FlowChanged(UPDATE)
         |                            |----------->|
         |        FlowChanged(UPDATE) |            |
         |<---------------------------|            |
         |                            |            |
         |                            | PUT flow(stats:teardown)
         |                            |<-----------|
         |   [enabled:false, status:teardown]      |        [Physical Switch]
         |        FlowChanged(UPDATE) |            | Flow delete   |
         |<---------------------------|            |-------------->|
         |                            |FlowChanged(UPDATE)         |
         |                            |----------->|               |
         |                            |            | Flow delete completed
         |                            |            |<--------------|
         |                            | PUT flow(stats:none)
         |                            |<-----------|
         |       [enabled:false, status:none]      |
         |                            |            |
         |        FlowChanged(UPDATE) |            |
         |<---------------------------|FlowChanged(UPDATE)
         |                            |----------->|
         |                            |            |


Valid

    [controller/LogicComponent]    [Network]     [Driver]
         |                            |            |
         |       [enabled:false, status:none]      |
         |                            |            |
         |PUT flow(enabled:true)      |            |
         |--------------------------->|            |
         |       [enabled:true, status:none]       |
         |        FlowChanged(UPDATE) |            |
         |<---------------------------|FlowChanged(UPDATE)
         |                            |----------->|
         |                            |            |
         |                            | PUT flow(stats:establishing)
         |                            |<-----------|
         |  [enabled:true, status:establishing]    |        [Physical Switch]
         |        FlowChanged(UPDATE) |            | Flow setting  |
         |<---------------------------|            |-------------->|
         |                      FlowChanged(UPDATE)|               |
         |                            |----------->|               |
         |                            |            | Flow setting completed
         |                            |            |<--------------|
         |                            | PUT flow(stats:established)
         |                            |<-----------|
         |  [enabled:true, status:established]     |
         |                            |            |
         |       FlowChanged(UPDATE)  |            |
         |<---------------------------| FlowChanged(UPDATE)
         |                            |----------->|
         |                            |            |


Failure

    [controller/LogicComponent]    [Network]     [Driver]
         |                            |            |
         |  [enabled:true, status:established]     |
         |                            |            |         [Physical Switch]
         |                            |            | Flow Failed   |
         |                            |            |<--------------|
         |                            | PUT flow(stats:failed)     |
         |                            |<-----------|
         |       [enabled:true, status:failed]     |
         |                            |            |
         |       FlowChanged(UPDATE)  |            |
         |<---------------------------| FlowChanged(UPDATE)
         |                            |----------->|

    [controller/LogicComponent]    [Network]     [Driver]
         |                            |            |
         |  [enabled:true, status:established]     |
         |                            |            |         [Physical Switch]
         |                            |            | topology Failed   |
         |                            |            |<------------------|
         |                            | (topology(*) oper_sts:DOWN)    |
         |                            |            |                   |
         |                            | PUT flow(stats:failed)
         |                            |<-----------|
         |       [enabled:true, status:failed]     |
         |                            |            |
         |       FlowChanged(UPDATE)  |            |
         |<---------------------------| FlowChanged(UPDATE)
         |                            |----------->|

  * topology : Node, Port, or Link.


Key Value Description POST PUT
type <String> type is "BasicFlow" Mandatory Mandatory
matches list[BasicFlowMatch] One or more of the match conditions Mandatory Mandatory
path list[Link.link_id ] list of Link that Flow goes through. there is a need for a connected acyclic graph. Mandatory Mandatory
edge_actions dict<Node.node_id, list[FlowAction]> Action of edge node. Mandatory Mandatory
example(JSON)
{
"type": "BasicFlow",
"version": "XXXXXXXXXXXX",
"flow_id": "XXXXXXXXXXXX",
"owner": "XXXXXXXXXXXX",
"enabled": true,
"status": "none",
"matches": [ {...(BasicFlowMatch)...} ],
"path": ["LINK_ID1", "LINK_ID2"],
    "edge_actions": {
        "NODE_ID_1": [
            {...(BasicFlowAction)...},
            {...(BasicFlowAction)...}, ...]
    }
}

Key Value Description POST PUT
type <String> type is "OFPFlow" Mandatory Mandatory
matches list[OFPFlowMatch] One or more of the match conditions Mandatory Mandatory
idle_timeout <number> Units sec. Is regarded as 0 specified if it is omitted. Optional Optional
hard_timeout <number> Units sec. Is regarded as 0 specified if it is omitted. Optional Optional
path list[Link.link_id ] list of Link that Flow goes through. there is a need for a connected acyclic graph. Mandatory Mandatory
edge_actions dict<Node.node_id, list[OFPFlowAction]> Action of edge node. Mandatory Mandatory

represent the flow match of BasicFlow

Key Value Description
type <string> "BasicFlowMatch"
in_node <string> Node.node_id. Required
in_port <string> Port.port_id. optional (if key is not, Treat as ANY.)

represent the flow match of OpenFlow 1.3 if key is not, Treat as ANY.

Key Value Description
type <string> "OFPFlowMatch"
in_node <string> Node.node_id. Required
in_port <string> Port.port_id. Ingress port. This may be a physical or switch-defined logical port.(required support in the OpenFlow 1.3)
in_phy_port <integer>
metadata <string> Metadata passed between tables.
metadata_mask <string> Metadata mask
eth_src <string> Ethernet source address. format:"XX:XX:XX:XX:XX:XX" (required support in the OpenFlow 1.3)
eth_src_mask <string> Ethernet source address mask.
eth_dst <string> Ethernet destination address. format:"XX:XX:XX:XX:XX:XX" (required support in the OpenFlow 1.3)
eth_dst_mask <string> Ethernet destination address mask.
eth_type <integer> Ethernet frame type. (required support in the OpenFlow 1.3)
vlan_vid <integer> VLAN id
vlan_vid_mask <integer> VLAN id mask.
vlan_pcp <integer> VLAN priority.
ip_dscp <integer> IP DSCP (6 bits in ToS field).
ip_ecn <integer> IP ECN (2 bits in ToS field).
ip_proto <integer> IP protocol. (required support in the OpenFlow 1.3)
ipv4_src <string> IPv4 source address. format : "D.D.D.D" (required support in the OpenFlow 1.3)
ipv4_src_mask <string> IPv4 source address mask.
ipv4_dst <string> IPv4 destination address. format : "D.D.D.D" (required support in the OpenFlow 1.3)
ipv4_dst_mask <string> IPv4 destination address mask.
tcp_src <integer> TCP source port. (required support in the OpenFlow 1.3)
tcp_dst <integer> TCP destination port. (required support in the OpenFlow 1.3)
udp_src <integer> UDP source port. (required support in the OpenFlow 1.3)
udp_dst <integer> UDP destination port. (required support in the OpenFlow 1.3)
sctp_src <integer> SCTP source port.
sctp_dst <integer> SCTP destination port.
icmpv4_type <integer> ICMP type.
icmpv4_code <integer> ICMP code.
arp_op <integer> ARP opcode.
arp_spa <string> ARP source IPv4 address.
arp_spa_mask <string> ARP source IPv4 address mask.
arp_tpa <string> ARP target IPv4 address.
arp_tpa_mask <string> ARP target IPv4 address mask.
arp_sha <string> ARP source hardware address.
arp_sha_mask <string> ARP source hardware address mask.
arp_tha <string> ARP target hardware address.
arp_tha_mask <string> ARP target hardware address mask.
ipv6_src <string> IPv6 source address. (required support in the OpenFlow 1.3)
ipv6_src_mask <string> IPv6 source address mask.
ipv6_dst <string> IPv6 destination address. (required support in the OpenFlow 1.3)
ipv6_dst_mask <string> IPv6 destination address mask.
ipv6_flabel <integer> IPv6 Flow Label.
ipv6_flabel_mask <integer> IPv6 Flow Label mask.
icmpv6_type <integer> ICMPv6 type.
icmpv6_code <integer> ICMPv6 code.
ipv6_nd_target <string> Target address for ND.
ipv6_nd_sll <string> Source link-layer for ND.
ipv6_nd_tll <string> Target link-layer for ND.
mpls_label <integer> MPLS label.
mpls_tc <integer> MPLS TC.
mpls_bos <integer> MPLS BoS bit.
pbb_isid <integer> PBB I-SID.
pbb_isid_mask <integer> PBB I-SID mask.
tunnel_id <string> Logical Port Metadata.
tunnel_id_mask <string> Logical Port Metadata mask.
ipv6_exthdr <integer> IPv6 Extension Header pseudo-field
ipv6_exthdr_mask <integer> IPv6 Extension Header pseudo-field mask

Action of edge node.(BasicFlow)

  • [FlowActionOutput]
Key Value Description
type "FlowActionOutput"
output Port.port_id

Action of edge node.(OpenFlow 1.3)

  • [OFPFlowActionCopyTtlOut]
Key Value Description
type "OFPFlowActionCopyTtlOut" Copy TTL "outwards" -- from next-to-outermost
  • [OFPFlowActionCopyTtlIn]
Key Value Description
type "OFPFlowActionCopyTtlIn" Copy TTL "inwards" -- from outermost to
  • [OFPFlowActionSetMPLSTTL]
Key Value Description
type "OFPFlowActionSetMPLSTTL" MPLS TTL
mpls_ttl <Integer> The mpls_ttl field is the MPLS TTL to set.
  • [OFPFlowActionDecMPLSTTL]
Key Value Description
type "OFPFlowActionDecMPLSTTL" Decrement MPLS TTL
  • [OFPFlowActionPushVLAN]
Key Value Description
type "OFPFlowActionPushVLAN" Push a new VLAN tag
ethertype <Integer> VLAN ID
  • [OFPFlowActionPopVLAN]
Key Value Description
type "OFPFlowActionPopVLAN" Pop the outer VLAN tag
  • [OFPFlowActionPushMPLS]
Key Value Description
type "OFPFlowActionPushMPLS" Push a new MPLS tag
ethertype <Integer>
  • [OFPFlowActionPopMPLS]
Key Value Description
type "OFPFlowActionPopMPLS" Pop the outer MPLS tag
ethertype <Integer> Ethertype
  • [OFPFlowActionSetQueue]
Key Value Description
type "OFPFlowActionSetQueue" Set queue id when outputting to a port
queue_id <Integer> Queue ID
  • [OFPFlowActionGroup]
Key Value Description
type "OFPFlowActionGroup" Apply group.
group_id <Integer> The group_id indicates the group used to process this packet.
  • [OFPFlowActionSetNwTTL]
Key Value Description
type "OFPFlowActionSetNwTTL" IP TTL.
ip_ttl <Integer> The nw_ttl field is the TTL address to set in the IP header.
  • [OFPFlowActionDecNwTTL]
Key Value Description
type "OFPFlowActionDecNwTTL" Decrement IP TTL.
  • [OFPFlowActionSetField]
Key Value Description
type "OFPFlowActionSetField" Set a header field using OXM TLV format.
field <String> T.B.D.
  • [OFPFlowActionPushPBB]
Key Value Description
type "OFPFlowActionPushPBB" Push a new PBB service tag (I-TAG)
ethertype <Integer>
  • [OFPFlowActionPopPBB]
Key Value Description
type "OFPFlowActionPopPBB" Pop the outer PBB service tag (I-TAG)
  • [OFPFlowActionExperimenter]
Key Value Description
type "OFPFlowActionExperimenter"
experimenter <Integer> Experimenter ID which takes the same form as in struct ofp_experimenter_header
body <Integer> Experimenter defined Experimenter-defined arbitrary additional data.

Packet of abstract class.

Key Value Description POST PUT
packet_id <String> Unique packet's Identifier in this network. - -
type <String> Packet Type. see blow. Mandatory -
attributes dict{<String>, <String>} Optional -
type
type description
InPacket Packet_in of BasicFlow.
OutPacket Packet_out of BasicFlow.
OFPInPacket Packet_in of OFPFlow.
OFPOutPacket Packet_out of OFPFlow.

represents Packet_in of BasicFlow.

Key Value Description POST PUT
packet_id <String> Unique packet's Identifier in this network. - -
type <String> Type is "InPacket" Mandatory -
node Port.node_id node_id to input the packet Mandatory -
port Port.port_id port_id to input the packet Mandatory -
header BasicFlowMatch header info. Mandatory -
data <Binary> payload Mandatory -
attributes dict{<String>, <String>} Optional -

represents Packet_in of OFPFlow.

Key Value Description POST PUT
packet_id <String> Unique packet's Identifier in this network. - (*1) -
type <String> "OFPInPacket" Mandatory -
node Port.node_id node_id to input the packet Mandatory -
port Port.nort_id port_id to input the packet Mandatory -
header OFPFlowMatch header info. Mandatory -
data <Binary> payload Mandatory -
attributes dict{<String>, <String>} Optional -

represents Packet_out of BasicFlow.

Key Value Description POST PUT
packet_id <String> Unique packet's Identifier in this network. - -
type <String> Type is "OutPacket" Mandatory -
node Port.node_id node_id to output the packet. Mandatory -
ports list[Port.port_id] List of port for OutPacket. "ports" and "ports-except" can be specified only either. Optional -
ports-except list[Port.port_id] List of except port for OutPacket. "ports" and "ports-except" can be specified only either. Optional -
header BasicFlowMatch header info. Mandatory -
data <Binary> payload Mandatory -
attributes dict{<String>, <String>} Optional -

represents Packet_out of OFPFlow.

Key Value Description POST PUT
packet_id <String> Unique packet's Identifier in this network. - -
type <String> Type is "OutPacket" Mandatory -
node Port.node_id node_id to output the packet. Mandatory -
ports list[Port.port_id] List of port for ignore OutPacket. "ports" and "ports-except" can be specified only either. Optional -
ports-except list[Port.port_id] List of except port for OutPacket. "ports" and "ports-except" can be specified only either. Optional -
header BasicFlowMatch header info. Mandatory -
data <Binary> payload Mandatory -
attributes dict{<String>, <String>} Optional -

Stats of network's packet information.

Key Value Description
type <String> type is "PacketStatus"
in_packet_count <number> InPacket total count.
in_packet_bytes <number> InPacket total data size(Bytes)
in_packet_queue_count <number> count of current InPacket.
in_packets list[<string>] InPacket list of InPacket.packet_id
out_packet_count <number> OutPacket total count.
out_packet_bytes <number> OutPacket total data size(Bytes)
out_packet_queue_count <number> count of current OutPacket.
out_packets list[<string>] OutPacket list of OutPacket.packet_id

RemoteObject class and RemoteObject subclass property.

Key Value Description POST PUT
id <String> Unique Identifier in ODENOS. -(*1) Mandatory
type <String> ObjectType (example:ComponentManager,Network,Slicer,,,) Mandatory Mandatory
state <String> see "State Transition Table" - -
description <String> Object Description simple. - -
super_type <String> Component Only. super class ObjectType. (example:ComponentManager,NetworkComponent,Slicer,,,) - -
component_types <String> ComponentManager Only. List of instances that can be generated conponet. - -
connection_types list[<String>] Component Only. List of ComponentConnection.connection_type - -

(*1)id is automatically assigned.

example(JSON)
{
"id": "network1",
"super_type" : "Network",
"type": "Network",
"state": "running",
"description" : "NetworkComponent is network topology abstract class"
}

State Transition Table

State Current ↓ Next→ initializing running finalizing error
initializing - init completion - failure initial
running - - request Delete connection error
finalizing - - - -
error PUT state PUT state PUT state -

Key Value Description
(any) <String> any key & value

Connection information between OperatorComponent and NetworkComponent

key value description POST PUT
id <String> Unique Identifier in ODENOS. -(*1) Mandatory
type      <String> ObjectType Mandatory Mandatory
connection_type <String> Component can be set at any(original, aggregate, sliver, ... ) Optional Optional
state <String> see "State Transition Table" Optional(*2) Mandatory

(*1)id is automatically assigned. (*2)If you do not set the state,state set "initializing"

type
type description
ComponentConnectionLogicAndNetwork Connection between Logic Conponent and Network Component.

State Transition Table

State Current ↓ Next→ initializing running finalizing error
initializing - init completion - failure initial
running - - request Delete connection error
finalizing - - - -
error PUT state PUT state PUT state -

Sequence


connection

 [controller/LogicComponent]  [systemMgr]    [Logic]            [Component]
     |                            |             |                    |
     |                            |             |                    |
     |POST connections            |             |                    |
     |--------------------------->|             |                    |
     |              [status:initializing]       |                    |
     |                            |             |                    |
     |                            |ConnectionChanged(Add)            |
     |                            |------------>|                    |
     |                            |             |                    |
     |                            |             |onConnectionChangedAddedPre()
     |                            |             |------------------->|
     |                            |             |                    |
     |                            |             |               checks param
     |                            |             |                    |
     |                            |             |onConnectionChangedAdded()
     |                            |             |------------------->|
     |                            |             |                    |
     |                            |             |                subscribe
     |                            |             |                    |
     |                            |             |              Reflect topology
     |                            |             |                    |                 [Network]
     |                            |             |                    | PUT topology      |
     |                            |             |                    |------------------>|
     |                            |             | changestatus(running)                  |
     |                            |             |<-------------------|
     |                            |             |                    |
     |                            |PUT connections(status:running)   |
     |                            |<------------|                    |
     |                      [status:running]    |                    |
     |                            |             |                    |
     |                            |             |

disconnect

 [controller/LogicComponent]  [systemMgr]    [Logic]            [Component]
     |                            |             |                    |
     |                      [status:running]    |                    |
     |DEL connections             |             |                    |
     |--------------------------->|             |                    |
     |                            |ConnectionChanged(Del)            |
     |                            |------------>|                    |
     |                            |             |                    |
     |                            |             |onConnectionChangedDelPre()
     |                            |             |------------------->|
     |                            |             |                    |
     |                            |             |                checks param
     |                            |             |                    |
     |                            |             |onConnectionChangedDel()
     |                            |             |------------------->|
     |                            |             |                    |
     |                            |             | changestatus(finalizing)
     |                            |             |<-------------------|
     |                            |             |                    |
     |                            |PUT connections(status:finalizing)|
     |                            |<------------|                    |
     |        x[ConnectionChanged(UPDATE)](*)   |                    |
     |                    x<------|x[ConnectionChanged(UPDATE)](*)   |
     |                            |-->x         |                    |
     |                      [status:finalizing] |                    |
     |                            |             |                    |
     |                            |             |                 unsubscribe
     |                            |             |                    |
     |                            |             |               Reflect topology
     |                            |             |                    |                 [Network]
     |                            |             |                    | DEL topology      |
     |                            |             |                    |------------------>|
     |                            |             |                    |                   |
     |                            |             | changestatus(none) |                   |
     |                            |             |<-------------------|                   |
     |                            |PUT connections(status:none)      |
     |                            |<------------|                    |
     |                     [delete connection]  |
     |                            | x[ConnectionChanged(DELETE)](*)
     |                            |--->x        |
     |  x[ConnectionChanged(DELETE)](*)         |
     |                     x<-----|             |

(*) Event notification None.


Connection information between Logic Component and Network Component.

key value description POST PUT
id <String> see ComponentConnection -(*1) Mandatory
type      <String> type is "LogicAndNetwork" Mandatory Mandatory
connection_type <String> see ComponentConnection Optional Optional
state <String> see ComponentConnection Optional(*2) Mandatory
logic_id <String> LogicComponent ID Mandatory Mandatory
network_id <String> NetworkComponent ID Mandatory Mandatory

(*1)id is automatically assigned. (*2)If you do not set the state,state set "initializing"

example(JSON)
{
"id": "slicer1_network1"
"type": "LogicAndNetwork"
"connection_type": "original"
"state": "running"
"logic_id": "slicer1",
"network_id": "network1"
}

Boundary abstract class. Connection rule between heterogeneous networks.

key value description POST PUT
id <String> Unique Identifier in ODENOS. -(*1) Mandatory
type <String> Boundary Type Mandatory Mandatory

(*1)id is automatically assigned.

Type

Federator Boundary class. Connection rule between heterogeneous networks.

key value description POST PUT
id <String> Unique Identifier in ODENOS. -(*1) Mandatory
type <String> Boundary Type is "Federator" Mandatory Mandatory
network1 <String> networkComponent ID (ObjectProperty.id) Mandatory Mandatory
node1 <String> Connection Node.id Mandatory Mandatory
port1 <String> Connection Port.id Mandatory Mandatory
network2 <String> networkComponent ID (ObjectProperty.id) Mandatory Mandatory
node2 <String> Connection Node.id Mandatory Mandatory
port2 <String> Connection Port.id Mandatory Mandatory

(*1)id is automatically assigned.

example(JSON)
  {
    "id"      : "federator1_boundary1",
    "type"    : "Federator",
    "network1": "original_network1",
    "network2": "original_network2",
    "node1"   : "original_network1_node1",
    "node2"   : "original_network2_node1",
    "port1"   : "original_network1_port1",
    "port2"   : "original_network2_port1"
  }

LinkLayerizer Boundary class. Connection rule between heterogeneous networks.

key value description POST PUT
id <String> Unique Identifier in ODENOS. -(*1) Mandatory
type <String> Boundary Type is "LinkLayerizer" Mandatory Mandatory
lower_nw <String> networkComponent ID (ObjectProperty.id) Mandatory Mandatory
lower_nw_node <String> Connection Node.id Mandatory Mandatory
lower_nw_port <String> Connection Port.id Mandatory Mandatory
upper_nw <String> networkComponent ID (ObjectProperty.id) Mandatory Mandatory
upper_nw_node <String> Connection Node.id Mandatory Mandatory
upper_nw_port <String> Connection Port.id Mandatory Mandatory

(*1)id is automatically assigned.

example(JSON)
  {
    "id"           : "linklayerizer1_boundary1",
    "type"         : "LinkLayerizer",
    "lower_nw"     : "lower_nw1",
    "upper_nw"     : "upper_nw2",
    "lower_nw_node": "lower_nw_node1",
    "upper_nw_node": "upper_nw_node1",
    "lower_nw_port": "lower_nw_port1",
    "upper_nw_port": "upper_nw_port1"
  }

key value description
subscriber_id <String> subscriber's ObjectProperty.id
event_filters dict<ObjectProperty.id, list [EventType.event_type] Subscribe conditions.

key value description
publisher_id <String> event publishing Object's Id.
event_type <String> event type
body - Different value for each event.

key value description
publisher_id <String> event publishing RemoteObject.
event_type <String> "ObjectPropertyChanged"
action <String> "update"
prev ObjectProperty Before the update ObjectProperty.
curr ObjectProperty update ObjectProperty.

key value description
publisher_id <String> event publishing RemoteObject.
event_type <String> "ObjectSettingsChanged"
action <String> "update"
prev ObjectSettings Before the update ObjectSettings.
curr ObjectSettings update ObjectSettings.

key value description
publisher_id <String> event publishing SystemManager.
event_type <String> "ComponentConnectionChanged"
action <String> "add", "delete", or "update" (string)
prev ComponentConnection Before the update ComponentConnection. none If action is "add".
curr ComponentConnection update ComponentConnection. none If action is "delete".

key value description
publisher_id <String> event publishing SystemManager.
event_type <String> "ComponentManagerChanged"
action <String> "update"
prev ObjectSettings Before the update ObjectSettings.
curr ObjectSettings update ObjectSettings.

key value description
publisher_id <String> event publishing ComponentManager.
event_type <String> "ComponentChanged"
action <String> "add", "delete", or "update"
prev ObjectProperty Before the update ObjectProperty. none If action is "add".
curr ObjectProperty update ObjectProperty. none If action is "delete".

key value description
publisher_id <String> event publishing network.
event_type <String> "TopologyChanged"
version <String> Topology.version
prev Topology none
curr Topology none

key value description
publisher_id <String> event publishing network.
event_type <String> "NodeChanged"
id <String> Node.node_id
action <String> "add", "delete", or "update"
version <String> curr Node.version
prev Node Before the update Node. none If action is "add".
curr Node update Node. none If action is "delete".

key value description
publisher_id <String> event publishing network.
event_type <String> "PortChanged"
id <String> Port.port_id
action <String> "add", "delete", or "update"
version <String> curr Port.version
prev Port Before the update Port. none If action is "add".
curr Port update Port. none If action is "delete".

key value description
publisher_id <String> event publishing network.
event_type <String> "LinkChanged"
id <String> Link.link_id
action <String> "add", "delete", or "update"
version <String> curr Link.version
prev Link Before the update Link. none If action is "add".
curr Link update Link. none If action is "delete".

key value description
publisher_id <String> event publishing network.
event_type <String> "FlowChanged"
id <String> Flow.flow_id
action <String> "add", "delete", or "update"
version <String> curr Flow.version
prev Flow Before the update Flow. none If action is "add".
curr Flow update Flow. none If action is "delete".

key value description
publisher_id <String> event publishing network.
event_type <String> "InPacketAdded"
id <String> InPacket.packet_id

key value description
publisher_id <String> event publishing network.
event_type <String> "OutPacketAdded"
id <String> OutPacket.packet_id