MDC Gateway Transporter Task

If you have multiple gateways (Diameter Gateway or External Diameter Gateway (EDGW)), you can configure the MDC Gateway Transporter Task to route messages from the Charging Server to the gateway that initiated the original message.

You must configure global message routing and configure the MDC Gateway Transporter Task in the mtx_config_base_xml_sed.extra file. If this file does not exist in ${MTX_CUSTOM_DIR}, you must create it.

Out-of-the-box, a TCP listener is configured for the MDC Gateway Transporter Task. You can also configure an HTTP2 listener. For information about configuring the MDC Gateway Transporter Task listener ports, see the discussion about MDC Gateway configuration.

Global Message Routing Configuration

The following mtx_config_base_xml_sed.extra configuration shows an example global message routing configuration. In your environment, configure routing for all supported messages (for example, MtxDiamGxRAMsg, MtxDiamRxRAMsg, MtxDiamASMsg, MtxDiamRxASMsg, and so forth). In this example:
  • container_name — specifies the message type for this routing entry, with possible values:
    • MtxDiamRAMsg
    • MtxDiamGxRAMsg
    • MtxDiamRxRAMsg
    • MtxDiamSySNMsg
    • MtxDiamRxASMsg
  • queue_id_mapping — Specifies the Charging Server queue mapping, with two possible values:
    • 0 — Route to/from MDC-GW (Transporter Task).
    • 1 — Route to/from Diameter Gateway.
  • connection_id_mapping — Specifies the Transporter Task Route ID mapping, with 16 possible values 0-15:
    • The values 0, 7, and 13 in this example are:
      • 0: Transporter Task inbound connection
      • 7: Transporter Task outbound connection #7
      • 8: Transporter Task outbound connection #8
      • 13: Transporter Task outbound connection #13
      • 14: Transporter Task outbound connection #14
      • 15: Transporter Task outbound connection #15
/<!-- message_routing -->/ a\
    <message_routing id="1">\
       <container_name>MtxDiamGxRAMsg</container_name>\
        <queue_id_mapping>\
           <input>1</input><output>0</output>\
        </queue_id_mapping>\
        <connection_id_mapping>\
           <input>0</input><output>8</output>\
        </connection_id_mapping>\
    </message_routing>\
    <message_routing id="2">\
        <container_name>MtxDiamSySNMsg</container_name>\
        <queue_id_mapping>\
           <input>1</input><output>0</output>\
        </queue_id_mapping>\
        <connection_id_mapping>\
           <input>0</input><output>13</output>\
        </connection_id_mapping>\
    </message_routing>\
    <message_routing id="3">\
        <container_name>MtxDiamRxRAMsg</container_name>\
        <queue_id_mapping>\
           <input>1</input><output>0</output>\
        </queue_id_mapping>\
        <connection_id_mapping>\
           <input>0</input><output>14</output>\
        </connection_id_mapping>\
    </message_routing>\
    <message_routing id="4">\
        <container_name>MtxDiamRxASMsg</container_name>\
        <queue_id_mapping>\
           <input>1</input><output>0</output>\
        </queue_id_mapping>\
        <connection_id_mapping>\
           <input>0</input><output>15</output>\
        </connection_id_mapping>\
    </message_routing>\
    <message_routing id="5">\
        <container_name>MtxDiamRAMsg</container_name>\
        <queue_id_mapping>\
           <input>1</input><output>0</output>\
        </queue_id_mapping>\
        <connection_id_mapping>\
           <input>0</input><output>7</output>\
        </connection_id_mapping>\
    </message_routing>

MDC Gateway Transporter Task Configuration

The following mtx_config_base_xml_sed.extra configuration shows an example MDC Gateway Transporter Task configuration. In this example:
  • transporter_tcp_listener — Specifies the inbound connection, corresponding to the special Route ID = 0.
  • client_connection — Specifies outbound connections corresponding to Route ID range 0-15.
/<transporter_tcp_listener>/ i\
\
    <client_connection id="7">\
        <protocol>TCP</protocol>\
        <address>diameter-server</address>\
        <port>24060</port>\
        <perform_schema_exchange>0</perform_schema_exchange>\
        <reconnection_timeout_in_seconds>2</reconnection_timeout_in_seconds>\
        <max_reconnection_attempts>0</max_reconnection_attempts>\
        <http2_secured>false</http2_secured>\
        <http2_protocol_negotiation>none</http2_protocol_negotiation>\
    </client_connection>\
    <client_connection id="13">\
        <protocol>TCP</protocol>\
        <address>diameter-server</address>\
        <port>24060</port>\
        <perform_schema_exchange>0</perform_schema_exchange>\
        <reconnection_timeout_in_seconds>2</reconnection_timeout_in_seconds>\
        <max_reconnection_attempts>0</max_reconnection_attempts>\
        <http2_secured>false</http2_secured>\
        <http2_protocol_negotiation>none</http2_protocol_negotiation>\
    </client_connection>\
    <client_connection id="8">\
        <protocol>TCP</protocol>\
        <address>diameter-server</address>\
        <port>24060</port>\
        <perform_schema_exchange>0</perform_schema_exchange>\
        <reconnection_timeout_in_seconds>2</reconnection_timeout_in_seconds>\
        <max_reconnection_attempts>0</max_reconnection_attempts>\
        <http2_secured>false</http2_secured>\
        <http2_protocol_negotiation>none</http2_protocol_negotiation>\
    </client_connection>\
    <client_connection id="14">\
        <protocol>TCP</protocol>\
        <address>diameter-server</address>\
        <port>24060</port>\
        <perform_schema_exchange>0</perform_schema_exchange>\
        <reconnection_timeout_in_seconds>2</reconnection_timeout_in_seconds>\
        <max_reconnection_attempts>0</max_reconnection_attempts>\
        <http2_secured>false</http2_secured>\
        <http2_protocol_negotiation>none</http2_protocol_negotiation>\
    </client_connection>\
    <client_connection id="15">\
        <protocol>TCP</protocol>\
        <address>diameter-server</address>\
        <port>24060</port>\
        <perform_schema_exchange>0</perform_schema_exchange>\
        <reconnection_timeout_in_seconds>2</reconnection_timeout_in_seconds>\
        <max_reconnection_attempts>0</max_reconnection_attempts>\
        <http2_secured>false</http2_secured>\
        <http2_protocol_negotiation>none</http2_protocol_negotiation>\
    </client_connection>\

/<!-- transporter tcp listener tcp options go here -->/ a\
    <tcp_options_listen>\
        <ip_free_bind>1</ip_free_bind>\
        <ip_bind_address_no_port>1</ip_bind_address_no_port>\
        <!-- ipv6_v6only>0</ipv6_v6only -->\
        <reuse_address>1</reuse_address>\
        <linger_in_seconds>7</linger_in_seconds>\
        <send_buffer_size_in_bytes>0</send_buffer_size_in_bytes>\
        <send_buffer_force_size_in_bytes>0</send_buffer_force_size_in_bytes>\
        <receive_buffer_size_in_bytes>8192</receive_buffer_size_in_bytes>\
        <receive_buffer_force_size_in_bytes>0</receive_buffer_force_size_in_bytes>\
        <tcp_defer_accept_in_seconds>18</tcp_defer_accept_in_seconds>\
        <no_delay>1</no_delay>\
        <tcp_syn_count>17</tcp_syn_count>\
        <fin_timeout_in_seconds>16</fin_timeout_in_seconds>\
        <tcp_quick_ack>1</tcp_quick_ack>\
        <keep_alive>1</keep_alive>\
        <keep_alive_probe_count>11</keep_alive_probe_count>\
        <keep_alive_idle_timeout_in_seconds>12</keep_alive_idle_timeout_in_seconds>\
        <keep_alive_idle_probe_interval_in_seconds>13</keep_alive_idle_probe_interval_in_seconds>\
    </tcp_options_listen>\
    <tcp_options_accepted>\
        <fin_timeout_in_seconds>31</fin_timeout_in_seconds>\
    </tcp_options_accepted>

Internal Diameter Call, External Diameter RAR (Upgrade Scenario)

In this example, a Gy session is initiated by Diameter Gateway with RARs routed to an EDGW. The MDC Gateway Transporter Task is configured with:
<message_routing id="5">\
   <container_name>MtxDiamRAMsg</container_name>\
   <queue_id_mapping>\
      <input>1</input><output>0</output>\
   </queue_id_mapping>\
   <connection_id_mapping>\
      <input>0</input><output>7</output>\
   </connection_id_mapping>\
        </message_routing>
Figure 1 shows the message flow between Diameter Gateway, Charging Server, and EDGW.
Figure 1. Example Message Routing


For more information about configuring the mtx_config_base_xml_sed.extra file, see the discussion about ConfigMap configuration in MATRIXX Configuration.