Introduction

    This document describes the procedure and commands to create dynamic service flows on a Cable Modem Termination System (CMTS). For example, Unsolicited Grant Service (UGS) used in voice calls.

    Prerequisites

    Requirement

    Cisco recommends that you have knowledge of these topics:

    • CMTS
    • DOCSIS

    Components Used

    This document is not restricted to specific software and hardware versions.

    The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, ensure that you understand the potential impact of any command.

    Background Information

    In order to create a dynamic service flow (whatever the type), either the CMTS or the Cable Modem (CM) need to send a Dynamic Service Add (DSA) message. 

    The DSA message contains two things:

    • The Service Flow (SF) itself.
    • The associated classifier(s).

    The DSA message is a TLV encoded message which uses the same TLV definitions like the ones used for the CM.

    Message sequence from PacketCable Multimedia (PCMM) specification:


    Create The Flows

    In order to create the flow, you need to send a DSA per service flow that you want to create (you could potentially merge the 2 messages into a single message as well, but split them makes them easier to understand).

    Note: the commands used here are for cBR8 platform. The uBR10k uses the same command syntax, but without the docsis keyword in the test commands

    Upstream Direction

    Example:

    test cable docsis dsa c005.c22c.dc5b message 1823010200040601060F010610040000037F130200E8160101150400000320140400004E20160f01010203020004090605040a305879

    Decode of the TLVs

    1. Service Flow TLV.

    The Upstream SF TLV is TLV 24 (0x18): 

    1823010200040601060F010610040000037F130200E8160101150400000320140400004E20

    Decode:

    1823 TLV 0x18 (24) - Len 35 - Upstream Service Flow (0x23 = 35)
    01020004 TLV 0x18.1 (24.1) - Len 02 - Upstream Service Flow ID - value 0004
    060106 TLV 0x18.6 (24.6) - Len 01 - QoS Parameter set type - value 06 -> Admitted and Active bit set
    0F0106 TLV 0x18.F (24.15) - Len 01 - Service flow scheduling type - value 06 -> UGS
    10040000037F TLV 0x18.10(24.16) - Len 04 - Request Transmit policy - value 0x0000037F
    130200E8 TLV 0x18.13(24.19) - Len 02 - Number of bytes - value 0xe8 -> 232 bytes
    160101 TLV 0x18.16(24.22) - Len 01 - Number of grants per interval- value 1
    150400000320 TLV 0x18.15(24.21) - Len 04 - Tolerated Grant Jitter - value 0x320 -> 800
    140400004E20 TLV 0x18.14(24.20) - Len 04 - Nominal Grant interval - value 0x4e20 -> 20000

    2. Classifier TLV.

    The classifier used in this example is a simple IP packet classifier only. Other types of classifier exist (Protocol, UDP/TCP, etc.).

    The Upstream Classifier TLV is TLV 22 (0x16):

    160f01010203020004090605040a305879

    Decode:

    160f TLV 0x16 (22) - Len 15 - Upstream Classifier
    010102 TLV 0x16.1 (22.1) - Len 01 - Classifier reference - Unique classifier ID - value 0x02
    03020004 TLV 0x16.2 (22.2) - Len 02 - Service flow reference - value 0004 -> MUST match the SFID above
    0906 TLV 0x16.9 (22.9) - Len 06 - IPv4 packet classifier encoding
    05040a305879 TLV 0x16.9.5(22.9.5) - Len 04 - Destination IPv4 classifier - value 0a305879 10.48.88.121

    It corresponds to this service flow/classifier on the CM configuration file: 

    Main
    {
    	UsServiceFlow
    	{
    		UsServiceFlowRef 4;
    		QosParamSetType 6;
    		SchedulingType 6;
    		RequestOrTxPolicy 0x0000037f;
    		UnsolicitedGrantSize 232;
    		GrantsPerInterval 1;
    		ToleratedGrantJitter 800;
    		NominalGrantInterval 20000;
    	}
    	UsPacketClass
    	{
    		ClassifierRef 2;
    		ServiceFlowRef 4;
    		IpPacketClassifier
    		{
    			IpDstAddr 10.48.88.121;
    		}
    	}
    }

    Downstream Direction

    Example:

    test cable docsis dsa c005.c22c.dc5b message 191A010200990601060701050804000154A00A04000154A00B0200DA170f01010203020099090603040a305879

    Decode of the TLVs

    1. Service Flow TLV.

    The Downstream Service Flow TLV is TLV 25 (0x19):

    191A010200990601060701050804000154A00A04000154A00B0200DA

    Decode:

    191A TLV 0x19 (25) - Len 1A (26) - Downstream Service Flow definition
    01020099 TLV 0x19.1 (25.1) - Len 02 - Downstream Service Flow ID - value 0x99
    060106 TLV 0x19.6 (25.6) - Len 01 - QoS Parameter set type - value 06 -> Admitted and Active bit set
    070105 TLV 0x19.7 (25.7) - Len 01 - Traffic Priority - value 05 -> Prio 5
    0804000154A0 TLV 0x19.8 (25.8) - Len 04 - Max Sustain Rate - value 0x154a0 = 87200 bps
    0A04000154A0 TLV 0x19.A (25.10) - Len 04 - Min Reserved Rate - value 0x154a0 = 87200 bps
    0B0200DA TLV 0x19.B (25.11) - Len 02 - Assumed Min Rvd Rate packet size - value 0xda = 218

    2. Classifier TLV.

    This is also a plain IPv4 classifier. A more complex classifier can also be created.

    The Downstream Classifer TLV is TLV 23 (0x17):

    170f01010203020099090603040a305879

    Decode:

    170f TLV 0x17 (23) - Len 15 - Downstream Classifier
    010102 TLV 0x17.1 (23.1) - Len 01 - Downstream Classifier Reference - value 0x02
    03020099 TLV 0x17.3 (23.3) - Len 02 - Downstream Service Flow ID reference - value 0x99 -> MUST match SFID above
    0906 TLV 0x17.9 (23.9) - Len 06 - IPv4 classifier
    03040a305879 TLV 0x17.9.3(23.9.3) - Len 04 - Source IPv4 Address - value 0x0a305879 -> 10.48.88.121

    It correspods to this service flow/classifier on the CM configuration file:

    Main
    {
    	DsServiceFlow
    	{
    		DsServiceFlowRef 153;
    		QosParamSetType 6;
    		TrafficPriority 5;
    		MaxRateSustained 87200;
    		MinReservedRate 87200;
    		MinResPacketSize 218;
    	}
    	DsPacketClass
    	{
    		ClassifierRef 2;
    		ServiceFlowRef 153;
    		IpPacketClassifier
    		{
    			IpSrcAddr 10.48.88.121;
    		}
    	}
    }

    Delete the Flows

    Dynamic service flows can be deleted with a Dynamic-Service-Delete (DSD) message. The procedure is identical to delete both US SF and DS SF.

    test cable docsis dsd <mac> <service-flow-id>

    Example:

    acdc-cbr8-2#show cable modem 2cab.a40c.5598 service-flow
    
    SUMMARY:
    MAC Address    IP Address      Host          MAC               Prim  Num Primary        DS
                                   Interface     State             Sid   CPE Downstream     RfId
    2cab.a40c.5598 172.54.0.4      C1/0/2/UB     w-online          27    0   In1/0/2:7      8711
    
    
    Sfid  Dir Curr  Sid   Sched  Prio MaxSusRate  MaxBrst     MinRsvRate  Throughput
              State       Type
    17    US  act   27    BE     5    1024        3044        0           929
    18    DS  act   N/A   N/A    3    300000000   24600       0           887
    
    --> Before : 2SFs only

    acdc-cbr8-2#test cable docsis dsa 2cab.a40c.5598 message 1823010200040601060F010610040000037F130200E8160101150400000320140400004E20160f01010203020004090605040a305879
    --> UGS SF

    acdc-cbr8-2#test cable docsis dsa 2cab.a40c.5598 message 191A010200990601060701050804000154A00A04000154A00B0200DA170f01010203020099090603040a305879
    --> DS SF

    acdc-cbr8-2#show cable modem 2cab.a40c.5598 service-flow Load for five secs: 10%/1%; one minute: 9%; five minutes: 10% Time source is NTP, 10:54:57.426 CET Thu Nov 22 2018 SUMMARY: MAC Address IP Address Host MAC Prim Num Primary DS Interface State Sid CPE Downstream RfId 2cab.a40c.5598 172.54.0.4 C1/0/2/UB w-online 27 0 In1/0/2:7 8711 Sfid Dir Curr Sid Sched Prio MaxSusRate MaxBrst MinRsvRate Throughput State Type 17 US act 27 BE 5 1024 3044 0 896 57 US act 43 UGS 0 0 0 0 0 18 DS act N/A N/A 3 300000000 24600 0 0 58 DS act N/A N/A 5 87200 3044 87200 0

    --> Now Both UGS and DS voice flows are created (and throughput would be seen as soon as packets match the classifier.)

    Related Information