VoIP Trace for CUBE

VoIP Trace is a Cisco Unified Border Element (CUBE) serviceability framework, which provides a binary trace facility for troubleshooting SIP call issues. The VoIP Trace framework records both successful and failed calls. All call trace data is stored in system memory. In addition, data for calls with IEC errors is also written to the logging location configured at the system level which includes logging to a buffer or a syslog server.

VoIP Trace for CUBE

The VoIP Trace feature is enabled by default and can be used to help troubleshoot issues, even in deployments with high call volumes.

You can configure VoIP Trace for CUBE using the trace configuration sub-mode under voice service voip configuration mode:
router (config)#voice service voip
router(conf-voi-serv)#trace
router(conf-serv-trace)#?
Voip Trace submode commands:
default Set a command to its defaults
exit Exit from voice service voip trace mode
no Negate a command or set its defaults
shutdown Shut Voip Trace debugging
memory-limit Set limit based on memory used

Within the VoIP Trace sub-mode (conf-serv-trace), you can configure the following CLI commands:

  • memory-limit {platform | memory}

  • [no] shutdown

VoIP Trace is used for event logging and debugging of VoIP calls. Using the VoIP Trace framework, the following information is recorded:

  • SIP messages for SIP trunk to SIP trunk calls

  • Events and API calls from the SIP layer to other layers in CUBE.

  • SIP Errors

  • Call Control (Unified Communication flows processed by CUBE)

  • FSM (Finite State Machine) states and events

VoIP Trace monitors and logs SIP signalling and call events in memory as they occur. In the event that a call error is detected, or calls fail with 3xx, 4xx or 5xx cause codes, these event details are written to the logging buffer after the call clears.


Note


Traces for error calls are logged at the rate of up to five traces per second.


There’s a configurable memory limit allocated for storage of traces in a VoIP Trace framework for CUBE. The configurable maximum memory limit is either available platform memory or 1000 MB, whichever is lower. By default, VoIP Trace will use up to 10% of the total memory available to the IOS processor at the time of configuring the command. For example, if CUBE is used on a platform with 8GB of memory, VoIP Trace will use up to 800MB for trace data. Once the trace memory limit is reached, older traces are overwritten and will no longer be available.

You can configure the trace memory limit using the CLI command memory-limit {platform | memory } under trace configuration sub-mode:

Router(conf-serv-trace)#memory-limit ?
  <10-1000>  Specify maximum memory limit in MB
  platform   Use 10 percent of available memory

To display the traces for a call, use the following show command:

  • show voip trace {call-id identifier | session-id identifier | sip-call-id identifier | correlator identifier | all | cover-buffers | statistics [deatil]}

Prerequisites for Voip Trace

Cisco IOS XE Amsterdam 17.3.2 or a later release supported by CUBE.

Benefits of VoIP Trace

The following are some of the benefits of VoIP Trace Serviceability framework:

  • Enabled by default

  • Minimal CLI configuration requirement

  • Minimal processing impact

  • Automatic call error identification and trace logging based on IEC Errors

  • Request-based manual call identification and trace logging based on filters like call-ID, session-ID, and so on.

Guide to using VoIP Trace Framework

The following are some of the usage guidelines for the VoIP Trace Serviceability framework.

  • Enable or disable your VoIP Trace serviceability framework using the following CLI commands:

    • Enable—Configure trace under voice service voip configuration mode to enable your VoIP Trace framework (trace is enabled by default).

    • Disable—Configure shutdown under voip trace configuration mode to disable your VoIP Trace framework. To enable VoIP Trace after it’s disabled, configure the CLI command no shutdown .

  • If you configure shutdown the VoIP Trace Serviceability framework:

    • Stops tracing for active calls.

    • Deletes all existing traces in the system memory.

  • Monitors calls received after enabling VoIP Trace.

  • Traces stored in memory can be displayed using the show command show voip trace {call-id identifier | session-id identifier | sip-call-id identifier | correlator identifier | all | cover-buffers | statistics [detail] }

    • The show command displays traces for both active and disconnected calls.

    • The show command displays information only for the SIP leg.

    • For media forking, VoIP Trace also displays information for forked legs.

  • For the CLI command memory-limit [platform | memory ]

    • Configure memory-limit platform to set 10% of the total memory available to the IOS processor at the time of configuring the command as VoIP Trace memory limit.

    • Configure memory-limit memory to set a custom VoIP Trace memory limit. Range is 10–1000 MB.

      • Configuration of custom memory-limit more than the available platform memory is not allowed. Configuration fails with an error message:

        
        router(config)#voice service voip 
        router(conf-voi-serv)#trace
        router(conf-serv-trace)#memory-limit 800
        Error: Setting memory-limit more than available platform memory (732 MB) is not allowed.
        
      • Configuration of memory-limit more than the 10% of the available platform memory affects the system performance. Configuration is successful with a warning message:

        
        router(config)#voice service voip 
        router(conf-voi-serv)#trace
        router(conf-serv-trace)#memory-limit 100
        Warning: Setting memory limit more than 10% of available platform memory (73 MB) will affect system performance.
    • Reducing the memory-limit from an existing limit resets the VoIP Trace data. Take copy of the show voip trace statistics detail and show voip trace all output data before reducing the memory-limit.

      • A confirmation message is displayed when you reduce the memory-limit from an existing limit:

        Reducing the memory-limit clears all VoIP Trace statistics and data.
        If you wish to copy this data first, enter ‘no’ to cancel, 
        otherwise enter ‘yes’ to proceed.
    • Increasing the memory-limit does not impact the VoIP Trace data.


    Note


    • Unable to trace incoming calls if active calls exhaust the memory-limit.

    • To change the Timestamps displayed in the VoIP Trace, configure the following:
      router(config)#monitor event-trace timestamps datetime ?
        localtime      Use local time zone for timestamps
        msec           Include milliseconds in timestamp
        show-timezone  Add time zone information to timestamp

RTP Port Clear

When establishing a call, CUBE allocates several VoIP RTP ports. These ports are based on the media that are negotiated for the session. RTP ports can be allocated from the following three different tables:

  • Global port table

  • Media IP address-based table

  • Media VRF-based table

The table that is used for allocating RTP ports is based on CUBE feature configuration. Ports are allocated from the VRF table first (if available), and then from the media table. If neither of these tables are available, the global table allocates ports.

Use the show voip rtp stats command to display the ports allocated from the different tables. In the current behavior, this command displays ports that are allocated only from the global port table. From Cisco IOS XE Bengaluru 17.4.1a onwards, this command displays ports that are allocated from all the three tables.

Sometimes, RTP ports can remain assigned after a call ends. Use the clear voip rtp port command to release such hung ports.

The show voip rtp stats command displayed only the port values from the global table, even if the ports are allocated from all the tables. From Cisco IOS XE Bengaluru 17.4.1a onwards, this command displays details of allocated ports from all the three tables.

The clear voip rtp port table ID port number command releases the hung ports. Here, table ID is the identifier of the table from which the port number is released.

A unique identifier is generated and printed for each table, which serves as a reference to clear voip rtp port command.

Feature Information for VoIP Trace

The following table provides release information about the feature or features described in this module. This table lists only the software release that introduced support for a given feature in a given software release train. Unless noted otherwise, subsequent releases of that software release train also support that feature.

Use Cisco Feature Navigator to find information about platform support and Cisco software image support. To access Cisco Feature Navigator, go to https://cfnng.cisco.com/. An account on Cisco.com is not required.
Feature Name

Releases

Feature Information

VoIP Trace for CUBE Serviceability

Cisco IOS XE Amsterdam 17.3.2, Cisco IOS XE Bengaluru 17.4.1a

VoIP Trace is a Cisco Unified Border Element (CUBE) Serviceability framework for Event Logging and Debug Classification.

The following are the commands that are introduced as part of this feature:

  • trace

  • memory-limit [platform | memory ]

  • shutdown

  • show voip trace {call-id identifier | session-id identifier | sip-call-id identifier | correlator identifier | all | cover-buffers | statistics [detail]}

RTP Port Clear

Cisco IOS XE Bengaluru 17.4.1a Sometimes, RTP ports can remain assigned after a call end. This feature enhancement releases such hung ports and makes available for other calls. This release of ports increases the efficiency of the device. The feature introduces the following commands:

show voip rtp stats - The enhanced command enables you to print details for in-use ports of other port ranges (along with global port range).

Cisco IOS Voice Command Reference - S commands

clear voip rtp port<table-id><port-num> - Use this command to clear VoIP Real Time Protocol (RTP) which are leaked ports.

Cisco IOS Voice Command Reference - A through C