> For the complete documentation index, see [llms.txt](https://prosbcdocs.telcobridges.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://prosbcdocs.telcobridges.com/telecom-references/sip-and-voip/configuration-h248.md).

# Configuration:H248

## H.248 Configuration

The simplest approach to configuring H.248 is to *POST* only attributes for which we want non-default values. The structure of the H.248 JSON object can be queried by getting the default values, explained later on on this page.

### Element Addition (POST)

#### h248\_stack

This example uses default values mostly. Some attributes are given specific values, depending on the needs. There is also required attributes, for which no defaults exist. Here and **transport\_protocol.ip\_interface** and **transport\_protocol.public\_ip\_address** are by default empty, and must be set otherwise the *POST* will be refused. The attribute *naps* is also required to complete the overall configuration, but can be omitted during the creation *POST*, and added at a later time. POST /configurations/{CfgName}/h248\_stacks { -> Content: { "***meta***" : { "version" : "2.9.10" }, "advanced\_parameters" : { "serialize\_null\_context\_commands" : true }, "enabled" : true, "naps" : \[ "NAP\_TDM", "RTP\_NAP" ], "timers" : { "local\_response\_timer" : "4 seconds" }, "transport\_protocol" : { "ip\_interface" : "TB0999999.SIG", "public\_ip\_address" : "10.1.0.254", "use\_ip\_interface" : true } } Here *{CfgName}* should be replaced by the name of your configuration. TB0999999.SIG is the IP interface name to use for the H.248 signalling trafic. This name must be globally unique, and therefore the **Unit** serial number must be prepended to the **IP interface name** in order to form a globally unique name. ip\_interface = Unit.IpInterfaceName

For example, here the **ip\_interface** name is **TB0999999.SIG**

![IpInterfaceName](https://docs.telcobridges.com/w/images/4/48/IpInterfaceName.png)

#### h248\_media\_gateway\_controllers

After having added the h.248 stack, h248\_media\_gateway\_controller can be added. POST /configurations/{CfgName}/h248\_stacks/gateway\_h248/h248\_media\_gateway\_controllers -> Content: { "***meta***" : { "version" : "2.9.10" }, "name" : "MyMGC", "ip\_address" : "10.1.0.252", "port\_to\_send\_for\_text\_encoding" : 2944, "position" : 1 }

#### h248\_tdm\_terminations

New element can't be added into h248\_tdm\_terminations collection, they are automatically added when linking **NAPs** to **h248\_gateway**. E1/T1 trunks owned by linked **NAPs** will be populated in the *h248\_tdm\_terminations* collection.

After having configured the *naps* parameter of *gateway\_h248* h248\_stack element, the h248\_tdm\_terminations collection get be retrieved to be configured.

By default, elements on the collection will structured as the following: "{ElementName}" : { "line\_service" : "{TrunkName}", "suffix\_start\_number" : 0, "term\_name\_prefix" : "TRK\_{TrunkName}/", "timeslot\_mask" : 0, "type" : "TDM", "use\_timeslot\_number" : true }

The **{ElementName}** corresponds to the **"term\_name\_prefix"** without the trailing '/'. Changing **term\_name\_prefix** will result in changing the **{ElementName}** in the collection.

The default **"term\_name\_prefix"** is built by prepending 'TRK\_' to the associated **"line\_service"** trunk name.

So, if the line service 0 name would be LS\_0, we would get the following: "TRK\_LS\_0" : { "line\_service" : "LS\_0", "suffix\_start\_number" : 0, "term\_name\_prefix" : "TRK\_LS\_0/", "timeslot\_mask" : 0, "type" : "TDM", "use\_timeslot\_number" : true }

### Getting the default values

To add a H.248 to a new configuration, it might be helpful to get the default values first. This can be done with a *GET* with using **new** as element name under the **h248\_stacks** collection. The attribute values from the returned JSON object can then be modified before submitting the new element using the *POST* method.

#### h248\_stack

```
GET /configurations/{CfgName}/h248_stacks/new
<- Content: {
"***meta***" : {
"version" : "2.9.10"
},
"advanced_parameters" : {
"allow_wildcard_in_service_change" : true,
"behavior" : {
"compact_h248_descriptor_headers" : false,
"loose_h248_message_decoding" : false,
"no_only_ephemeral" : false,
"no_remote_response" : false,
"no_sctp_send_acknowledge" : false,
"no_warm_service_change" : false,
"null_terminating_h248_message" : false,
"relay_unknown_h248_parameters" : false,
"send_transaction_pending_automatically" : false,
"send_transaction_response_acks" : false,
"send_transaction_response_acks_immediately" : true,
"transparent_sdp" : true
},
"default_megaco_version" : 2,
"ephemeral_termination_identifier_maximum_value" : 4294967295,
"ephemeral_termination_identifier_root" : "IP/",
"maximum_number_of_dns_pending_requests" : 5,
"maximum_number_of_ephemeral_terminations" : 2048,
"maximum_number_of_retransmissions" : 11,
"maximum_number_of_tdm_terminations" : 2048,
"profile" : {
"profile_enabled" : false,
"profile_name" : "",
"profile_version" : ""
},
"serialize_null_context_commands" : false,
"switch_to_passthrough_on_tdm_ec_off" : true
},
"enabled" : true,
"naps" : [
],
"timers" : {
"default_sent_transaction_timer" : "500 milliseconds",
"dialing_duration_timer" : "5 seconds",
"dialing_long_timer" : "15 seconds",
"dialing_short_timer" : "5 seconds",
"dialing_start_timer" : "30 seconds",
"inactivity_timer" : "30 seconds",
"local_response_timer" : "10 seconds",
"maximum_sent_transaction_timer" : "4 seconds",
"provisional_reply_transaction_timer" : "6 seconds",
"restart_timer_value_to_retry_controller_association" : "30 seconds",
"saved_replied_transaction_timer" : "30 seconds"
},
"transport_protocol" : {
"ip_interface" : "",
"ip_tos_value" : 0,
"local_ip_address" : "",
"local_port_to_receive_for_text_encoding" : 2944,
"public_ip_address" : "",
"sctp_parameters" : {
"checksum_type" : "AUTODETECT",
"maximum_number_of_association_per_instance" : 5,
"maximum_number_of_init_cookie_echo_chunk_retransmission" : 8,
"maximum_number_of_input_sctp_streams" : 32,
"maximum_number_of_instance_sapi" : 2,
"maximum_number_of_ip_address_per_instance" : 2,
"maximum_number_of_output_sctp_streams" : 5,
"maximum_number_of_packets_sent_when_transmitting_new_data_chunks" : 4,
"maximum_number_of_retransmission_per_association" : 10,
"maximum_number_of_retransmission_per_path" : 5,
"maximum_number_of_sctp_responses_waiting_for_acknowledge" : 5,
"maximum_number_of_streams_per_association" : 4,
"number_of_network_interface_card" : 2
},
"transport_protocol_type" : "UDP",
"use_ip_interface" : false
},
"h248_media_gateway_controllers" : {
},
"h248_tdm_terminations" : {
}
}
```

#### h248\_media\_gateway\_controllers

```
GET /configurations/{CfgName}/h248_stacks/gateway_h248/h248_media_gateway_controllers/new
<- Content: {
"***meta***" : {
"version" : "2.9.10"
},
"ip_address" : "",
"name" : "",
"port_to_send_for_text_encoding" : 2944,
"position" : 0
}
```

#### h248\_tdm\_terminations

New element can't be added into h248\_tdm\_terminations collection on */configurations/{CfgName}/h248\_stacks/gateway\_h248/h248\_tdm\_terminations* URI, therefore getting default parameters using */new* is not possible. Elements in *h248\_tdm\_terminations* collection are automatically added when linking **NAPs** to **h248\_gateway**. E1/T1 trunks owned by linked **NAPs** will be populated in the *h248\_tdm\_terminations* collection.

Anyhow, the h248\_tdm\_termination element structure is the following: "{ElementName}" : { "line\_service" : "{TrunkName}", "suffix\_start\_number" : 0, "term\_name\_prefix" : "TRK\_{TrunkName}/", "timeslot\_mask" : 0, "type" : "TDM", "use\_timeslot\_number" : true }

The **{ElementName}** corresponds to the **"term\_name\_prefix"** without the trailing '/'. Changing **term\_name\_prefix** will result in changing the **{ElementName}** in the collection.

The default **"term\_name\_prefix"** is built by prepending 'TRK\_' suffix to the associated **"line\_service"** trunk name.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://prosbcdocs.telcobridges.com/telecom-references/sip-and-voip/configuration-h248.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
