Project

General

Profile

Actions

Bug #2342

closed

fix MSC co located MGCP

Added by dexter almost 7 years ago. Updated over 6 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
OpenBSC
Target version:
-
Start date:
06/28/2017
Due date:
% Done:

100%

Resolution:
Spec Reference:

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.

Actions #1

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.

Actions #2

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.

Actions #3

Updated by dexter over 6 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

Actions #4

Updated by zecke over 6 years ago

Nice. When you change the default please keep active users of the bsc-mgcp mgw in mind. Thank you.

Actions #5

Updated by dexter over 6 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

Actions #6

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.

Actions #7

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.

Actions #8

Updated by laforge over 6 years ago

  • Status changed from Resolved to Closed
Actions

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)