Tags
TSPEC allows 802.11 wireless client to signal its traffic requirement to the AP. The client includes the TSPEC in the add traffic stream(ADDTS). TSPEC from client include data rate, packet size, number of stream & more. 802.11e standard specifies TSPEC to provide the management link between higher QoS protocols & the channel access function. Channel Access functions are defined by EDCA(Enhanced Distributed Channel Access) mechanism. To enable TSPEC on the WLC, you have to enable Call Admission Control (CAC).
The ADDTS function is how a WLAN client (or station- STA) perform an admission request to AP.Signalling its TSPEC request to the AP, an admission request is in one of the two form:
ADDTS action frame: This happen when client originate a phone call associated to the AP. ADDTS contains TSPEC and might contain traffic stream rate set (TSRS) information element (in CCXv4 clients). A cisco wireless phone actually performs two ADDTS because codec used in the call is not known before the RTP stream is established.
Association & Re-association message:The association message might contain one or more TSPEC and one TSRS IE if the client wants to establish the traffic stream as part of the association. Same info included in re-association message if a client roams to another AP.
Since this TSPEC info include client minimum physical rate (PHY) that client device will use, it allows the calculation of how much time that station can consume in sending & receiving in this TSPEC, thereby allowing AP to calculate whether it has resource to meet the TSPEC. When TS finishes the STA must send a Delete Traffic Stream (DELTS) to release the CAC resources used for that stream.
Here is a wireshark capture of 802.11 wireless frame for client request to AP for ADDTS. (source from 7921 phone to destined to AP). Note that action code is “Setup Request” indicate it is TSPEC request message.
Here is the response from AP to 7921 phone. Note that action code is “Setup Response” indicate it is TSPEC response.
In the above I have setup my WLAN for platinum QoS profile. Now will see if I change it to Silver & see what happen to these messages when I made a call I from 7921 phone. I am getting Network Busy message & won’t able to initiate a call. Why is this ? As you can see below this time TSPEC request is rejected by AP & therefore client did not get bandwidth resources from AP to make that call. See below two capture for ADDTS request & response in this scenario.
You can do “debug cac all enable” on WLC CLI to troubleshoot this. In this scenario you should see something similar to below.
(WLC1) >debug cac all enable (WLC1) >*apfMsConnTask_0: Mar 19 19:38:26.182: 00:1b:d4:58:e6:1a Got LBCAC Metrics IE: *apfMsConnTask_0: Mar 19 19:38:26.182: 00:1b:d4:58:e6:1a ADD TS from mobile on AP 54:75:d0:3e:80:b0 slotId 1 up = 6, tid = 6, upsd = 1, mediumTime = 714, TSRSIE No *apfMsConnTask_0: Mar 19 19:38:26.182: 00:1b:d4:58:e6:1a up=6 tsid=6 direc=3 NomMsduSize=208 MaxMsduSize=208 MinServIntvl=0 MaxServIntvl=0 InactIntval=0 MinDataRate=83200 MeanDataRate=83200 PeakDataRate=83200 MinPhyRat *apfMsConnTask_0: Mar 19 19:38:26.182: 00:1b:d4:58:e6:1a TSPEC from mobile rejected (ac = 2, up = 6) as per WLAN QoS setting *apfMsConnTask_0: Mar 19 19:38:26.182: Not including un-operational rate 6 in TSRS IE *apfMsConnTask_0: Mar 19 19:38:26.182: Not including un-operational rate 12 in TSRS IE *apfMsConnTask_0: Mar 19 19:38:26.182: 00:1b:d4:58:e6:1a Sending Failed ADD TS resp to mobile on AP 54:75:d0:3e:80:b0 slotId 1
Before a client can send traffic of a certain priority type, it must have requested to do so via the TSPEC mechanism. For example, a WLAN client device wanting to use the Voice (VO) AC must first make a request for use of that AC. Best- (BE) and Background(BK) ACs can be open for use without a TSPEC request.Therfore if you WLAN is not configured for Platinum Profile AP will not allow resources to VO-AC traffic.
If you ever wonder why you can’t make calls while your QoS profile setting is not set to “Platinum” , this TSPEC behavior is the reason for that.
Here is the CAC debug output when everything is working (Platinum QoS).
(WLC1) >*apfMsConnTask_0: Mar 19 19:46:08.897: 00:1b:d4:58:e6:1a Got LBCAC Metrics IE: *apfMsConnTask_0: Mar 19 19:46:08.897: 00:1b:d4:58:e6:1a ADD TS from mobile on AP 54:75:d0:3e:80:b0 slotId 1 up = 6, tid = 6, upsd = 1, mediumTime = 1072, TSRSIE No *apfMsConnTask_0: Mar 19 19:46:08.897: 00:1b:d4:58:e6:1a up=6 tsid=6 direc=3 NomMsduSize=208 MaxMsduSize=208 MinServIntvl=0 MaxServIntvl=0 InactIntval=0 MinDataRate=83200 MeanDataRate=83200 PeakDataRate=83200 MinPhyRat *apfMsConnTask_0: Mar 19 19:46:08.897: Current TSPEC dir 3, ac 2, up 6, tsid 6 *apfMsConnTask_0: Mar 19 19:46:08.897: 00:1b:d4:58:e6:1a ACCEPT: first TSPEC on this AC 2 *apfMsConnTask_0: Mar 19 19:46:08.897: Max stream Size is 168000 *apfMsConnTask_0: Mar 19 19:46:08.897: Max streams number is 2 *apfMsConnTask_0: Mar 19 19:46:08.897: LBCAC Metrics:td=0, tw=0, tu_vc=0, tdr=0 pb=0, pv=0, qo=0, rd=0, pb_v=0 no=0, pkts=0, num_clients=0 *apfMsConnTask_0: Mar 19 19:46:08.897: LBCAC Stats->: Total BW available (in MT) = 26562 Total BW available for voice (in MT) = 23437 Voice BW exhausted (in MT) = 0 *apfMsConnTask_0: Mar 19 19:46:08.897: 00:1b:d4:58:e6:1a LBCAC checks for tspec PASSED for ms on AP 54:75:d0:3e:80:b0 slotId 1 bw_req = 1072, totAvailable MT for tspecs = 22031 tx_queue_req = 20, current tx queue util = 0 *apfMsConnTask_0: Mar 19 19:46:08.897: 00:1b:d4:58:e6:1a Allocating voice bw for ms on AP AP5475.d0dd.a488 54:75:d0:3e:80:b0 slotId 1 tid = 6 maxBw = 23437 bw_req = 1072 totalVoiceBwAlloc = 1072 *apfMsConnTask_0: Mar 19 19:46:08.897: LBCAC Na Stats->: Total BW available (in MT) = 25490 Total BW available for voice (in MT) = 22365 Na for direct calls = 19 Na for roaming in calls = 20 *apfMsConnTask_0: Mar 19 19:46:08.897: 00:1b:d4:58:e6:1a sending ADD TS to AP 54:75:D0:3E:80:B0 slotId 1, for client 00:1B:D4:58:E6:1A tid = 6 up = 6, upsd = 1, bw = 1072 *apfMsConnTask_0: Mar 19 19:46:08.897: Not including un-operational rate 6 in TSRS IE *apfMsConnTask_0: Mar 19 19:46:08.897: 00:1b:d4:58:e6:1a Sending Successfull ADD TS resp to mobile on AP 54:75:d0:3e:80:b0 slotId 1 *spamReceiveTask: Mar 19 19:46:08.897: 54:75:d0:3e:80:b0 AP slotId 1 voiceBw = 23437 videoBw = 18750 voiceBwAlloc = 1072 videoBwAlloc = 0 availBw = 41115 *apfMsConnTask_0: Mar 19 19:46:15.267: 00:1b:d4:58:e6:1a Received TCLAS IE, Count=1 *apfMsConnTask_0: Mar 19 19:46:15.268: 00:1b:d4:58:e6:1a Received TCLAS PROCESSING Element IE *apfMsConnTask_0: Mar 19 19:46:15.268: 00:1b:d4:58:e6:1a Got LBCAC Metrics IE: *apfMsConnTask_0: Mar 19 19:46:15.268: 00:1b:d4:58:e6:1a ADD TS from mobile on AP 54:75:d0:3e:80:b0 slotId 1 up = 6, tid = 6, upsd = 1, mediumTime = 1072, TSRSIE No *apfMsConnTask_0: Mar 19 19:46:15.268: 00:1b:d4:58:e6:1a up=6 tsid=6 direc=3 NomMsduSize=208 MaxMsduSize=208 MinServIntvl=0 MaxServIntvl=0 InactIntval=0 MinDataRate=83200 MeanDataRate=83200 PeakDataRate=83200 MinPhyRat *apfMsConnTask_0: Mar 19 19:46:15.268: Current TSPEC dir 3, ac 2, up 6, tsid 6 *apfMsConnTask_0: Mar 19 19:46:15.268: 00:1b:d4:58:e6:1a TSID 6,-- AC 2,-- UP 6-- dir 3 *apfMsConnTask_0: Mar 19 19:46:15.268: 00:1b:d4:58:e6:1a apfWmmOneTspecPerAcCheck Count of numbers 1 *apfMsConnTask_0: Mar 19 19:46:15.268: 00:1b:d4:58:e6:1a ACCEPT: simple replacement *apfMsConnTask_0: Mar 19 19:46:15.268: Max stream Size is 168000 *apfMsConnTask_0: Mar 19 19:46:15.268: Max streams number is 2 *apfMsConnTask_0: Mar 19 19:46:15.268: LBCAC Metrics:td=0, tw=12, tu_vc=0, tdr=0 pb=0, pv=0, qo=0, rd=0, pb_v=0 no=0, pkts=0, num_clients=0 *apfMsConnTask_0: Mar 19 19:46:15.268: LBCAC Stats->: Total BW available (in MT) = 26562 Total BW available for voice (in MT) = 23437 Voice BW exhausted (in MT) = 0 *apfMsConnTask_0: Mar 19 19:46:15.268: 00:1b:d4:58:e6:1a sending DEL_TS to AP 54:75:D0:3E:80:B0 slotId 1, for client 00:1B:D4:58:E6:1A tid = 6 up = 6, upsd = 1, inactive = 0 *apfMsConnTask_0: Mar 19 19:46:15.268: LBCAC Na Stats->: Total BW available (in MT) = 27634 Total BW available for voice (in MT) = 24509 Na for direct calls = 21 Na for roaming in calls = 22 *apfMsConnTask_0: Mar 19 19:46:15.268: 00:1b:d4:58:e6:1a Free voice bw for mobile on AP 54:75:d0:3e:80:b0 slotId 1tid = 6 bw_free = 1072 totalVoiceBwAlloc = 0 *apfMsConnTask_0: Mar 19 19:46:15.268: LBCAC Na Stats->: Total BW available (in MT) = 26562 Total BW available for voice (in MT) = 23437 Na for direct calls = 20 Na for roaming in calls = 21 *apfMsConnTask_0: Mar 19 19:46:15.268: 00:1b:d4:58:e6:1a sending ADD TS to AP 54:75:D0:3E:80:B0 slotId 1, for client 00:1B:D4:58:E6:1A tid = 6 up = 6, upsd = 1, bw = 1072 *apfMsConnTask_0: Mar 19 19:46:15.268: 00:1b:d4:58:e6:1a Accept TspecId=6 UP=6 Op=1 (1 is OR) *apfMsConnTask_0: Mar 19 19:46:15.268: 00:1b:d4:58:e6:1a tclas1 mask=0x55 srcIp=0.0.0.0 dstIp=10.10.14.54 *apfMsConnTask_0: Mar 19 19:46:15.268: 00:1b:d4:58:e6:1a srcPort=0 dstPort=17008 proto=17 dscp=0 *apfMsConnTask_0: Mar 19 19:46:15.268: Disabling NPU TCLAS check as tclas count is 0 *apfMsConnTask_0: Mar 19 19:46:15.269: DisableNpuTclasCheck status is 0 *apfMsConnTask_0: Mar 19 19:46:15.269: Not including un-operational rate 6 in TSRS IE *apfMsConnTask_0: Mar 19 19:46:15.269: 00:1b:d4:58:e6:1a Build TCLAS IE for tid=6: *apfMsConnTask_0: Mar 19 19:46:15.269: 00:1b:d4:58:e6:1a UP=6 classType=0x1 classMask=0x55 version=4 *apfMsConnTask_0: Mar 19 19:46:15.269: 00:1b:d4:58:e6:1a srcIp=0.0.0.0 dstIp=10.10.14.54 srcPort=0 dstPort=17008 *apfMsConnTask_0: Mar 19 19:46:15.269: 00:1b:d4:58:e6:1a dscp=0 proto=17 reserved=0 *apfMsConnTask_0: Mar 19 19:46:15.269: 00:1b:d4:58:e6:1a Build TSTAT IE: tid=6 UP=6 status=Success *apfMsConnTask_0: Mar 19 19:46:15.269: 00:1b:d4:58:e6:1a Sending Successfull ADD TS resp to mobile on AP 54:75:d0:3e:80:b0 slotId 1 *spamReceiveTask: Mar 19 19:46:15.269: 54:75:d0:3e:80:b0 AP slotId 1 voiceBw = 23437 videoBw = 18750 voiceBwAlloc = 1072 videoBwAlloc = 0 availBw = 41115 *spamReceiveTask: Mar 19 19:46:15.270: 54:75:d0:3e:80:b0 AP slotId 1 voiceBw = 23437 videoBw = 18750 voiceBwAlloc = 1072 videoBwAlloc = 0 availBw = 41115 *apfMsConnTask_0: Mar 19 19:46:18.255: 00:1b:d4:58:e6:1a DEL TS from mobile on AP 54:75:d0:3e:80:b0 slotId 1up = 6, tid = 6, bw deleted = 1072 *apfMsConnTask_0: Mar 19 19:46:18.255: 00:1b:d4:58:e6:1a sending DEL_TS to AP 54:75:D0:3E:80:B0 slotId 1, for client 00:1B:D4:58:E6:1A tid = 6 up = 6, upsd = 1, inactive = 0 *apfMsConnTask_0: Mar 19 19:46:18.255: LBCAC Na Stats->: Total BW available (in MT) = 27634 Total BW available for voice (in MT) = 24509 Na for direct calls = 21 Na for roaming in calls = 22 *apfMsConnTask_0: Mar 19 19:46:18.255: 00:1b:d4:58:e6:1a Free voice bw for mobile on AP 54:75:d0:3e:80:b0 slotId 1tid = 6 bw_free = 1072 totalVoiceBwAlloc = 0 *apfMsConnTask_0: Mar 19 19:46:18.255: 00:1b:d4:58:e6:1a Delete TCLAS of tid=6 *apfMsConnTask_0: Mar 19 19:46:18.256: Disabling NPU TCLAS check as tclas count is 0 *apfMsConnTask_0: Mar 19 19:46:18.256: DisableNpuTclasCheck status is 0 *spamReceiveTask: Mar 19 19:46:18.256: 54:75:d0:3e:80:b0 AP slotId 1 voiceBw = 23437 videoBw = 18750 voiceBwAlloc = 0 videoBwAlloc = 0 availBw = 42187
Update@14-Feb-2017
Read this CSC forum thread if you need to understand more on TSpec and ACM with different client types and Cisco WLCs.
Related Posts
1. Top 10 Recommendations for VoWLAN
2. BYOD with QoS
3. Cisco WLAN Best Practices for Apple Devices
4.
5.
6.
Hello !
I work with Linux on a 802.11 testbed.
I use ath9k and Hostapd to provide an AP
But the stations doesn’t send ADDTS Request when I start a video streaming flow in the network. Even if there is no admission control mandatory.
Do you have an idea to solve this problem ?
Thanks,
Cyril
Hi Cyril,
I do not have any knowledge about products you mentioned. But in general you have to enable Call Admission Control (in this case I think Video CAC as well) on your AP & client should WMM (or 802.11e) complaint this to work.
I am giving you the feedback thinking about how it works on Cisco WLC & AP.
HTH
Rasika
Yes but when I enable Admission Control in the AP. The station use a lower priority whitout admission control. I think the station doesn’t support the admission control but it’s the same driver so it’s really weird…
how do we enforce the clients to send a ADDTS request even though the client is WWM .11e compliant. For e.g. i have windows laptop , running lync.. now i see that the laptop does not send the ADDTS request even though it is compliant. Is there some way to the applications (like lync, skype) to force the driver to send ADDTS request.
Hi Srihari,
These application may not correctly classify traffic (Voice, Video, Best Effort, & Background) according to WMM specs. So most of time traffic goes in wireless frame as BE (from client to AP).
I haven’t test below, but it looks like in Windows 7 you can do some sort of classification if your application/wireless driver do not support it natively.
http://www.biztechmagazine.com/article/2010/03/boost-network-performance-windows-7-qos
Also you can refer below cisco forum post to give some other guidance
https://supportforums.cisco.com/message/3900657#3900657
HTH
Rasika
Hi Nayarasi:
Thank you for the prompt response. I agree that the applications themselves does not play any role to classify traffic correctly. sure will go through the links to get more info. will keep you posted on my findings.
–Srihari
I appreciate the detailed article – thanks for taking the time to share your knowledge!
Thank you for appreciation
do linux wlan drivers use CCX? For example windows intel wireless drivers have CCX functions inside the driver. Intel wireless drivers used to have them separately added,
but I believe ccx functions are bundled on most wlan windows drivers.
some windows wlan capabilities are shown here:
netsh>wlan show wirelesscapabilities
netsh>wlan show wirelesscapabilities
Wireless System Capabilities
—————————-
Number of antennas connected to the 802.11 radio (value not available)
Max number of channels the device can operate on, simultaneously (value not available)
Co-existence Support : Unknown
Wireless Device Capabilities
—————————-
Interface name: Wi-Fi
WDI Version (Windows) : 0.1.1.6
WDI Version (IHV) : 0.1.1.5
Firmware Version : 24.0
Station : Supported
Soft AP : Not supported
Network monitor mode : Not supported
Wi-Fi Direct Device : Supported
Wi-Fi Direct GO : Supported
Wi-Fi Direct Client : Supported
Protected Management Frames : Supported
DOT11k neighbor report : Supported
ANQP Service Information Discovery : Supported
Action Frame : Supported
Diversity Antenna : Supported
IBSS : Not Supported
Promiscuous Mode : Not Supported
P2P Device Discovery : Supported
P2P Service Name Discovery : Supported
P2P Service Info Discovery : Not Supported
P2P Background Discovery : Supported
P2P GO on 5 GHz : Supported
ASP 2.0 Service Name Discovery : Not Supported
ASP 2.0 Service Information Discovery : Not Supported
IP Docking Capable : Not Supported
FIPS : Supported
Instant Connect : Supported
Dx Standby NLO : Supported
Extended Channel Switch Announcement : Supported
Function Level Reset : Supported
Platform Level Reset : Supported
Bus Level Reset : Supported
MAC Randomization : Supported
Fast Transition : Supported
MU-MIMO : Supported
Miracast Sink : Supported
BSS Transition (802.11v) : Supported
IHV Extensibility Module Configured : Supported
Number of Tx Spatial Streams : 2
Number of Rx Spatial Streams : 2
Number of Concurrent Channels Supported : 0
P2P GO ports count : 1
P2P Clients Port Count : 1
P2P Max Mobile AP Clients : 10
Max ANQP Service Advertisements Supported : 0
Co-existence Support : Wi-Fi performance is maintained
netsh>
In enterprise environment you can see who has CCX by using a WLC command. I can’t find it at the moment, but its available.
Those functions do advanced features that maybe lacking in your linux driver. Microsoft has some info on the CCX functions but I have not found any good resource explaining how they work. if anyone has a link to CCX info, please share.
Don’t waste your time with CCX most functions are being deprecated and features have been incorporated into 802.11 standard. From Cisco AP models 1800, 2800, 3800 and newer CCX is no longer available.
Hi Mitch,
I agree with you. Thanks for info about x800 series AP
Rasika