DDS-XRCE 1.0 FTF Avatar
  1. OMG Issue

DDSXRCE — Possible CREATE_CLIENT and STATUS_AGENT reduction

  • Key: DDSXRCE-4
  • Status: closed  
  • Source: eProsima ( Jaime Martin-Losa)
  • Summary:

    Taking into account that both `CREATE_CLIENT` and `STATUS_AGENT` are unfragmentable submessages,
    they bound the minimum MTU of the protocol.
    Therefore, it will be welcome a possible reduction of these submessages in order to reduce the minimum MTU.
    For example, currently, the `CREATE_CLIENT` submessage has 34 bytes of minimum size (without `ClientKey` nor `properties`),
    therefore, it could not be possible to use this protocol over version 4.0 of the BLE (Bluetooth Low Energy) protocol, which has only 27 bytes of maximum MTU.

    According to the aforementioned, the following `CREATE_CLIENT` and `STATUS_AGENT` submessage modification are purpose:

    1. Remove the `request_id` and `object_id` from both `CREATE_CLIENT` and `STATUS_AGENT` submessages.
    Thas is, remove the inheritance from `BaseObjectRequest` and `BaseObjectReply` from `CREATE_CLIENT` and `STATUS_AGENT` respectively.
    It should be noted that 1) the `object_id =

    {0xFF, 0xFE}

    ` is a redundant field and 2) the `request_id` has a similar behaviour to `sequence_nr` for unestablished session.
    2. Remove the `client_timestamp` and `agent_timestamp` from `CREATE_CLIENT` and `STATUS_AGENT` respectively.
    Both timestamps could be sent through a new `TIME` submessage which allows implementing clock synchronization protocols.

    These modifications involve the following changes in the IDL:

    @extensibility(FINAL)
    struct CREATE_CLIENT_Payload {
        CLIENT_Representation client_representation;
    };
    
    @extensibility(FINAL)
    struct CLIENT_Representation {
        XrceCookie   xrce_cookie;
        XrceVersion  xrce_version;
        XrceVendorId xrce_vendor_id;
        ClientKey    client_key;
        SessionId    session_id;
        @optional PropertySeq properties;
    };
    
    @extensibility(FINAL)
    struct STATUS_AGENT_Payload {
        AGENT_Representation agent_info;
    };
    
    @extensibility(FINAL)
    struct AGENT_Representation {
        XrceCookie   xrce_cookie;
        XrceVersion  xrce_version;
        XrceVendorId xrce_vendor_id;
        @optional PropertySeq properties;
    };
    

    With the aforementioned modifications, the `CREATE_CLIENT` message will have 22 bytes of minimum size,
    while the `STATUS_AGENT` message will have only 17 bytes.

    CREATE_CLIENT message
    -----------------------------------
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   session_id  |   stream_id   |         sequence_nr           | 4
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | CREATE_CLIENT |     flags     |       submessage_length       | 8
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                          xrce_cookie                          | 12
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          xrce_version         |       xrce_vendor_id          | 16
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                          client_key                           | 20
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  session_id   |  properties?  | 22
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    
    STATUS_AGENT message
    ----------------------------------
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   session_id  |   stream_id   |         sequence_nr           | 4
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | STATUS_AGENT  |     flags     |       submessage_length       | 8
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                          xrce_cookie                          | 12
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          xrce_version         |       xrce_vendor_id          | 16
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  properties?  | 17
    +-+-+-+-+-+-+-+-+
    
  • Reported: DDS-XRCE 1.0b1 — Tue, 15 Jan 2019 15:24 GMT
  • Disposition: Resolved — DDS-XRCE 1.0
  • Disposition Summary:

    Simplify the CREATE_CLIENT and STATUS_AGENT messages

    Perform the simplifications suggested in the issue description.

  • Updated: Tue, 8 Oct 2019 17:54 GMT