I manage a number of deployments that still feature ISDN extensively, so debug mgcp packet is something that I’m reading off IOS CLI on a fairly routine basis at the moment.
There are a lot of blog posts that cover reading MGCP debugs pretty well, but one thing that I struggled with for a while was being able to quickly interpret the debug parameters and what they stood for in each respective MGCP message. Often these are fairly intuitive, but sometimes a quick point of reference is needed.
I looked around on Cisco forums etc., and really there just isn’t anything that covers this well. Eventually I resorted to the RFC, and was pleasantly unsurprised that all the parameters were well tabulated and easily reference-able.
I’ve included the list below for reference, but as always it is best to go straight to RFC 3435 to get this information!
3.2.2 Parameter Lines
Parameter lines are composed of a parameter name, which in most cases
is composed of one or two characters, followed by a colon, optional
white space(s) and the parameter value. The parameters that can be
present in commands are defined in the following table:
------------------------------------------------------------------
|Parameter name | Code | Parameter value |
|----------------------|------|------------------------------------|
|BearerInformation | B | See description (3.2.2.1). |
|CallId | C | See description (3.2.2.2). |
|Capabilities | A | See description (3.2.2.3). |
|ConnectionId | I | See description (3.2.2.5). |
|ConnectionMode | M | See description (3.2.2.6). |
|ConnectionParameters | P | See description (3.2.2.7). |
|DetectEvents | T | See description (3.2.2.8). |
|DigitMap | D | A text encoding of a digit map. |
|EventStates | ES | See description (3.2.2.9). |
|LocalConnectionOptions| L | See description (3.2.2.10). |
|MaxMGCPDatagram | MD | See description (3.2.2.11). |
|NotifiedEntity | N | An identifier, in RFC 821 format, |
| | | composed of an arbitrary string |
| | | and of the domain name of the |
| | | requesting entity, possibly com- |
| | | pleted by a port number, as in: |
| | | Call-agent@ca.example.net:5234 |
| | | See also Section 3.2.1.3. |
|ObservedEvents | O | See description (3.2.2.12). |
|PackageList | PL | See description (3.2.2.13). |
|QuarantineHandling | Q | See description (3.2.2.14). |
|ReasonCode | E | A string with a 3 digit integer |
| | | optionally followed by a set of |
| | | arbitrary characters (3.2.2.15). |
|RequestedEvents | R | See description (3.2.2.16). |
|RequestedInfo | F | See description (3.2.2.17). |
|RequestIdentifier | X | See description (3.2.2.18). |
|ResponseAck | K | See description (3.2.2.19). |
|RestartDelay | RD | A number of seconds, encoded as |
| | | a decimal number. |
|RestartMethod | RM | See description (3.2.2.20). |
|SecondConnectionId | I2 | Connection Id. |
|SecondEndpointId | Z2 | Endpoint Id. |
|SignalRequests | S | See description (3.2.2.21). |
|SpecificEndPointId | Z | An identifier, in RFC 821 format, |
| | | composed of an arbitrary string, |
| | | followed by an "@" followed by |
| | | the domain name of the gateway to |
| | | which this endpoint is attached. |
| | | See also Section 3.2.1.3. |
|RemoteConnection- | RC | Session Description. |
| Descriptor | | |
|LocalConnection- | LC | Session Description. |
| Descriptor | | |
------------------------------------------------------------------
The parameters are not necessarily present in all commands. The
following table provides the association between parameters and
commands. The letter M stands for mandatory, O for optional and F
for forbidden. Unless otherwise specified, a parameter MUST NOT be
present more than once.
This table is great as I can simply look up the parameter code in my MGCP packet debug and do a quick interpretation. I also find this very handy when reading off MGCP Connection ID’s and other call-specific tracing that can be cross-referenced in SDL!
For example, in a simple AUEP (Audit Endpoint), we see:
*Jul 17 11:14:18.332: MGCP Packet received from 192.168.123.213:2427—>
AUEP 31 S0/SU2/DS1-0/1@RTR1.uc.lab MGCP 0.1
F: X, A, I
<—
What has remote side requested information on?
Firstly, the side has requested information in a comma-separated list:
|RequestedInfo | F |
The list contains the following:
|RequestIdentifier | X |
|Capabilities | A |
|ConnectionId | I |
Simple stuff.
#dontcalltac