Home > Articles > Networking > Voice/IP Communications

  • Print
  • + Share This
This chapter is from the book

QoS on Slow-Speed Links

In this section, you make the most of your limited bandwidth on lower-speed WAN interfaces. Specifically, you are introduced to compression technologies, which send fewer bits across the link, and link fragmentation and interleaving technologies, which fragment large payloads to reduce the serialization delay that is experienced by smaller payloads.

Tools for Using Bandwidth Efficiently

The two broad categories of compression are as follows:

  • Payload compression—Reduces the payload size, using approaches such as STAC, Predictor, or MPPC.

  • Header compression—Reduces the size of the TCP and RTP headers.

The goal of compression technologies is to increase the throughput over a WAN link while reducing the delay. However, particularly with payload-compression approaches, the time that is required by lower-end routers to run the compression algorithm can increase the overall delay. Fortunately, these routers can have hardware acceleration modules that you can add to dramatically improve the router’s ability to perform compression in a timely manner. For example, a Compression Advanced Integration Module (CAIM) is available to offload compression tasks from 2600 Series routers.

These Quick Reference Sheets, however, focus on header compression. With header compression, a header typically is reduced from approximately 40 bytes in size to approximately 3 to 5 bytes [for Transport Control Protocol (TCP) header compression] or 2 to 4 bytes [for Real-Time Transport Protocol (RTP) header compression]. However, the routers technically are not doing compression. Rather, these routers cache information that does not change during a conversation, such as source and destination IP addresses and TCP/UDP port numbers. The compressed header then carries such information as UDP checksums and a session context ID (CID), which identifies which flow the packet is a part of.

Figure 32Figure 32

Another QoS mechanism that is useful for slower link speeds is Link Fragmentation and Interleaving (LFI). Consider a 1500-byte data frame that is being sent out of a 64-kbps serial interface. The interface, in this case, needs 187 ms just to place that data frame on the wire. If a smaller packet were sitting behind that data frame (for example, a voice frame), that frame might have already experienced excessive “serialization” delay before it was ever placed on the wire. LFI mechanisms fragment larger payloads to specified fragment sizes and then interleave the smaller payloads in among the fragments, greatly reducing the serialization delay that is experienced by the smaller payloads.

Figure 33Figure 33

The three primary LFI mechanisms supported by Cisco are as follows:

  • Multilink PPP (MLP)—Used on PPP links

  • FRF.12—Used on Voice over IP over Frame Relay (VoIPovFR) links

  • FRF.11 Annex C—Used on Voice over Frame Relay (VoFR) links

TCP and RTP Header Compression

Although header compression has been supported in the IOS for some time, IOS 12.2(13)T introduced Class-Based Header (CB-Header) Compression, which allows you to configure compression using the three-step MQC approach. CB-Header Compression is the focus of these Quick Reference Sheets.

Before configuring header compression, realize that header compression is most effective for slow links that are carrying packets with relatively small payloads, such as voice or Telnet traffic.

CB-Header Compression can be configured from policy-map-class configuration mode with the following command:

Router(config-pmap-c)#compression header ip [tcp | rtp]

Note that if you do not specify tcp or rtp, this command performs both TCP and RTP header compression. Unlike previous versions of header compression, you do not need to specify the maximum number of simultaneous compressed sessions supported. With CB-Header Compression, the number of connections is determined automatically by the IOS.

Consider the following CB-Header Compression example:

Router(config)#class-map VOICE
Router(config-cmap)#match protocol rtp
Router(config-cmap)#exit
Router(config)#policy-map COMPRESS
Router(config-pmap)#class VOICE
Router(config-pmap-c)#compression header ip rtp
Router(config-pmap-c)#exit
Router(config-pmap)#exit
Router(config)#interface serial 0/1
Router(config-if)#service-policy output COMPRESS

In this example, you are matching voice traffic (that is, RTP packets) using NBAR. Then, you are applying CB-Header Compression to those RTP packets with the COMPRESS policy-map. The policy-map is then applied outbound to interface serial 0/1. Because you configured header compression using the MQC approach, the same verification commands that you learned earlier (that is, show policy-map and show policy-map interface interface-identifier) are still applicable.

Using MLP and FRF.12 for LFI

The serialization delay goal that you have when configuring an LFI mechanism is in the range of 10 to 15 ms. To determine the serialization delay for a specific frame size on a specific link speed, use the following formula:

Serialization Delay = (Frame_Size * 8) / Link_Speed

The reason that you multiply the frame size by 8 is to convert bytes into bits. Consider a frame size of 512 bytes on a link speed of 128 kbps, as follows:

Serialization Delay = (512 * 8) / 128 = 32 ms

Although Cisco supports FRF.11 Annex C as an LFI mechanism for VoFR networks, these Quick Reference Sheets focus on the configuration of Multilink PPP (MLP) and FRF.12. First, consider the configuration of MLP.

Multilink PPP, by default, fragments traffic. You can leverage that fact and run MLP, even over a single link. You perform the MLP configuration under a virtual multilink interface, and then you can assign one or more physical interfaces to the multilink group. The physical interface does not have an IP address assigned, but the virtual multilink interface does. Typically, you use a single interface as a member of the multilink group. Following is the syntax to configure MLP:

Router(config)#interface multilink multilink_interface_number

(Creates a virtual multilink interface.)

Router(config-if)#ip address ip_address subnet_mask

(Assigns an IP address to the virtual multilink interface.)

Router(config-if)#ppp multilink

(Configures fragmentation on the multilink interface.)

Router(config-if)#ppp multilink interleave

(Shuffles the fragments together.)

Router(config-if)#ppp fragment-delay serialization_delay

(Specifies how long it will take for a fragment to exit the interface, in milliseconds. Note that the IOS automatically calculates the appropriate packet size to meet the specified serialization delay.)

Router(config-if)#encapsulation ppp

(Enables ppp encapsulation on the physical interface.)

Router(config-if)#no ip address

(Removes the IP address from the physical interface.)

Router(config-if)#multilink-group multilink_group_number

(Associates the physical interface with the multilink group.)

In the following example, the goal is to configure MLP on routers R1 and R2 so that you are achieving a serialization delay of 10 ms on their serial 0/0 interfaces.

Figure 34Figure 34

R1(config)#interface multilink 1
R1(config-if)#ip address 10.1.1.1 255.255.255.0
R1(config-if)#ppp multilink
R1(config-if)#ppp multilink interleave
R1(config-if)#ppp fragment-delay 10
R1(config-if)#exit
R1(config)#interface serial 0/0
R1(config-if)#encapsulation ppp
R1(config-if)#no ip address
R1(config-if)#multilink-group 1

R2(config)#interface multilink 1
R2(config-if)#ip address 10.1.1.2 255.255.255.0
R2(config-if)#ppp multilink
R2(config-if)#ppp multilink interleave
R2(config-if)#ppp fragment-delay 10
R2(config-if)#exit
R2(config)#interface serial 0/0
R2(config-if)#encapsulation ppp
R2(config-if)#no ip address
R2(config-if)#multilink-group 1

To verify the MLP configuration, you can use the show interfaces multilink interface-identifier command. The output from this command shows how many interleaves have been performed. Therefore, this is an excellent command to verify that MLP is indeed functioning.

FRF.12 is configured as part of a Frame Relay map-class. Unlike MLP, where you can specify a desired serialization delay, with FRF.12, you must specify the size that you want to fragment frames to. As a rule of thumb, divide the line speed by 800 to get a fragment size that results in a 10-ms serialization delay. For example, on a 64,000-bps link, divide 64,000 by 800 to get 80. This means that if you specify a fragment size of 80, your fragments will have a serialization delay of 10 ms.

Following is the syntax to configure FRF.12:

Router(config)#map-class frame-relay name

(Creates the map-class and enters map-class configuration mode.)

Router(config-map-class)#frame-relay fragment fragment-size

(Specifies the size to which FRF.12 will fragment frames. Note that the IOS does not automatically calculate the fragment size based on a specified delay, as the MLP mechanism did.)


Router(config-if)#frame-relay traffic-shaping

(Enables Frame Relay traffic shaping on the physical interface.)

Router(config-if | config-subif)#frame-relay class name

(Associates the map-class with an interface or a subinterface.)

Router(config-fr-dlci)#class name

(Associates the map-class with a Frame Relay DLCI.)

In the following example, you configure FRF.12 to create a serialization delay of 10 ms on a link that is clocked at a rate of 64 kbps. The map-class then is applied to DLCI 101. Because FRF.12 is configured as a part of Frame Relay traffic shaping, you also specify a CIR of 64 kbps and a Bc of 640.

Figure 35Figure 35

R1(config)#map-class frame-relay FRF12-EXAMPLE
R1(config-map-class)#frame-relay cir 64000
R1(config-map-class)#frame-relay bc 640
R1(config-map-class)#frame-relay fragment 80
R1(config-map-class)#exit
R1(config)#interface serial 0/1
R1(config-if)#frame-relay traffic-shaping
R1(config-if)#interface serial 0/1.1 point-to-point
R1(config-subif)#frame-relay interface-dlci 101
R1(config-fr-dlci)#class FRF12-EXAMPLE

You can use the show frame-relay fragment command to view the fragment size that is being used. Also, use the show frame-relay pvc command to view the fragment size that is used on a particular DLCI.

  • + Share This
  • 🔖 Save To Your Account