| == Configuring OsmoMGW |
| |
| A basic configation of OsmoMGW mainly consists of specifying the IP address |
| and port on which to listen to MGCP commands, but changing the port range at |
| which the RTP streams terminate as well as limiting operation to a single call |
| agent can be done as well as changing the number of endpoints. |
| |
| === Configuring MGCP |
| |
| By default OsmoMGW listens for MGCP on port 2427 on any IP address. If a call |
| agent address is configured then OsmoMGW will only answer MGCP commands from |
| that IP port 2727, otherwise all sources are handled. A domain can be |
| specified |
| |
| .Example: MGCP configuration |
| ---- |
| OsmoMGW(config-mgcp)# bind ip 127.0.0.1 |
| OsmoMGW(config-mgcp)# bind port 2427 |
| OsmoMGW(config-mgcp)# call-agent ip 127.0.0.1 |
| OsmoMGW(config-mgcp)# domain mgw-bsc |
| OsmoMGW(config-mgcp)# local ip 127.0.0.1 |
| ---- |
| |
| === Configuring the trunk |
| |
| The first trunk is considered a virtual trunk in OsmoMGW. All |
| endpoints of type "rtpbridge" are routed here. The virtual trunk is configured |
| in the config-mgcp context. |
| |
| All other trunks are configured in the config-mgcp-trunk context, but the |
| commands used are identical. Right now trunks are considered only for "ds/e1" |
| type endpoints. |
| |
| .Example: MGCP trunk configuration |
| ---- |
| OsmoMGW(config-mgcp)# number endpoints 63 <1> |
| OsmoMGW(config-mgcp)# rtp bind-ip 10.0.0.1 <2> |
| OsmoMGW(config-mgcp)# rtp port-range 12000-14000 <3> |
| ---- |
| <1> Maximum number of endpoints that can be allocated at once |
| <2> Use this IP when binding RTP endpoints |
| <3> Use ports in this range when binding RTP endpoints |
| |
| There are some options to tweak how RTP forwarding behaves in OsmoMGW: |
| |
| .Example: MGCP trunk rtp options |
| ---- |
| OsmoMGW(config-mgcp)# rtp keep-alive 30 <1> |
| OsmoMGW(config-mgcp)# rtp-patch ssrc <2> |
| OsmoMGW(config-mgcp)# rtp-patch timestamp <3> |
| ---- |
| <1> Send dummy UDP packets periodically to RTP destination |
| <2> Hide SSRC changes |
| <3> Ensure RTP timestamp is aligned with frame duration |
| |
| NOTE: Changes to trunks that affect resource allocation, such as newly created |
| trunks or a change of the number of available endpoints, require a full restart |
| of osmo-mgw! |
| |
| === E1 trunk considerations |
| |
| While the RTP bridge trunks are natively based on IP no special considerations |
| are required during setup. E1 trunks are mapped on a physical E1 line, which has |
| to be configured as shown below. |
| |
| .Example: E1 line setup |
| ---- |
| OsmoMGW(config-e1_input)# e1_line 0 driver dahdi <1> |
| OsmoMGW(config-e1_input)# e1_line 0 port 2 <2> |
| ---- |
| <1> Name of the libosmo-abis driver implementation ("dahdi") |
| <2> Port number of the physical E1 port to use (2) |
| |
| In osmo-mgw the e1_input node is used to configure the physical E1 line. The |
| line number will be used internally to identify the configured E1 line. The |
| port number is the physical E1 connector (sometimes called 'span') at the E1 |
| hardware. Per trunk an individual E1 line will be needed. Beware that the E1 |
| driver may also need configuration settings that are not discussed here. |
| |
| .Example: E1 trunk setup |
| ---- |
| OsmoMGW(config-mgcp)# trunk 0 <1> |
| OsmoMGW(config-mgcp-trunk)# line 0 <2> |
| ---- |
| <1> Creation of a trunk (0) |
| <2> Reference to the E1 line to use (0) |
| |
| The E1 trunk is created along with a number, typically starting at 0, but if |
| required any number from 0-64 is allowed. The E1 trunk configuration concerning |
| the IP related aspects is nearly identical to the configuration of the virtual |
| trunk. However, it is important that the user assigns one of the E1 line numbers |
| that were configured under the e1_input node. |
| |
| NOTE: The endpoint name that is used on MGCP level will include the trunk number, |
| not the E1 line number. For simplicity (and compatibility with OsmoBSC) it is |
| recommended to use equal numbers for trunk and E1 line. However, if required any |
| E1 line can be mapped flexible on any trunk as long as the mapping is bijective. |
| |
| .Example: A typical configuration with one E1 trunk |
| ---- |
| e1_input |
| e1_line 0 driver dahdi |
| e1_line 0 port 2 |
| mgcp |
| bind ip 127.0.0.1 |
| rtp net-range 6000 6011 |
| rtp net-bind-ip 192.168.100.130 |
| rtp ip-probing |
| rtp ip-dscp 46 |
| no rtp keep-alive |
| bind port 2428 |
| number endpoints 30 |
| loop 0 |
| force-realloc 1 |
| osmux off |
| rtp-patch rfc5993hr |
| trunk 0 |
| rtp keep-alive once |
| no rtp keep-alive |
| line 0 |
| ---- |
| |
| NOTE: One E1 trunk always covers a whole E1 line. All subslots (I.640) will be mapped |
| to individual MGCP endpoints. As long as the endpoints remain unused the |
| underlying E1 timeslot is not used. |
| |
| NOTE: The E1 trunk implementation also works with T1 lines, however since T1 has |
| 24 instead of 31 usable timeslots only the endpoints that fall into that 1-24 timeslot |
| range will be useable. |