1) MLPPP uses fragmentation scheme where large packets are sliced in pieces and sequence numbers are added using special MLPPP headers
2) Small voice packets are interleaved with fragments of large packets using a special priority queue
We see that MLPPP was originally designed to work with multiple physical links at the same time. However, PPP Multilink Interleave only works with one physical link. The reason is that voice (small) packets are being sent without sequence numbers. If we were using multiple physical links, the receiving side may start accepting voice packets out of their original order (due to different physical link latencies). And since voice packets bear no fragmentation headers, there is no way to reorder them. In effect, packets may arrive to their final destination out of order, degrading voice quality.
To overcome this obstacle, Multiclass Multilink PPP (MCMLPPP or MCMLP) has been introduced in RFC 2886. Under this RFC, different “fragment streams” or classes are supported at sending and receiving sides, using independent sequence numbers. Therefore, with MCMLPPP voice packets may be sent using MLPPP header with separate sequence numbers space. In result, MCMPPP permits the use of fragmentation and interleaving over multiple physical links at time.
Now back to our MLPPPoFR example. Let’s imagine the situation where we have two routers (R1 and R2) connected via FR cloud, with physical ports clocked at 512Kpbs and PVC CIR values equal to 384Kbps (There is no ATM interworking in this example). We need to provide priority treatment to voice packets and enable PPP Multilink and Interleave to decrease serialization delays.
Topology:
[R1]---[DLCI 112]---[Frame-Relay]---[DLCI 211]---[R2]
Qos Policy:R1
class-map match-all VOICE
match ip dscp ef
class-map match-all SIGNALING
match ip dscp cs3
!
!
policy-map CBWFQ
class VOICE
priority 48
class SIGNALING
bandwidth 8
class class-default
fair-queue
Next create a Virtual-Template interface for PPPoFR. We need to calculate the fragment size for MLPPP. Since physical port speed is 512Kpbs, and required serialization delay should not exceed 10ms (remember, fragment size is based on physical port speed!), the fragment size must be set to [512000/8]*0.01=640 bytes. How is the fragment size configured with MLPPP? By using command ppp multilink fragment delay – however, IOS CLI takes this delay value (in milliseconds) and multiplies it by configured interface (virtual-template) bandwidth (in our case 384Kbps). We can actually change the virtual-template bandwidth to match the physical interface speed, but this would affect the CBWFQ weights! Therefore, we take the virtual-template bandwidth (384Kpbs) and adjust the delay to make sure the fragment size matches the physical interace rate is 512Kpbs. This way, the “effective” delay value would be set to “640*8/384 = 13ms” (Fragment_Size/CIR*8) to accomodate the physical and logical bandwidth discrepancy. (This may be unimportant if our physical port speed does not differ much from PVC CIR. However, if you have say PVC CIR=384Kbps and port speed 768Kbps you may want to pay attention to this issue)
R1:
interface Loopback0 ip address 177.1.101.1 255.255.255.255 ! interface Virtual-Template1 bandwidth 384 ip unnumbered Loopback0 ppp multilink ppp multilink fragment delay 13 ppp multilink interleave service-policy output CBWFQ
R2:
interface Loopback0 ip address 177.1.102.1 255.255.255.255 ! interface Virtual-Template1 bandwidth 384 ip unnumbered Loopback0 ppp multilink ppp multilink fragment delay 13 ppp multilink interleave service-policy output CBWFQ
Next we configure PVC shaping settings by using legacy FRTS configuration. Note that Bc is set to CIR*10ms.
R1&R2
map-class frame-relay SHAPE_384K frame-relay cir 384000 frame-relay bc 3840 frame-relay be 0 frame-relay mincir 384000
apply all the settings to the Frame-Relay interfaces:
R1:
interface Serial0/0 no ip address encapsulation frame-relay serial restart-delay 0 frame-relay traffic-shaping ! interface Serial0/0.1 point-to-point frame-relay interface-dlci 112 ppp Virtual-Template1 class SHAPE_384K
R2:
interface Serial0/0 no ip address encapsulation frame-relay serial restart-delay 0 frame-relay traffic-shaping ! interface Serial0/0.1 point-to-point frame-relay interface-dlci 211 ppp Virtual-Template1 class SHAPE_384K
Verification
R1#SHOW INT VIRtual-ACCess 2 Virtual-Access2 is up, line protocol is up Hardware is Virtual Access interface Interface is unnumbered. Using address of Loopback0 (177.1.101.1) MTU 1500 bytes, BW 384 Kbit/sec, DLY 100000 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation PPP, LCP Open, multilink Open Link is a member of Multilink bundle Virtual-Access3 PPPoFR vaccess, cloned from Virtual-Template1 Vaccess status 0x44 Bound to Serial0/0.1 DLCI 112, Cloned from Virtual-Template1, loopback not set Keepalive set (10 sec) DTR is pulsed for 5 seconds on reset Last input 00:00:05, output never, output hang never Last clearing of "show interface" counters 00:48:42 Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0 Queueing strategy: fifo Output queue: 0/40 (size/max) 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 572 packets input, 10084 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants, 0 throttles 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 572 packets output, 8960 bytes, 0 underruns 0 output errors, 0 collisions, 0 interface resets 0 unknown protocol drops 0 output buffer failures, 0 output buffers swapped out 0 carrier transitions R1# R1# R1#SHOW INT VIRtual-ACCess 3 Virtual-Access3 is up, line protocol is up Hardware is Virtual Access interface Interface is unnumbered. Using address of Loopback0 (177.1.101.1) MTU 1500 bytes, BW 384 Kbit/sec, DLY 100000 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation PPP, LCP Open, multilink Open Open: IPCP MLP Bundle vaccess, cloned from Virtual-Template1 Vaccess status 0x40, loopback not set Keepalive set (10 sec) DTR is pulsed for 5 seconds on reset Last input 00:37:26, output never, output hang never Last clearing of "show interface" counters 00:47:35 Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0 Queueing strategy: Class-based queueing Output queue: 0/1000/64/0 (size/max total/threshold/drops) Conversations 0/1/128 (active/max active/max total) Reserved Conversations 1/1 (allocated/max allocated) Available Bandwidth 232 kilobits/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 12 packets input, 1068 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants, 0 throttles 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 12 packets output, 1134 bytes, 0 underruns 0 output errors, 0 collisions, 0 interface resets 0 unknown protocol drops 0 output buffer failures, 0 output buffers swapped out 0 carrier transitions R1# R1#show policy-map inte R1#show policy-map interface Virtual-Template1 Service-policy output: CBWFQ Service policy content is displayed for cloned interfaces only such as vaccess and sessions Virtual-Access3 Service-policy output: CBWFQ Class-map: VOICE (match-all) 5 packets, 510 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: ip dscp ef (46) Queueing Strict Priority Output Queue: Conversation 136 Bandwidth 48 (kbps) Burst 1200 (Bytes) (pkts matched/bytes matched) 5/510 (total drops/bytes drops) 0/0 Class-map: SIGNALING (match-all) 0 packets, 0 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: ip dscp cs3 (24) Queueing Output Queue: Conversation 137 Bandwidth 8 (kbps)Max Threshold 64 (packets) (pkts matched/bytes matched) 0/0 (depth/total drops/no-buffer drops) 0/0/0 Class-map: class-default (match-any) 7 packets, 534 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: any Queueing Flow Based Fair Queueing Maximum Number of Hashed Queues 128 (total queued/total drops/no-buffer drops) 0/0/0
R1# show ppp multilink Virtual-Access3, bundle name is R2 Endpoint discriminator is R2 Bundle up for 00:49:28, total bandwidth 384, load 1/255 Receive buffer limit 12192 bytes, frag timeout 1000 ms Interleaving enabled 0/0 fragments/bytes in reassembly list 0 lost fragments, 0 reordered 0/0 discarded fragments/bytes, 0 lost received 0x7 received sequence, 0x7 sent sequence Member links: 1 (max not set, min not set) Vi2, since 00:49:28, 624 weight, 614 frag size No inactive multilink interfaces R1# R1# R1# R1#sho int s0/0 Serial0/0 is up, line protocol is up Hardware is M4T MTU 1500 bytes, BW 1544 Kbit/sec, DLY 20000 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation FRAME-RELAY, crc 16, loopback not set Keepalive set (10 sec) Restart-Delay is 0 secs LMI enq sent 298, LMI stat recvd 299, LMI upd recvd 0, DTE LMI up LMI enq recvd 0, LMI stat sent 0, LMI upd sent 0 LMI DLCI 0 LMI type is ANSI Annex D frame relay DTE FR SVC disabled, LAPF state down Broadcast queue 0/64, broadcasts sent/dropped 49/0, interface broadcasts 0 Last input 00:00:05, output 00:00:02, output hang never Last clearing of "show interface" counters 00:50:43 Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0 Queueing strategy: dual fifo Output queue: high size/max/dropped 0/256/0 Output queue: 0/128 (size/max) 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 947 packets input, 31366 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants, 0 throttles 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 946 packets output, 31062 bytes, 0 underruns 0 output errors, 0 collisions, 2 interface resets 0 unknown protocol drops 0 output buffer failures, 0 output buffers swapped out 2 carrier transitions DCD=up DSR=up DTR=up RTS=up CTS=up
No comments:
Post a Comment