Categories

CUC (6) CUCM (27) Jabber (6) Python (2) Routing (3) Solarwinds Orion NPM (4) switching (1) Video (6) voice (2)

Thursday, 11 June 2015

Regions and Locations in CUCM for video part 2

I know, I know, I have already talked about this subject in a previous post   (http://ciscoshizzle.blogspot.com.au/2015/05/regions-and-locations-in-cucm-and-in.html), but I feel that an additional post on how to set up Location and regions is in order. This time I will add an example with some SIP signalling into the mix.

A lot of times, when video is not working between sites (or locations if you will), this is caused by incorrect regions and locations settings.  So, to recap from my previous post:   regions define what video bit rate is used for a video call between these regions, and the location defines on how much of this can take place in total.

Both the Audio Bandwidth and the Video Bandwidth fields, in CUCM, offer three options: None, Unlimited, or a field that accepts numeric values. However, the values entered in these fields use two different calculation models. For the Audio Bandwidth field, the values entered should include the Layers 3 to 7 overhead required for the call. For instance, if you want to permit a single G.729 call to or from a location, you would enter the value of 24 kbps. For a G.711 call, you would enter the value of 80 kbps. The Video Bandwidth field, by contrast, should be entered without the overhead included. For instance, for a 128-kbps call you would enter 128 kbps, and for a 384-kbps call you would enter 384 kbps. As with the values used in the Video Bandwidth field for regions, Cisco recommends that you always use increments of 56 kbps or 64 kbps for the Video Bandwidth field for locations as well.

In this post I will set up a video call between two SX20's. Both endpoints are in different locations and regions.  Between the two regions I set up a maximum session bit rate of 4000 kbps and a location video bandwidth of 7000 for Brisbane and 5000 for Melbourne. (I always prefer to put my telepresence endpoints in a separate devicepool from my video enabled phones so I can trim the video bandwidth separately). When setting up the test call the traces for the Location Bandwidth Manager show the following calculations:

44017098.001 |10:27:20.144 |AppInfo  |LBM: RES_REC OP=UPDATE tid=1461534129098494644  V=4000 M st=answered FK=StandAloneCluster:35933157+StandAloneCluster:35933156:Brisbane_LOC>Melbourne_LOC
44017098.002 |10:27:20.144 |AppInfo  |LBM: RES_REC Enough for 4000 on Vertex=Brisbane_LOC. Left=0, Calls=1
44017098.003 |10:27:20.144 |AppInfo  |LBM: RES_REC Enough for 4000 on Vertex=Hub_None. Left=0, Calls=21
44017098.004 |10:27:20.144 |AppInfo  |LBM: RES_REC Enough for 4000 on Vertex=Melbourne_LOC. Left=0, Calls=1
44017098.005 |10:27:20.144 |AppInfo  |LBM: RES_REC Enough for 4000 on Edge Brisbane_LOC->Hub_None. Left=1000, Calls=1
44017098.006 |10:27:20.144 |AppInfo  |LBM: RES_REC Enough for 4000 on Edge Hub_None->Melbourne_LOC. Left=1000, Calls=1
44017098.007 |10:27:20.144 |AppInfo  |LBM: RES_REC rm Vertex=Brisbane_LOC. Left=0, Calls=0
44017098.008 |10:27:20.144 |AppInfo  |LBM: RES_REC rm Vertex=Hub_None. Left=0, Calls=20
44017098.009 |10:27:20.144 |AppInfo  |LBM: RES_REC rm Vertex=Melbourne_LOC. Left=0, Calls=0
44017098.010 |10:27:20.144 |AppInfo  |LBM: RES_REC rm Edge Brisbane_LOC->Hub_None. Left=7000, Calls=0
44017098.011 |10:27:20.144 |AppInfo  |LBM: RES_REC rm Edge Hub_None->Melbourne_LOC. Left=7000, Calls=0
44017098.012 |10:27:20.145 |AppInfo  |LBM: RES_REC add Vertex=Brisbane_LOC. Left=0, Calls=1
44017098.013 |10:27:20.145 |AppInfo  |LBM: RES_REC add Vertex=Hub_None. Left=0, Calls=21
44017098.014 |10:27:20.145 |AppInfo  |LBM: RES_REC add Vertex=Melbourne_LOC. Left=0, Calls=1
44017098.015 |10:27:20.145 |AppInfo  |LBM: RES_REC add Edge Brisbane_LOC->Hub_None. Left=3000, Calls=1
44017098.016 |10:27:20.145 |AppInfo  |LBM: RES_REC add Edge Hub_None->Brisbane_LOC. Left=3000, Calls=1
44017098.017 |10:27:20.145 |AppInfo  |LBM: RES_REC add Edge Hub_None->Melbourne_LOC. Left=3000, Calls=1

44017098.018 |10:27:20.145 |AppInfo  |LBM: RES_REC add Edge Melbourne_LOC->Hub_None. Left=3000, Calls=1

As you can see, CUCM deducts 4000kbps from the location bandwidth for this particular call, as instructed by the region settings; leaving Melbourne with 1000 kbps and Brisbane with 3000kbps.


So Now, lets consider the SDP below (obtained from a call manager trace as part of the test call), in which a video call between two Cisco SX20's is negotiated.  I have marked the important contents of this SDP in Yellow:


v=0
o=CiscoSystemsCCM-SIP 28006158 1 IN IP4 10.10.10.10.10
s=SIP Call
c=IN IP4 10.10.10.115
b=AS:4000
t=0 0
m=audio 16384 RTP/AVP 108 9 104 105 0 8 15 18 101
b=TIAS:64000
a=rtpmap:108 MP4A-LATM/90000
a=fmtp:108 bitrate=64000;profile-level-id=24;object=23
a=rtpmap:9 G722/8000
a=rtpmap:104 G7221/16000
a=fmtp:104 bitrate=32000
a=rtpmap:105 G7221/16000
a=fmtp:105 bitrate=24000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:15 G728/8000
a=rtpmap:18 G729/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
m=video 16386 RTP/AVP 97 126 96 34
b=TIAS:3936000
a=label:11
a=answer:full
a=rtpmap:97 H264/90000
a=fmtp:97 profile-level-id=420016;packetization-mode=0;max-mbps=490000;max-fs=8160;max-cpb=200;max-br=5000;max-rcmd-nalu-size=3133440;max-smbps=490000;sar-supported=16;max-fps=6000
a=rtpmap:126 H264/90000
a=fmtp:126 profile-level-id=428016;packetization-mode=1;max-mbps=490000;max-fs=8160;max-cpb=200;max-br=5000;max-rcmd-nalu-size=3133440;max-smbps=490000;sar-supported=16;max-fps=6000
a=rtpmap:96 H263-1998/90000
a=fmtp:96 QCIF=1;CIF=1;CIF4=1;CUSTOM=352,240,1
a=rtpmap:34 H263/90000
a=fmtp:34 QCIF=1;CIF=1;CIF4=2
a=content:main
a=rtcp-fb:* nack pli
a=rtcp-fb:* ccm fir
a=rtcp-fb:* ccm tmmbr
m=application 28296 UDP/BFCP *
a=floorctrl:c-only
a=floorid:2 mstrm:12
a=confid:1
a=userid:2


The example above, shows the SX20 offering a number of video/audio pairs it would like to use for the communication with the other end point. m=video 16386 RTP/AVP 97 126 96 34 defines this. Where 197, 126, 96 and 34 are the 'codecs', for lack of a better word.

In this same SDP, there are some parameters that are related to H264 video:
max-mbps, max-fs, max-cpb, max-fps and max-br: These parameters allow the implementation to specify that they can support certain features of H.264 at higher rates and values than those signalled by their level (set with profile-level-id). As per H.264 RFC 6185 https://tools.ietf.org/html/rfc6185

You might have noticed that the SDP above, contains a mx-br value of 5000kbps, which means, the receiver is able to process a maximum bideo bit rate of 5000 kbps (which is enough!!).

As you can see the media description in this SDP trying to negotiate video. I ran that particular call through VLT, which gives just a little more information, but is essentially the same as the raw SDP above.

m=video 16386 RTP/AVP 97 126 96 34
b=TIAS:6000000
  -- Bandwidth modifier: TIAS
  -- Maximum bandwidth: 6000000 kb/sec
a=rtpmap:97 H264/90000
  -- The encoding of dynamic audio formats: 90 kHz H264 codec
a=fmtp:97 
packetization-mode=0;profile-level-id=420016;max-br=5000;max-mbps=490000;max-fs=8160;max-smbps=490000;max-fps=6000;max-rcmd-nalu-size=3133440;sar-supported=16   <<---advertising HD video capability
a=rtpmap:126 H264/90000
  -- The encoding of dynamic audio formats: 90 kHz H264 codec
a=fmtp:126 packetization-mode=1;profile-level-id=428016;max-br=5000;max-mbps=490000;max-fs=8160;max-smbps=490000;max-fps=6000;max-rcmd-nalu-size=3133440;sar-supported=16<<---advertising HD video capability
a=rtpmap:96 H263-1998/90000
  -- The encoding of dynamic audio formats: 90 kHz H263-1998 codec
a=fmtp:96 custom=1280,768,1;custom=1280,720,1;custom=1024,768,1;custom=1024,576,1;custom=800,600,1;cif4=1;custom=720,480,1;custom=640,480,1;custom=512,288,1;cif=1;custom=352,240,1;qcif=1;maxbr=30000
a=rtpmap:34 H263/90000
  -- The encoding of dynamic audio formats: 90 kHz H263 codec

a=fmtp:34 cif4=2;cif=1;qcif=1;maxbr=20000


Namaste

2 comments:

  1. Hi Dennis,

    Thanks for an interesting topic and deep analysis. Even though you posted it nine months ago it is still worth clarifying.
    One thing is not obvious for me: after the SDP negotiations, were the terminals able to negotiate 5000 kbps bitrate despite of "Max Bitrate for Video" Region parameter? I assume the paramater is a CAC parameter not a policer.
    Suppose I want to allow 3 video calls between locations. If I left default "Max Bitrate for Video" = 384kbps for Region and set Location video bandwidth=1152, then I would finish up with max. 3 video calls regardless of the negotiated bitrate between terminals. Am I right?

    Regards
    Adam

    ReplyDelete
  2. Adam, yeah it is pretty muck like that; if you want to allow 3x384 video calls, your location should be set to 1152, apart from the fact that somehow 500kbps gets deducted from the location for a single 384 video call, so in order to allow 3 simultaneous calls, your location setting should be 1500.

    ReplyDelete