Just as a picture is worth a thousand words, so is a complete DOCSIS Upstream Channel Descriptor (UCD) as seen by a cable modem. The UCD message, sent every two seconds by the CMTS, contains an enormous amount of valuable information that every cable modem on a DOCSIS network needs to know in order to communicate. Often undervalued, the DOCSIS Upstream Channel Descriptor is a virtual Hitchhiker’s Guide to the DOCSIS network! There is no better way to get acquainted with the UCD than to actually see what one looks like. To do this we will look at one that is captured off a DOCSIS network using a DOCSIS protocol analyzer. So here is a full DOCSIS Upstream Channel Descriptor (UCD) for you to look at.
Downstream MAC type = UCD
MAC FC (HEX) = C2
MAC PARM/EHDR length (HEX) = 00
MAC LEN (HEX) = 016A
MAC HCS (HEX) = F52B
PDU bytes = 362
PDU DA (HEX) = 01E02F000001
PDU SA (HEX) = 0000CA240217
PDU Type/Len (HEX)= 0158
MMH Version (HEX)= 01
MMH Type (HEX)= 02
MMM Type: UCD
Upstream Channel ID (HEX) = 01
Config. Change Count = 3
Mini-Slot Size = 64
Downstream Channel ID (HEX) = 0B
Symbol Rate = 1 (160000 symbols/sec)
Upstream Frequency = 26750000 Hz
Preamble Pattern =
CC CC CC CC CC CC CC CC CC CC CC CC CC CC 0D 0D
A9 17 D9 C3 52 2F B3 86 A4 5F 67 0D 48 BE CE 1A
91 7D 9C 35 22 FB 38 6A 45 F6 70 D4 8B EC E1 A9
17 D9 C3 52 2F B3 86 A4 5F 67 0D 48 BE CE 1A 91
F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3
F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 33 F7 33 F7
88 84 04 4C C4 84 C0 0C 44 08 08 CC 8C 0C 80 48
88 40 44 CC 48 4C 00 C4 40 80 8C C8 C0 C8 04 88
Burst Descriptor = Request
IUC = 1
Modulation Type = 16QAM
Differential Encoding = OFF
Preamble Length = 128 bits
Preamble Offset = 624 bits
Preamble = F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 33 F7
FEC Correction = OFF
FEC Codeword = 16
Scrambler Seed (HEX) = 0152
Max Burst Size = 0
Guard Time Size = 8
Last Codeword Length = Fixed
Scrambler = ON
Burst Descriptor = Initial Maintenance
IUC = 3
Modulation Type = QPSK
Differential Encoding = OFF
Preamble Length = 128 bits
Preamble Offset = 0 bits
Preamble = CC CC CC CC CC CC CC CC CC CC CC CC CC CC 0D 0D
FEC Correction = 5
FEC Codeword = 34
Scrambler Seed (HEX) = 0152
Max Burst Size = 0
Guard Time Size = 48
Last Codeword Length = Fixed
Scrambler = ON
Burst Descriptor = Station Maintenance
IUC = 4
Modulation Type = QPSK
Differential Encoding = OFF
Preamble Length = 128 bits
Preamble Offset = 0 bits
Preamble = CC CC CC CC CC CC CC CC CC CC CC CC CC CC 0D 0D
FEC Correction = OFF
FEC Codeword = 16
Scrambler Seed (HEX) = 0152
Max Burst Size = 0
Guard Time Size = 48
Last Codeword Length = Fixed
Scrambler = ON
Burst Descriptor = Short Data Grant
IUC = 5
Modulation Type = 16QAM
Differential Encoding = OFF
Preamble Length = 144 bits
Preamble Offset = 608 bits
Preamble = F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 33 F7
FEC Correction = 1
FEC Codeword = 16
Scrambler Seed (HEX) = 0152
Max Burst Size = 5
Guard Time Size = 8
Last Codeword Length = Shortened
Scrambler = ON
Burst Descriptor = Long Data Grant
IUC = 6
Modulation Type = 16QAM
Differential Encoding = OFF
Preamble Length = 160 bits
Preamble Offset = 592 bits
Preamble = F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 F3 33 F7
FEC Correction = 1
FEC Codeword = 20
Scrambler Seed (HEX) = 0152
Max Burst Size = 0
Guard Time Size = 8
Last Codeword Length = Shortened
Scrambler = ON
WOW! It’s surprising just how much information is contained in a UCD. There is one UCD sent every two (2) seconds on the downstream channel for each upstream channel on a CMTS line card, so a 1×8 line card is sending eight (8) UCDs every two (2) seconds because each upstream can be configured differently. One more thing, the UCD I provided above is for a DOCSIS 1.x configuration, which is much simpler than a DOCSIS 2.0 or DOCSIS 3.0 UCD. DOCSIS 2.0 and 3.0 UCDs contain information on S-CDMA, A-TDMA, logical channels and even bonded channels. We can save that for another blog. Let’s start simple first.
Upstream Channel Descriptor – UCD Details
In the UCD above, the first item of real interest is the PDU DA or essentially the Destination MAC Address of this particular message, which is 01E02F000001. This MAC address is defined in the DOCSIS specification Annexes where it states “The following multicast address MUST be used to address the set of all CM MAC sublayers; for example, when transmitting Allocation Map PDUs:” and then lists the above MAC address. So if you happen to read any of the DOCSIS specifications, pay particular attention to the Annexes as they contain very valuable information and it took me quite some time to realize the origin of this MAC address! The PDU SA is of course the Source MAC Address of the CMTS itself and will change from CMTS line card to line card.
The Upstream Channel ID indicates which channel this particular UCD correlates to with respect to a physical upstream RF port on the CMTS line card. Some CMTS vendors start numbering ports at zero (0) and increment up on each card, resetting to zero (0) 0n the next card while other vendors allow unique numbering for each upstream port based upon slot location.
Symbol Rate = 1 (160000 symbols/sec)
Upstream Frequency = 26750000 Hz
Symbol Rate and Upstream Frequency (discussed in this blog) are globally defined in the UCD header for all burst profiles. In this case, the symbol rate is 160 ksym/sec and the center frequency of the upstream DOCSIS channel is 26.75 MHz.
The Preamble Pattern (next in the UCD) is a string of HEX symbols. This represents the entire preamble that “could” be used by a cable modem. What actually happens is that only sections of the preamble are used for different bursts (IUCs) as defined by the “Preamble Length” and “Preamble Offset” listed under each IUC type. The corresponding preamble that is used as defined by the preamble length and offset is shown in each burst descriptor section. At the beginning of each IUC type is the Burst Descriptor name. For this UCD, the available types of bursts are:
- Request (IUC=1): This is the message sent by the cable modem when it has IP data to transmit.
- Initial Maintenance (IUC=3): These are the Range Requests sent by a cable modem to the CMTS in a contention window when a cable modem firsts starts to “range” with a CMTS (i.e. when a cable modem first registers).
- Station Maintenance (IUC=4): Once cable modems are online they send a Range Request message at least once every 30 seconds (per the DOCSIS specificaton) using the Station Maintenance burst descriptor. This allows the CMTS to send a Range Response message which will make any adjustments to the modem’s frequency, timing, power, and equalization as necessary (Note T3 and T4 timeout are associated with this process – to be covered later under a troubleshooting blog).
- Short Data Grant (IUC=5): The short data grant contains user data of small packet sizes, defined by the CMTS, typically 128 bytes or less.
- Long Data Grant (IUC=6): The long data grant contains user data of large packet sizes, also defined by the CMTS and is typically larger than 128 bytes.
Under each Burst Descriptor you will notice that a Modulation Type is defined. In this example, either QPSK or 16-QAM is used. The usage of more than one modulation type in a UCD message is called a “mixed-mode” profile. Essentially, the cable modem transmits QPSK for some data and 16-QAM for other data as defined by the burst descriptors.
Other parameters defined in the UCD include Differential Encoding toggle bit, FEC parameters, Scrambler seed, Max Burst Size, Guard Time Size, Last Codeword Length, and the Scrambler toggle On/Off switch. I will not go into the details of these parameters at this time as they go very far into the nuts and bolts of CMTS configuration as well DOCSIS optimization. This will be saved for a blog of its own.
Take some time first to really understand the UCD. It is a message of enourmous importance and will really help you understand how a cable modem can transmit different modulations for different messages. I will be building on this fundamental concept on many future posts.
Upcoming events can be seen under Broadband Events. Previous events can be seen under the blog.
- If you are watching this on youtube please hit the subscribe button!
- Let us know what you think and remember to share!
- You can find slides at the bottom of the page and some on slideshare.
- Find out about events or articles by following us on Twitter, LinkedIn or Facebook too.
Also available on iTunes, Google Podcasts, Spotify, vurbl see podcasts “get your tech on”.
Brady,
Yet another very well explained blog post. I really appreciate you taking the time to blog about the inter details of DOCSIS and how the protocol and specification works. Too many engineers working in the MSO field fail to learn how DOCSIS works and just take as Magic and focus on the IP network side of things. Remember with our layer 1 & @ we never get to layer 3 where everyone feels comfortable. Thanks again for your well explained post!
Cheers,
Brian Wilson
Thanks for the feedback Brian, it is much appreciated. -Brady
for the guys who are new to DOCSIS,
ICU means “Interval Usage Code” the name it self explains all
Thanks Brady for the blog, This is to early to ask but I cant hold myself I have to get the answer for this question
What about the delay involved in the transmition of these msgs like if CMTS sends UCD at time interval t1 the CM will receive this at time interval t2 ?
Hi Ishwar,
If you are talking about prorogation delay, well an electromagnetic signal propagates through coax cable at about 1.17 nanoseconds per foot. 🙂 But I suspect that you were referring to a T1 timeout as defined in Annex B of the DOCSIS 2.0 specification. A T1 Timeout occurs when a cable modem fails to receive a UCD after five (5) consecutive UCD broadcast intervals. Since the UCD broadcast interval is two (2) seconds, a T1 timeout should occur at 2 * 5 = 10 seconds. T1 timeouts are actually pretty rare, but if you have them you probably have some pretty substantial downstream impairments or faulty equipment.
My next blog due out this afternoon will talk a lot more about T3 And T4 timeouts, which are much more common.
-Brady
Hi Brady,
I’m wondering if there is a typo or two in this post.
First, I think the symbol rate should be 1600000 symbols/sec, if it is 1.6M as you state in the text.
Second, I think the Preamble Offset for the Request IUC should be 640 instead of 624, or am I misunderstanding how that’s derived? If I did understand it as an index into the Preamble Pattern sent by the CMTS, then I’m assuming that only the the length and offset are really sent by the modem as that would be enough to derive the preamble itself.
Sorry if the second question is very elementary, but I’m brand new to docsis.
Thanks! Carol
PS: I think the second paragraph of the explanation should read “is the PDU DA” instead of “in the PDU DA”.
Carol,
I really should recruit you to help me on these blogs – you are reading them very thoroughly! You are correct on the symbol rate, it is 160 ksym/sec, the lowest rate DOCSIS supports. 1.6 Msym/sec is not even a supported rate, so I completely dropped the ball there. Supported DOCSIS rates are 160, 320, 640, 1280, 2560 and 5120 ksym/sec. Yes, I also made a typo – I’ll fix these in a minute and no one will know aside from these comments. 🙂
Regarding the preamble offset, I have double checked this and believe that it is correct. 624/8 bits = 78 bytes. Counting in from the beginning of the preamble 78 bytes (two hex characters) leaves you with 14 “F3” bytes left in the preamble before the first “33” byte. This matches exactly with the Request preamble shown. Maybe I’m not seeing what you are seeing.
-Brady
Hmmm, when I cut and paste the preamble into the text editor, I see 80 words before the start of the line ending in “33 F7”, but I’m sure there’s something I’m misunderstanding that makes you come up with 78.
Anyway, thanks for your speedy reply and this great blog!
Oh, and you might want to wait till I note that 160Ksym/sec would be correct and 1.6Msym/sec would be wrong before you recruit me! 🙂
Hi Brady,
I got really confused at one point. UCD contains the US frequency to be used for transmitting from CM right. But if there are 8 US for 1 DS and 8 UCDs are sent,Then what will each UCD contain and which US frquency will be chosen??
I know This is a silly question but I’m helpless.
Could you please help me??
Thanks,
Priya
Hi Brady,
Yet another informative post. Simply these posts are real stepping stones to understand the base of working of Cable modem.
Enormous amount of info is present in UCD.
This PDU DA 01E02F000001, you mentioned this a Multicast address.
Whether this address is unique for each UCD, that will be sent for CM’s ?
Thanks,
Sathish.
Sathish,
The MAC address you identified, 01E02F000001 is called out in Annex A of the DOCSIS specification. This is defined using the Ethernet/ISO8802-3 [ISO8802-3] convention. Specifically, it states:
The following multicast address MUST be used to address the set of all CM MAC sublayers; for example, when transmitting Allocation Map PDUs:
01-E0-2F-00-00-01
So, to answer your question, yes, it will be sent with all UCDs.
Regards,
-Brady
Hello! I want to say that this post is amazing, nice written and come with almost all important infos. I’d like to peer more posts like this .
Very helpful and well written post. helped me a lot. thanks.
Thanks for the feedback, Nils.
-Brady
Hi Mr. Volpe,
On CMTS line card, there are MAC layer connected by Ethernet interface to Downstream PHY layer (PHY chip) and MAC layer connected by Ethernet interface to Upstream PHY layer ( upstream PHY chip). The MAPs message sending downstream (from MAC layer to Downstream PHY layer) are using for scheduling or “talk time” of the cable modems. Since the MAPs message broadcast every 2 ms, this MAPs message is also sending back from MAC layer to the Upstream PHY layer. Is this true? What’s this MAPs message doing on this reverse path?
Thanks
Phong
Hi Phong,
I think you are asking if MAP messages are on the upstream path of a DOCSIS network. The answer is no, they are not. MAP messages are only on the downstream. REQ (request) messages are sent on the upstream by the cable modem telling the CMTS that they have data to transmit. The CMTS sends a MAP which includes that cable modem SID telling it when it can transmit its data in response to the REQ.
I hope that I answered your question.
-Brady
Thanks Mr. Volpe
Phong
is there any way to force the CMTS to set a specific service group as “preferred”?
Hi Marc,
The question was answered during the G+Hangout. You can watch it here or download the podcast on iTunes. https://volpefirm.com/load-balancing-docsis-3-1-episode-7/
Thanks,
Mia
Hi
Which Tools I can use to check does CMTS sends UCD message to the modem or not?
Hi Artem,
You can use a DOCSIS protocol analyzer made by Averna
They are expensive, but they will do what you are looking for.