OMF Protocol Specifications for XMPP communication¶
This page describes the different protocol messages used between the OMF entities. It is a 'working' design document, as such this page is expected to change as OMF evolves.
Communication between EC and RC¶
Initial handshake:¶
- EC to RC
<ENROLL id="omf-payload"> <IMAGE>*</IMAGE> <SLICEID>testing_slice</SLICEID> <INDEX>1</INDEX> <EXPID>norbit_2010_07_16_12_13_31</EXPID> <TARGET>omf.nicta.node5</TARGET> </ENROLL>
- Reply from RC to EC
<OK id="omf-payload"> <TARGET>omf.nicta.node5</TARGET> <EXPID>norbit_2010_07_16_12_13_31</EXPID> <SLICEID>testing_slice</SLICEID> <IMAGE>*</IMAGE> <REASON>ENROLLED</REASON> <INDEX>1</INDEX> <MESSAGE>Enrolled into Experiment ID: 'norbit_2010_07_16_12_13_31'</MESSAGE> </OK> OR <ERROR id="omf-payload"> <TARGET>omf.nicta.node5</TARGET> <EXPID>norbit_2010_07_16_12_13_31</EXPID> <SLICEID>testing_slice</SLICEID> <IMAGE>*</IMAGE> <REASON>ALREADY_ENROLLED</REASON> <INDEX>1</INDEX> <MESSAGE>Resource Controller already enrolled! - ignoring this ENROLL command!</MESSAGE> </ERROR> OR <ERROR id="omf-payload"> <TARGET>omf.nicta.node5</TARGET> <EXPID>norbit_2010_07_16_12_13_31</EXPID> <SLICEID>testing_slice</SLICEID> <IMAGE>foo</IMAGE> <REASON>WRONG_IMAGE</REASON> <INDEX>1</INDEX> <MESSAGE>Requested Image: 'foo' - Current Image: 'bar'</MESSAGE> </ERROR> OR <ERROR id="omf-payload"> <TARGET>omf.nicta.node5</TARGET> <EXPID>norbit_2010_07_16_12_13_31</EXPID> <SLICEID>testing_slice</SLICEID> <IMAGE>*</IMAGE> <REASON>OLD_ENROLL</REASON> <INDEX>1</INDEX> <MESSAGE>Failed to Process ENROLL command! Maybe it came from an old experiment - ignoring it!</MESSAGE> </ERROR>
Alias command:¶
- EC to RC
<ALIAS id="omf-payload"> <SLICEID>testing_slice</SLICEID> <NAME>Receiver</NAME> <EXPID>norbit_2010_07_16_12_13_31</EXPID> <TARGET>omf.nicta.node5</TARGET> </ALIAS>
- Reply from RC to EC
<OK id="omf-payload"> <TARGET>omf.nicta.node5</TARGET> <EXPID>norbit_2010_07_16_12_13_31</EXPID> <SLICEID>testing_slice</SLICEID> <REASON>ENROLLED</REASON> <NAME>Receiver</NAME> <MESSAGE>Enrolled into a new group: 'Receiver'</MESSAGE> </OK> OR <ERROR id="omf-payload"> <TARGET>omf.nicta.node5</TARGET> <EXPID>norbit_2010_07_16_12_13_31</EXPID> <SLICEID>testing_slice</SLICEID> <REASON>WRONG_ALIAS</REASON> <NAME>Receiver</NAME> <MESSAGE>Failed to Process ALIAS command! Cannot listen on the address for this alias 'Recevier' - ignoring it!</MESSAGE> </ERROR>
Configure command:¶
- EC to RC
<CONFIGURE id="omf-payload"> <PATH>net/w0/mode</PATH> <TARGET>Receiver</TARGET> <VALUE>managed</VALUE> <EXPID>norbit_2010_07_16_13_25_13</EXPID> <SLICEID>testing_slice</SLICEID> </CONFIGURE>
- Reply from RC to EC
<OK id="omf-payload"> <SLICEID>testing_slice</SLICEID> <VALUE>managed</VALUE> <EXPID>norbit_2010_07_16_13_25_13</EXPID> <TARGET>omf.nicta.node5</TARGET> <REASON>CONFIGURED</REASON> <PATH>net/w0/mode</PATH> <MESSAGE>ath0</MESSAGE> </OK> OR <ERROR id="omf-payload"> <TARGET>omf.nicta.node5</TARGET> <VALUE>abcd</VALUE> <SLICEID>testing_slice</SLICEID> <EXPID>norbit_2010_07_16_13_25_13</EXPID> <REASON>FAILED_CONFIGURE</REASON> <PATH>net/w0/mode</PATH> <MESSAGE>Some error message</MESSAGE> </ERROR>
Execute command:¶
- EC to RC
<EXECUTE id="omf-payload">
<ENV>OML_SERVER=tcp:10.0.0.200:3003 OML_EXP_ID=norbit_2010_07_16_13_25_13 OML_NAME=Receiver </ENV>
<PATH>/usr/bin/otr2</PATH>
<TARGET>Receiver</TARGET>
<EXPID>norbit_2010_07_16_13_25_13</EXPID>
<OMLCONFIG>
<omlc exp_id="norbit_2010_07_16_13_25_13" id="Receiver">
<collect url="tcp:10.0.0.200:3003">
<mp name="udp_in" samples="3"/>
</collect>
</omlc>
</OMLCONFIG>
<APPID>test_app_otr2</APPID>
<SLICEID>testing_slice</SLICEID>
<CMDLINEARGS>--udp:local_host 192.168.1.2 --udp:local_port 3000</CMDLINEARGS>
</EXECUTE>
- Reply from RC to EC
<APP_EVENT id="omf-payload"> <SLICEID>testing_slice</SLICEID> <VALUE>STARTED</VALUE> <EXPID>norbit_2010_07_16_13_25_13</EXPID> <APPID>test_app_otr2</APPID> <TARGET>omf.nicta.node5</TARGET> <MESSAGE></MESSAGE> </APP_EVENT>
- When Application terminates, reply from RC to EC
<APP_EVENT id="omf-payload"> <SLICEID>testing_slice</SLICEID> <VALUE>DONE.OK</VALUE> <EXPID>norbit_2010_07_16_13_25_13</EXPID> <APPID>test_app_otr2</APPID> <TARGET>omf.nicta.node5</TARGET> <MESSAGE>status: 0</MESSAGE> </APP_EVENT> OR <APP_EVENT id="omf-payload"> <SLICEID>testing_slice</SLICEID> <VALUE>DONE.ERROR</VALUE> <EXPID>norbit_2010_07_16_13_55_47</EXPID> <APPID>test_app_otr2</APPID> <TARGET>omf.nicta.node5</TARGET> <MESSAGE>status: 32512</MESSAGE> </APP_EVENT>
Application Events:¶
- RC to EC
<APP_EVENT id="omf-payload"> <SLICEID>testing_slice</SLICEID> <VALUE>STDOUT</VALUE> <EXPID>norbit_2010_07_16_13_25_13</EXPID> <APPID>test_app_otr2</APPID> <TARGET>omf.nicta.node5</TARGET> <MESSAGE># OTG2 Traffic Sink V1.1</MESSAGE> </APP_EVENT> OR <APP_EVENT id="omf-payload"> <SLICEID>testing_slice</SLICEID> <VALUE>STDERR</VALUE> <EXPID>norbit_2010_07_16_13_55_47</EXPID> <APPID>test_app_otr2</APPID> <TARGET>omf.nicta.node5</TARGET> <MESSAGE>env: /usr/bin/otr2: No such file or directory</MESSAGE> </APP_EVENT>
Device Events:¶
- RC to EC
<DEV_EVENT id="omf-payload"> <TARGET>omf.nicta.node5</TARGET> <VALUE>CELL_ID</VALUE> <SLICEID>testing_slice</SLICEID> <APPID>net/w0</APPID> <EXPID>norbit_2010_07_16_14_01_03</EXPID> <MESSAGE>Not-Associated</MESSAGE> </DEV_EVENT>
Reset Command:¶
- EC to RC
<RESET id="omf-payload"> <TARGET>*</TARGET> <EXPID>norbit_2010_07_16_13_25_13</EXPID> <SLICEID>testing_slice</SLICEID> </RESET>
OLD SPECIFICATION¶
BELOW ARE OLD SPECIFICATION, KEPT ONLY FOR INFORMATION
Communication between NodeHandler (aka Experiment Controller) and NodeAgent (aka Resource Controller):¶
- Message from NH to NA should have the following format:
<command> <argument1> <argument2> etc...
- Note: This was the format also documented in the original NA TCP server communicator. However, in the case of PubSub communicator <target> is no longer relevant in a pub/sub communication scheme, that's why it's not supported anymore.
- 'YOUARE' message: YOUARE <sessionID> <experimentID> <name> <alias1> <alias2> etc...
- YOUARE message is sent from NH to NA. It is typically the first message sent.
- <sessionID> the session ID that the NA should use
- <experimentID> the experiment ID that the NA should use
- <name> becomes the Agent Name for this Session/Experiment.
- <alias1> etc... the optional aliases for this NA
- NOTE: After receiving a 'YOUARE' the NA has to reply back with a heartbeat 'HB' message.
- 'HB' heartbeat message: <name> <seqno> HB <outofseq> <inseqcount> <now> <delta>
- <name> is the name of the agent sending the heartbeat
- HB message is sent as acknowledgment from the NA to the NH.
- In the original Multicast Communication scheme between NH-NA, it is used to ACK correct reception and execution of a command.
- In the later TCP-based Communication scheme (NH=client / NA=server), it is used to ACK correct execution of a command (e.g. CONFIGURE, EXEC,...)
- In the new under-development PubSub Communication scheme, it will also be used to ACK correct execution of a command.
- When used in these last two schemes, the fields are set as follows: seq = 0, outofseq = inseqcount = now = delta = -1.
- ...