Understanding TR-369 GetSupportedProtocol and GetSupportedProtocol Response Messages

Understanding TR-369 GetSupportedProtocol and GetSupportedProtocol Response Messages
"Two Bears Handshaking in the Space" by DALL-E

In the realm of the TR-369 USP (User Services Platform) specification, effective communication and interoperability between Controllers and Agents are key aspects. One vital message type that aids in achieving interoperability and ensuring compatibility is the GetSupportedProtocol Message.

In this post, we will delve into the purpose and significance of GetSupportedProtocol Messages, focusing on how they facilitate communication between Controllers and Agents by exchanging information about supported USP Protocol versions. We will explore the structure of GetSupportedProtocol Messages and their response counterparts, providing a clear understanding of their role in ensuring seamless interoperability.

Let's see the GetSupportedProtocol proto-buff definition from the official usp proto-buffer file:

message GetSupportedProtocol {
  string controller_supported_protocol_versions = 1;
}
GetSupportedProtocol definition from usp/specification/usp-msg-1-2.proto file

The primary purpose of GetSupportedProtocol Messages is to enable Controllers and Agents to learn which versions of the USP Protocol are supported by each entity.

GetSupportedProtocol Messages adhere to the structure defined in the TR-369 USP specification. They consist of a header and a body. The body of the GetSupportedProtocol Message includes a field called "controller_supported_protocol_versions," which contains a comma-separated list of USP Protocol versions supported by the Controller.

{
  "header": {
    "msg_id": "2023-05-17T07:41:51.959Z",
    "msg_type": "GET_SUPPORTED_PROTO"
  },
  "body": {
    "request": {
      "get_supported_protocol": {
        "controller_supported_protocol_versions": "1.0,1.1,1.2"
      }
    }
  }
}
USP Message Example for a GetSupportedProtocol Request Type

GetSupportedProtocol Response Messages: Upon receiving a GetSupportedProtocol Message, the Agent responds with a GetSupportedProtocol Response Message. The body of the response message includes a field called "agent_supported_protocol_versions," which contains a comma-separated list of USP Protocol versions supported by the Agent.

Let's see the GetSupportedProtocolResp proto-buff definition from the official usp proto-buffer file:

message GetSupportedProtocolResp {
  string agent_supported_protocol_versions = 1;
}
GetSupportedProtocolResp definitions from usp/specification/usp-msg-1-2.proto file

The following fields are available for the GetSupportedProtocol Message Response:

Msg Id: A unique identifier assigned by the Endpoint/Controller that generated this Message.
Agent Supported Protocol Versions: Supported USP Protocol Versions for the Agent.

{
  "header": {
    "msg_id": "2023-05-17T07:41:51.959Z",
    "msg_type": "GET_SUPPORTED_PROTO_RESP"
  },
  "body": {
    "response": {
      "get_supported_protocol_resp": {
        "agent_supported_protocol_versions": "1.0,1.1,1.2"
      }
    }
  }
}
USP Message Example for a GetSupportedProtocol Response Type

By exchanging supported protocol version information, Controllers and Agents can ensure that they are compatible with each other's communication requirements. This facilitates interoperability and allows for seamless interaction between different USP implementations.

One crucial aspect enabled by GetSupportedProtocol Messages is backward compatibility. By learning the supported protocol versions of the Agent, the Controller can adapt its communication approach to ensure compatibility with older versions of the USP Protocol supported by the Agent. This ensures that newer Controllers can still communicate effectively with older Agents and vice versa.


References:

  1. TR-369 USP Specification, Broadband Forum, https://www.broadband-forum.org/tr-369
  2. USP Record Definitions, GitHub Repository, https://github.com/BroadbandForum/usp