Overview
Understanding Upstream Modulation Profiles
Modulation profiles define how information will be transmitted upstream, from a cable modem to the cable modem termination system (CMTS). Many upstream modulation profile variables can be changed, such as guard time of the burst, preamble, modulation (quadrature phase shift keying [QPSK] or 16-quadrature amplitude modulation [QAM]), and forward error correction (FEC) protection. Cisco has created three default profiles—qpsk, 16qam, and mix—to eliminate confusion, but changes may be necessary depending on the application.
Note: There may be slight differences between Cisco IOS® Software trains and versions. Data over Cable Service Interface Specification (DOCSIS) 1.1-based code (BC train) uses shortened last codeword as the default setting. DOCSIS 1.0-based code (EC train) uses fixed last codeword as the default setting.
The default modulation profiles can be inefficient, depending on the DOCSIS Extended Header being used. These modulation profiles are optimized for five-byte Extended Headers. An inefficiency occurs when Cisco modems add one extra null byte to the Extended Header (Cisco modems do this for even alignment on a word boundary). This can have drastic affects. It is not apparent if this only affects Cisco modems—for example, Toshiba modems use five-byte Extended Headers. More testing with multiple vendors is required.
Note: Piggybacking bandwidth requests requires an Extended Header and an Extended Header is also required if using BPI+ security.
Tip: If not explicitly assigned with a modulation profile, each upstream port on a Cisco CMTS is assigned modulation profile 1 (qpsk) by default. Up to eight profiles can be configured. It is recommended to not change modulation profile 1. If more profiles are needed, start with number 2.
Modulation Profile Tutorial
Let's start with a tutorial on what comprises a modulation profile. Looking at the default settings of modulation profile 1, here is what would be needed:
1. Under global configuration, type: "cable modulation-profile 1 qpsk"
2. Under the appropriate interface (cable 3/0), type: "cable upstream 0 modulation profile 1"
(or leave it blank, as the default is modulation profile 1)
3. The actual profile when entered and viewed in the "show run"
command looks like this, but only the Short and Long interval usage codes (IUCs) for profile 1 may be displayed:
Table 1 Current "Inefficient" Modulation Profile 1
|
The "Show Cable Modulation-Profile"
command produces the following output:
Table 2 Current "Inefficient" Modulation Profile 1
|
As you can see, the fields are not in the same places. The Unique Word (UW) setting is not visible. You can see the Preamble Offset, which is not set, but calculated, based on what is set for the UW.
Each column is described below:
- IUCs such as short, long, req, init, station, etc. These are also known as information elements. The first three IUCs are for maintaining modem connectivity, while Short and Long IUCs are for actual data traffic.
- Modulation Type such as 16-QAM or QPSK. This is expanded for DOCSIS 2.0.
- Preamble Length in bits <2-512>. 16-QAM is usually double the Preamble Length over QPSK.
- Diff enco = diff encoding enabled; no-diff = diff encoding disabled. Always use no-diff encoding.
- FEC T bytes are entered as decimal <0-10>, but shown in hex. 2* FEC T bytes size = bytes of FEC in each FEC CW (codeword). Zero indicates no FEC. You can also disable FEC on the interface of each individual upstream port. This has been expanded to 16 for DOCSIS 2.0.
- FEC CW = codeword length information bytes (k) entered in decimal <16-253>, but shown in hex.
Note: When using a shortened last codeword, the last codeword must be greater than or equal to 16 bytes. If less than 16 bytes, filler bytes are added to make it 16. A full codeword is k+2*T, and must be less than or equal to 255 bytes total.
- Scrambl seed is listed in hex <0-7FFF>. Do not change this.
- Max B is the maximum burst size in minislots <0-255>. Zero means no limit. Any burst less than or equal to the amount of bytes represented by the maximum burst will use this IUC.
- Guard Time is listed in symbols <0-255>. DOCSIS says this needs to be at least five symbols. QPSK has two bits per symbol and 16-QAM has four bits per symbol.
- Last CW of fixed = fixed last codeword; shortened = shortened last codeword and will say "yes" in the column. Shortened eliminates extra "stuffing."
- Scrambler = scrambler-enabled and no-scrambler = scrambler-disabled. Always keep scrambler enabled.
- Preamble Offset is not entered into the configuration. It is calculated when you enter in the UW value of eight or 16. The sum of Preamble Offset plus Preamble Length will equal 1024, 768, 512, or 256 bits for UW16; if not, you can assume UW8 is being used.
Caution: Be sure to use UW16 when using 16-QAM for Short or Long IUCs. Using UW8 with 16-QAM can cause uncorrectable FEC errors to increment. Observe the "Show Cable Hop"
command to verify.
Modulation Profile 3 (mix) Example
1. Under global configuration, type "cable modulation profile 3 mix"
2. Under the appropriate interface (cable 3/0), type "cable up 0 modulation profile 3"
3. The actual profile when entered and displayed on a "show run"
command looks like this:
Table 3 Current "Inefficient" Modulation Profile 3
|
The "show cable modulation-profile 3"
command will look like this:
Table 4 Current "Inefficient" Modulation Profile 3
|
Note: Notice in the display above that the Preamble Offset indicates 0. The Preamble Offset will not show up until you assign this modulation profile to an upstream port.
Tip: Decrease the minislot size from eight ticks to four. This will keep the number of bytes in a minislot closer to 16 when you use the more complex modulation scheme. If the minislot size is left at eight ticks, the minimum burst sent will be at least 32 bytes. This is inefficient when sending upstream requests, which only require 16 bytes total. Refer to Appendix B for minislot configuration.
DOCSIS 1.0-based Code (EC and Earlier Cisco IOS® Software Trains)
Consider Cisco modems with six-byte Extended Headers and using all current Cisco CMTS defaults in the EC code, such as 1.6 MHz channel width, minislot size of eight ticks (16 bytes), and the modulation profile shown below:
cable modulation-profile 1 short 5 75 6 8 qpsk scrambler 152 no-diff 72 fixed uw8
If sending 64-byte Ethernet frames (46-byte packet data unit [PDU] + 18-byte Ethernet Header) on the upstream, the modem uses a Long burst and the total packet size becomes 256 bytes. This will be 16 minislots. See Appendix A for the calculations. This is inefficient for a 46-byte PDU. The packet-per-second (PPS) rate for 64-byte packets will drop because of this. Concatenation can help with upstream throughput when sending 64-byte packets, but sending extra bytes wastes time.
This inefficiency could affect downstream TCP flows, because this will also be true for a TCP "acknowledgment" on the upstream. Even though an acknowledgment is less than 46 bytes, it will be padded to make it at least 46. Upstream concatenation can help tremendously, but it is still inefficient to send 256 bytes when only 96 bytes total are typically needed.
If the Extended Header is only five bytes as originally believed, the modem uses a short grant at six minislots, for a total of 96 bytes. This is a difference of 160 bytes (256-96).
The fix to this dilemma with modulation profile 1 (qpsk) is:
1. Increase the FEC codeword size from 75 to 76 for the Short IUC.
2. Decrease the FEC T bytes from five to four for the Short IUC.
a. If the minislot size is changed from the default of eight ticks to four, make sure the Max Burst Size field for the Short IUC is changed from six to 12.
3. Shortened last codeword is recommended for the Short and Long IUCs.
a. Modems with older code may have to be upgraded since they may not register when using shortened last codeword in the IUCs.
4. If you want FEC to be high, increase it to ten and change the Max Burst field from six to seven.
a. If the minislot size is changed from the default of eight ticks to four, use eight T bytes of FEC and make sure the Max Burst field for the Short IUC is changed to 13.
Recommended profiles assuming eight-tick minislots at 1.6 MHz, or four ticks at 3.2 MHz:
Table 5 Recommended Modulation Profile 1
|
Looking at the "Mix" profile defaults and the same situation as above, 46-byte PDUs will use 288 bytes total. This is even worse than the QPSK example because of more Preamble and Guard Time.
The fix to this dilemma with modulation profiles 2 (qam-16) and 3 (mix):
1. Increase the FEC codeword size from 75 to 76 for the Short IUC.
2. Increase the FEC T bytes from six to seven for the Short IUC.
3. Increase the Max Burst field from six to seven.
4. Be sure to use UW16 when using 16-QAM for Short or Long IUCs.
5. Shortened last codeword for the Short and Long IUCs is recommended.
a. If you have old code on some modems and you enable shortened last codeword in the modulation profile, it may not register. You will need to upgrade the modem code.
6. The FEC T bytes can be increased on a Long IUC from eight to nine when using 16-QAM.
Recommended profiles assuming four-tick minislots at 1.6 MHz, or two ticks at 3.2 MHz:
Table 6 Recommended Modulation Profile 3
|
DOCSIS 1.1-Based Code (BC Train)
Consider a Cisco modem with six-byte Extended Headers and using current Cisco CMTS defaults in the BC code, such as 1.6 MHz channel width, minislot size of eight ticks (16 bytes), and the modulation profile shown below:
cable modulation-prof 1 short 5 75 6 8 qpsk scrambler 152 no-diff 72 shortened uw8
If sending 64-byte Ethernet frames (46-byte PDU) on the upstream, the modem uses a Long burst and the total packet size becomes 112 bytes. This will be seven minislots. This is inefficient for a 46-byte PDU. The major difference is that BC code uses shortened last codeword by default. DOCSIS 1.0 code (EC train) uses fixed last codeword by default.
If the Extended Header is only five bytes as originally believed, the modem ends up using a short grant at six minislots for a total of 96 bytes. This is a difference of 16 bytes (112-96).
The fix to this dilemma with modulation profile 1 (qpsk):
1. Increase the FEC codeword size from 75 to 76 for the Short IUC.
2. Decrease the FEC T bytes from five to four for the Short IUC.
a. If the minislot size is changed from the default of eight ticks to four, make sure the Max Burst Size field for the Short IUC is changed from six to 12.
3. If you want FEC to be high, increase it to ten and change the Max Burst field from six to seven.
a. If the minislot size is changed from the default of eight ticks to four, use eight T bytes of FEC and make sure the Max Burst field for the Short IUC is changed to 13.
Recommended profiles assuming eight-tick minislots at 1.6 MHz, or four ticks at 3.2 MHz:
Table 7 Recommended Modulation Profile 1
|
Looking at the "Mix" profile defaults and the same situation as above, 46-byte PDUs will use 160 bytes total. This is even worse than the QPSK example because of more Preamble and Guard Time.
The fix to this dilemma with modulation profiles 2 (qam-16) and 3 (mix):
1. Increase the FEC codeword size from 75 to 76 for the Short IUC.
2. Increase the FEC T bytes from six to seven for the Short IUC.
3. Increase the Max Burst field from six to seven.
4. Be sure to use UW16 when using 16-QAM for Short or Long IUCs.
5. The FEC T bytes can be increased on a Long IUC from eight to nine when using 16-QAM.
Recommended profiles assuming four-tick minislots at 1.6 MHz, or two ticks at 3.2 MHz:
Table 8 Recommended Modulation Profile 3
|
Conclusion
It is imperative to understand how all the variables such as minislot size, channel width, modulation, and max burst size all work together. Keeping the minislot size to a minimum adds better resolution between minislot usage. The current default settings from the factory may not be optimized for all situations. Appendix C explains some modulation profiles for voice-over-IP (VoIP) applications.
Appendix A
Total Packet Size Calculations for a 46-Byte PDU
QPSK, 1.6 MHz, eight-tick minislots example:
(8 ticks/minislot * 6.25 usec/tick * 1.28 Msym/s * 2 bits/sym) / (8 bits/byte) = 16 bytes/minislot
Using the default settings for modulation profile 1 as shown below:
cable modulation-profile 1 short 5 75 6 8 qpsk scrambler 152 no-diff 72 fixed uw8
cable modulation-profile 1 long 8 220 0 8 qpsk scrambler 152 no-diff 80 fixed uw8
46-byte Ethernet frame + 18-byte Ethernet header + 6-byte DOCSIS header + 6-byte DOCSIS Extended header = 76 bytes. A FEC codeword size of 4B in hex equals 75 bytes. 76/75 = one full codeword needed and one leftover byte. If using the default setting of fixed last codeword, this would require two full codewords. That would give 2*(75+2*5) = 170 bytes + 9 bytes of Preamble + 2 bytes of Guard Time = 181 bytes. {The Preamble was (72 bits) / (8 bits/byte) = 9 bytes. The Guard Time of eight symbols would be (8 sym*2 bits/sym) / (8 bit/byte) = 2 bytes.}
181 / (16 bytes/minislot) = 11.3125 minislots needed. Round this up to 12. Since the default setting for Max Burst size for the Short IUC is six, we would have to use the Long IUC. Going through the math again, we have 76 bytes/220 byte FEC CW = 1 full codeword needed + 2*8 = 236 bytes + 10 bytes of Preamble + 2 bytes of Guard Time = 248 bytes/16 = 15.5. Roundup to 16*16 bytes/minislot = 256 bytes.
Using the "modified" modulation profile 1 shown below:
cab modulation-prof 1 short 4 76 6 8 qpsk scrambler 152 no-diff 72 short uw8
46-byte Ethernet frame + 18-byte Ethernet header + 6-byte DOCSIS header + 6-byte DOCSIS Extended Header = 76 bytes. A FEC codeword size of 76 means exactly one codeword will be needed + 2*T. We have 76+2*4 = 84 bytes + 9 bytes of Preamble + 2 bytes of Guard Time = 95 bytes. 95/16 bytes/minislot = 5.9375 minislots needed. Round up to 6 = 6 minislots*16 bytes/minislot = 96 bytes.
Appendix B
Minislot Configuration
It is best to set the minislot size to a value that will make it eight or 16 bytes. This is sometimes not achievable because the DOCSIS limit says the minislot must be at least 32 symbols.
The following table lists the channel width vs. the number of ticks allowed for a minislot.
The number of ticks allowed will be affected by the symbol rate (channel width) used on the upstream. The modulation used and the number of ticks per minislot will affect the total amount of bytes in a minislot.
To configure the minislot size:
ubr7246vxr(config-if)#cable upstream 0 minislot-size 8
ubr7246vxr#show controllers c3/0 u0
Frequency 24.848 MHz, Channel Width 1.600 MHz, QPSK Symbol Rate 1.280 Msps
Spectrum Group 1, Last Frequency Hop Data Error: NO(0)
Nominal Input Power Level 0 dBmV, Tx Timing Offset 2952
Ranging Backoff automatic (Start 0, End 3)
Ranging Insertion Interval automatic (60 ms)
Tx Backoff Start 0, Tx Backoff End 4
part_id=0x3137, rev_id=0x03, rev2_id=0xFF
nb_agc_thr=0x0000, nb_agc_nom=0x0000
Minislot size in number of timebase ticks = 8
Piggyback requests = 0x2DB623C
Minislots requested = 0x12B17492
Minislots granted = 0x12B16E64
Map Advance (Dynamic): 2468 usecs
DES Ctrl Reg#0 = C000C043, Reg#1 = 4016
DOCSIS 2.0 actually relaxes this limitation somewhat:
6.1.2.4 Upstream Intervals, Minislots, and 6.25-Microsecond Increments
Allowed single time-tick minislots for Advanced PHY-only channels.
This means that instead of the tick range of two to 128, it can have a range of one to 128. The symbols per minislot of 32 may be relaxed to 16, but only for the advanced modulation schemes in DOCSIS 2.0.
Appendix C
VoIP Modulation Profiles
VoIP calls are generally believed to operate best using short grants, but it may be worth testing the upstream usage with the Short profile listed, then using the Long profile to see if any difference is noticed. If you do a "show interface c5/0/0 mac-scheduler"
in the BC code, you can see the upstream use percentage. Instead of trying to find out how many phone calls can be supported by making phone calls, just look at the utilization per call. If each phone uses about two percent upstream utilization, about 45 calls would put you at 90 percent. In EC code the command is "show interface c3/0 upstream 0"
.
There is the possibility of too much round-off error associated using this type of calculation. If that two percent was really 2.4 percent or 1.6 percent, you would get radically different results, but it could be used as a relative measurement or comparison when changing modulation profiles optimized for Short or Long IUCs.
G711 VoIP with no PHS at 20 ms Sampling
If using 20 ms sampling, a G.711 codec, no Payload Header Suppression (PHS), QPSK modulation, 3.2 MHz channel width, and two ticks as a minislot; the total voice packet size would be about 264 bytes after all the overhead is included, assuming this modulation profile is being used:
cable modulation-prof 4 short 2 46 33 8 qpsk scrambler 152 no-diff 72 short uw8
G.711 = 64 kbps*20 ms of sampling = 1280 bits / (8 bits/byte) = 160-byte Voice frame + 18-byte Ethernet header + 6-byte DOCSIS header + 6-byte DOCSIS Extended Header + 40 bytes of IP/UDP/RTP header = 230 bytes. An FEC codeword size of 2E in hex equals 46 bytes. 230/46 = 5 full codewords needed exactly. That would give 5*(46+2*2) = 250 bytes + 9 bytes of Preamble + 2 bytes of Guard Time = 261 bytes. 261 bytes / (8 bytes/minislot) = 32.625. Round up to 33*8 bytes/minislot = 264 bytes.
If allocating 60% of the throughput to VoIP and leaving 40% for best effort (BE) data, this modulation profile should allow you to get about 13 calls on a QPSK upstream using G.711 and still have about 1 Mbps leftover for BE data traffic. 264*8 = 2112 bits per 20 ms packet. 2112/20 ms = 105.6 kbps per phone call. 2.56 Mbps total throughput - 10% overhead (maintenance, reserved time for insertions, and contention time) = 2.3 Mbps*60% / 105.6 kbps = 13.
The following modulation profiles and calculations assume 60% throughput allocation for VoIP traffic and 6-byte DOCSIS extended headers. Extended headers bigger than this will require different modulation profiles.
Suggested VoIP Modulation Profiles
QPSK (Using Short Grants); (1.6 MHz at four ticks = 13 calls or 3.2 MHz at two ticks = 27 calls)
cable modulation-profile 4 short 2 46 33 8 qpsk scrambler 152 no-diff 72 short uw8
cable modulation-profile 4 long 8 220 0 8 qpsk scrambler 152 no-diff 80 short uw8
cable modulation-profile 5 short 4 76 12 8 qpsk scrambler 152 no-diff 72 short uw8
cable modulation-profile 5 long 9 230 0 8 qpsk scrambler 152 no-diff 80 short uw8
One caveat to this is large 1500-byte PDUs will require 1672 bytes vs. 1656 previously.
16-QAM (Short); (1.6 MHz at four ticks = 26 calls or 3.2 MHz at two ticks = 52 calls)
cable modulation-prof 6 short 2 46 17 8 16qam scrambler 152 no-diff 144 short uw16
cable modulation-prof 6 long 9 220 0 8 16qam scrambler 152 no-diff 160 short uw16
or with more FEC coverage (1.6 MHz at four ticks = 25 calls or 3.2 MHz at two ticks = 50 calls)
cable modulation-prof 6 short 4 58 18 8 16qam scrambler 152 no-diff 144 short uw16
One caveat to this is small 46-byte PDUs will require 128 bytes vs. 112 previously.
or (Long); (1.6 MHz at two ticks = 26 calls or 3.2 MHz at two ticks = 52 calls)
cable modulation-prof 7 short 7 76 7 8 16qam scrambler 152 no-diff 144 short uw16
cable modulation-prof 7 long 9 230 0 8 16qam scrambler 152 no-diff 160 short uw16
or with more FEC coverage (1.6 MHz at four ticks = 25 calls or 3.2 MHz at two ticks = 50 calls)
cable modulation-prof 7 long 8 115 0 8 16qam scrambler 152 no-diff 160 short uw16
One caveat to this is large 1500-byte PDUs will require 1792 bytes vs. 1680 previously.
QPSK (Short); (.8 MHz at eight ticks = 5 calls)
The last example would not be recommended. A 1518-byte ethernet frame would take more than 10 msec to send upstream and violate certain requirements. The upstream serialization time of the voice packet would be 1.65 milliseconds, which is below the 2-ms latency limit, but only 5 calls would be realized and not a very good business case.
Note: If the VoIP upstream packet serialization time is more than 2 ms, an error will occur. You may need to increase the upstream channel width and/or modulation.
G711 VoIP with No Payload Header Suppression (PHS) at 10 ms Sampling
VoIP at 20 ms sampling is recommended because 10 ms sampling creates 1/10 ms = 100 packets per second (PPS) to be used in the CPU for the upstream and downstream flows. This equals 200 PPS for one phone call.
QPSK (Short); (1.6 MHz at four ticks = 9 calls or 3.2 MHz at two ticks = 20 calls)
cable modulation-prof 7 short 2 50 22 8 qpsk scrambler 152 no-diff 72 short uw8
cable modulation-prof 7 long 8 220 0 8 qpsk scrambler 152 no-diff 80 short uw8
16-QAM (Short); (1.6 MHz at four ticks = 19 calls or 3.2 MHz at two ticks = 37 calls)
cab modulation-prof 8 short 4 76 12 8 16qam scrambler 152 no-diff 144 short uw16
cab modulation-prof 8 long 9 220 0 8 16qam scrambler 152 no-diff 160 short uw16