Bug #2342
closedfix MSC co located MGCP
100%
Description
There is a problem with the handling of the MGCP on the MSC side. A crash/restart of the MSC might leave open MGCP endpoints. The endpoints will stay open and will be not available for new connections.
To get around problems after restarting the MSC we currently send a DLCX before we seize a new enpoint. This ensures that the endpoint is closed before we try to seize it. This works fine but is a spec violation. Normally a DLCX requires a connection identifier ("C"). Since our MGCP gateway ignores the connection identifier in a DLCX the current method work. However, it might fail when using an MGCP gateway from another vendor.
So sending a DLCX is not a good option becaus on restart we lost all information about the connection identifiers. Holger suggested to use an already existing "reset all endpoints" vendor extension in our MGCP. This would be a possible solution. However, it would reset everything at once. It would work, but this would certainly disturb possible other users of the MGCPGW. I do not know if this is even planned or required.
Updated by dexter almost 7 years ago
Seen in sourcecode: mgcp_protocol.c:static struct msgb *handle_create_con(struct mgcp_parse_data *p)
if (endp->allocated) { if (tcfg->force_realloc) { LOGP(DMGCP, LOGL_NOTICE, "Endpoint 0x%x already allocated. Forcing realloc.\n", ENDPOINT_NUMBER(endp)); mgcp_release_endp(endp); if (p->cfg->realloc_cb) p->cfg->realloc_cb(tcfg, ENDPOINT_NUMBER(endp)); } else { LOGP(DMGCP, LOGL_ERROR, "Endpoint is already used. 0x%x\n", ENDPOINT_NUMBER(endp)); return create_err_response(endp, 400, "CRCX", p->trans); } }
We could have tcfg->force_realloc=1 for osmo-bsc_mgcp as well. This would be a lot cleaner as the current method.
Updated by dexter almost 7 years ago
I think we should set tcfg->force_realloc=1 for now. It looks a lot cleaner to me than that what we have now.
Updated by dexter almost 7 years ago
- Status changed from New to Resolved
- % Done changed from 0 to 100
I now have removed the DLCX message that is sent before making new connections. The "force_realloc" feature is now turned on at the mgcp-gw side.
patch is on openbsc.git pmaier/aoip3
Updated by zecke almost 7 years ago
Nice. When you change the default please keep active users of the bsc-mgcp mgw in mind. Thank you.
Updated by dexter almost 7 years ago
Hi Zecke,
Maybe its best if we have this as a VTY option, so users can switch if they have to.
regards,
Philipp
Updated by dexter over 6 years ago
- % Done changed from 100 to 90
Next step here: Add a VTY option to turn on the force_realloc feature only when really needed.
Updated by dexter over 6 years ago
- % Done changed from 90 to 100
force_realloc is now setable via VTY. Default is the value that had been set hardcoded before.