MQC – Frame Relay policing and marking
November 22, 2008 Leave a comment
In a previous post we have seen how to configure the Frame Relay cloud (service provider FR switch) to strictly enforce the committed contract with the customer by enabling policing on incoming interface and traffic shaping with congestion management on outgoing interface, nevertheless the customer can opt to specify to the service provider which packet should be dropped when a congestion is experienced in the FR cloud, which is the topic of this post.
Figure1: Lab topology
As depicted in figure1, shaping is configured on the Frame Relay switch outgoing interface with congestion management, in which all packets marked with “DE” bit will be discarded in case of s1/0 shaping queue congestion (DE threshold reached).
R2, the sender, will have the responsibility to mark for FRS all packets that it judge eligible for discard.
A traffic generator station connected to R2 will produce two different flows of traffic to the receiver station connected to R1, the first flow, traffic1, is supposed to represent a critical application traffic, the second, traffic2, is considered as junk traffic.
As shown below, in the first section different tests are performed without any policing and marking, then in the second section the same configurations are reproduced but with policing and marking:
1) Without policing and DE marking
1-a) Test1:
Critical application: traffic1 rate 32kbps – destination (192.168.201.10/udp 5001).
1-b) Test2:
Critical application: traffic1 – 32kbps – destination (192.168.201.10/udp 5001).
Junk traffic: traffic2 – 32kbps – destination (192.168.201.10/udp 5003).
1-c) Test3:
Critical application: traffic1 – 32kbps – destination (192.168.201.10/udp 5001).
Junk traffic: traffic2 – 64kbps – destination (192.168.201.10/udp 5003).
2) With policing and DE marking
2-a) Test4:
Critical application: traffic1 – 32kbps – destination (192.168.201.10/udp 5001).
Junk traffic: traffic2 – 32kbps – destination (192.168.201.10/udp 5003).
2-b) Test5:
Critical application: traffic1 – 32kbps – destination (192.168.201.10/udp 5001).
Junk traffic: traffic2 – 64kbps – destination (192.168.201.10/udp 5003).
1) Without policing and DE marking
1-a) Test1:
- Critical application: traffic1 rate 32kbps – destination (192.168.201.10/udp 5001).
- No policing at the sender R2.
FRS:
FRS_QOS#sh frame pvc 201
PVC Statistics for interface Serial1/0 (Frame Relay DCE)
DLCI = 201, DLCI USAGE = SWITCHED, PVC STATUS = ACTIVE, INTERFACE = Serial1/0
input pkts 77 output pkts 289 in bytes 26225 out bytes 379518 dropped pkts 0 in pkts dropped 0 out pkts dropped 0 out bytes dropped 0 in FECN pkts 0 in BECN pkts 0 out FECN pkts 0 out BECN pkts 0 in DE pkts 0 out DE pkts 0 out bcast pkts 0 out bcast bytes 0 30 second input rate 0 bits/sec, 0 packets/sec
switched pkts 77 Detailed packet drop counters: no out intf 0 out intf down 0 no out PVC 0 in PVC down 0 out PVC down 0 pkt too big 0 shaping Q full 0 pkt above DE 0 policing drop 0 pvc create time 01:34:11, last time pvc status changed 00:11:43
cir 64000 bc 8000 be 0 byte limit 1000 interval 125 mincir 32000 byte increment 1000 Adaptive Shaping none pkts 292 bytes 384024 pkts delayed 2 bytes delayed 936
traffic shaping drops 0 Queueing strategy: fifo
FRS_QOS# |
The FRS output queue is not congested, so very little queuing and no drops
Figure2 : Traffic1 at the destination station
Note the jitter for traffic1 is almost 0 (good performance)
1-b) Test2:
- Critical application: traffic1 – 32kbps – destination (192.168.201.10/udp 5001).
- Junk traffic: traffic2 – 32kbps – destination (192.168.201.10/udp 5003).
- No policing at the sender R2.
R2:
R2(config-fr-dlci)#do sh frame pvc 102
PVC Statistics for interface Serial0/0 (Frame Relay DTE)
DLCI = 102, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial0/0.102
input pkts 120 output pkts 3754 in bytes 36944 out bytes 5535345 dropped pkts 0 in FECN pkts 0 in BECN pkts 0 out FECN pkts 0 out BECN pkts 0 in DE pkts 0 out DE pkts 0 out bcast pkts 36 out bcast bytes 11889 30 second input rate 0 bits/sec, 0 packets/sec
pvc create time 00:33:26, last time pvc status changed 00:31:56 R2(config-fr-dlci)# |
R2(config-fr-dlci)#do sh int s0/0 Serial0/0 is up, line protocol is up Hardware is PowerQUICC Serial MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec, reliability 255/255, txload 10/255, rxload 1/255 Encapsulation FRAME-RELAY, loopback not set Keepalive set (10 sec) LMI enq sent 207, LMI stat recvd 207, 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 Broadcast queue 0/64, broadcasts sent/dropped 37/0, interface broadcasts 0 Last input 00:00:04, output 00:00:00, output hang never Last clearing of “show interface” counters 00:34:34 Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0 Queueing strategy: fifo Output queue :0/40 (size/max) 30 second input rate 0 bits/sec, 0 packets/sec
328 packets input, 40351 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants, 0 throttles 1 input errors, 0 CRC, 1 frame, 0 overrun, 0 ignored, 0 abort 4340 packets output, 6106331 bytes, 0 underruns 0 output errors, 0 collisions, 1 interface resets 0 output buffer failures, 0 output buffers swapped out 2 carrier transitions DCD=up DSR=up DTR=up RTS=up CTS=up
R2(config-fr-dlci)# |
64kbps represents the aggregated bandwidth of the two applications: traffic1 and traffic2.
FRS:
FRS_QOS#sh frame pvc 201
PVC Statistics for interface Serial1/0 (Frame Relay DCE)
DLCI = 201, DLCI USAGE = SWITCHED, PVC STATUS = ACTIVE, INTERFACE = Serial1/0
input pkts 2 output pkts 506 in bytes 658 out bytes 757672 dropped pkts 0 in pkts dropped 0 out pkts dropped 0 out bytes dropped 0 in FECN pkts 0 in BECN pkts 0 out FECN pkts 0 out BECN pkts 0 in DE pkts 0 out DE pkts 0 out bcast pkts 0 out bcast bytes 0 30 second input rate 0 bits/sec, 0 packets/sec 30 second output rate 64000 bits/sec, 5 packets/sec switched pkts 2 Detailed packet drop counters: no out intf 0 out intf down 0 no out PVC 0 in PVC down 0 out PVC down 0 pkt too big 0 shaping Q full 0 pkt above DE 0 policing drop 0 pvc create time 02:11:44, last time pvc status changed 00:49:17 Congestion DE threshold 28 cir 64000 bc 8000 be 0 byte limit 1000 interval 125 mincir 32000 byte increment 1000 Adaptive Shaping none pkts 498 bytes 745656 pkts delayed 498 bytes delayed 745656 shaping active traffic shaping drops 0 Queueing strategy: fifo Output queue 23/40, 0 drop, 502 dequeued FRS_QOS# |
FRS output queue is congested but no dropping because DE threshold not reached.
Figure3 : Traffic1 at the destination station
Traffic1 received at the destination station at the same rate sending rate of 32kbps without losses but with a bigger delays and jitter (Figure3).
1-c) Test3:
- Critical application: traffic1 – 32kbps – destination (192.168.201.10/udp 5001).
- Junk traffic: traffic2 – 64kbps – destination (192.168.201.10/udp 5003).
- No policing at the sender R2.
R2:
R2(config-fr-dlci)#do sh int s0/0 Serial0/0 is up, line protocol is up Hardware is PowerQUICC Serial MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec, reliability 255/255, txload 16/255, rxload 1/255 Encapsulation FRAME-RELAY, loopback not set Keepalive set (10 sec) LMI enq sent 255, LMI stat recvd 255, 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 Broadcast queue 0/64, broadcasts sent/dropped 45/0, interface broadcasts 0 Last input 00:00:03, output 00:00:00, output hang never Last clearing of “show interface” counters 00:42:34 Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0 Queueing strategy: fifo Output queue :0/40 (size/max) 30 second input rate 0 bits/sec, 0 packets/sec
406 packets input, 47591 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants, 0 throttles 1 input errors, 0 CRC, 1 frame, 0 overrun, 0 ignored, 0 abort 7079 packets output, 10124289 bytes, 0 underruns 0 output errors, 0 collisions, 1 interface resets 0 output buffer failures, 0 output buffers swapped out 2 carrier transitions DCD=up DSR=up DTR=up RTS=up CTS=up
R2(config-fr-dlci)# |
Figure4: effect of junk traffic (64kbps) traffic on critical traffic
As you can note from the figure4, the critical traffic is experiencing bad performance with packets drops and high jitter.
FRS:
FRS_QOS#sh frame pvc 201
PVC Statistics for interface Serial1/0 (Frame Relay DCE)
DLCI = 201, DLCI USAGE = SWITCHED, PVC STATUS = ACTIVE, INTERFACE = Serial1/0
input pkts 2 output pkts 575 in bytes 658 out bytes 863650 dropped pkts 311 in pkts dropped 0 out pkts dropped 311 out bytes dropped 464782 late-dropped out pkts 311 late-dropped out bytes 464782 in FECN pkts 0 in BECN pkts 0 out FECN pkts 0 out BECN pkts 0 in DE pkts 0 out DE pkts 0 out bcast pkts 0 out bcast bytes 0 30 second input rate 0 bits/sec, 0 packets/sec 30 second output rate 63000 bits/sec, 5 packets/sec switched pkts 2 Detailed packet drop counters: no out intf 0 out intf down 0 no out PVC 0 in PVC down 0 out PVC down 0 pkt too big 0 shaping Q full 311 pkt above DE 0 policing drop 0 pvc create time 02:07:04, last time pvc status changed 00:44:35 Congestion DE threshold 28 cir 64000 bc 8000 be 0 byte limit 1000 interval 125 mincir 32000 byte increment 1000 Adaptive Shaping none pkts 581 bytes 872662 pkts delayed 581 bytes delayed 872662 shaping active traffic shaping drops 0 Queueing strategy: fifo Output queue 39/40, 318 drop, 587 dequeued FRS_QOS# |
FRS output queue is heavily congested and DE threshold is reached, therefore packets marked with “DE” bit are dropped.
2) With policing and DE marking
2-a) Test4:
- Critical application: traffic1 – 32kbps – destination (192.168.201.10/udp 5001).
- Junk traffic: traffic2 – 32kbps – destination (192.168.201.10/udp 5003).
- Policing configured on R2.
There is two ways of configuring MQC Frame Relay shaping:
The first is to use traditional MQC with “match class” and match “fr-dlci” in a class map to specify which traffic will be policed (figure 5).
The second is to make sure the policed traffic fall in the “class-default” class map and apply the policy directly to the PVC (figure 6).
In our example we use the second one.
Figure 5: Apply policy to the main interface
Figure 6: Apply policy directly to a specific PVC
Parameters |
FR End-device, sender |
FR switch |
FR End-device, receiver |
||||
Shaping (outbound) |
Policing (outbound) |
Policing (inbound) |
Shaping (outbound) holdq=40 |
Shaping (inbound) |
|||
CIR |
64000 |
16000 |
– |
64kbps |
Congestion management |
– |
|
DE |
70% |
||||||
Bc=CIR*Tc |
64000 |
2000 |
– |
8000 |
– |
||
Tc |
125ms |
125ms |
– |
125ms |
– |
||
Be |
0 |
0 |
– |
0 |
– |
R2 (sender) configuration:
ip access-list extended TRAFFIC1 permit udp host 192.168.102.10 host 192.168.201.10 eq 5001 |
This ACL match the critical application traffic.
class-map match-all TRAFFIC1_cmap match access-group name TRAFFIC1 ! policy-map POLICY_R2 class TRAFFIC1_cmap class class-default police cir 16000 bc 2000 conform-action transmit exceed-action set-frde-transmit |
An empty class “TRAFFIC1_map” for the critical traffic is included in the policy-map to separate all that is not traffic1 into “class-default” class (traffic2 included) so we can apply a two color policing (figure7) that transmit conformed traffic and mark all that exceed with “DE” bit.
map-class frame-relay FR_mapc_R2 frame-relay traffic-rate 64000 64000 service-policy output POLICY_R2 |
The overall traffic through the PVC is shaped at 64kbps and a subset of that traffic is policed at 16kbps (through the policy applied in the output direction).
interface Serial0/0.102 point-to-point
|
Then the map-class is applied directly to the PVC 102
Figure7: 2-color policing
FRS:
FRS_QOS#sh frame pvc 201
PVC Statistics for interface Serial1/0 (Frame Relay DCE)
DLCI = 201, DLCI USAGE = SWITCHED, PVC STATUS = ACTIVE, INTERFACE = Serial1/0
input pkts 18 output pkts 1064 in bytes 3921 out bytes 1584660 dropped pkts 0 in pkts dropped 0 out pkts dropped 0 out bytes dropped 0 in FECN pkts 0 in BECN pkts 0 out FECN pkts 0 out BECN pkts 0 in DE pkts 0 out DE pkts 86 out bcast pkts 0 out bcast bytes 0 30 second input rate 0 bits/sec, 0 packets/sec
switched pkts 18 Detailed packet drop counters: no out intf 0 out intf down 0 no out PVC 0 in PVC down 0 out PVC down 0 pkt too big 0 shaping Q full 0 pkt above DE 0 policing drop 0 pvc create time 01:39:33, last time pvc status changed 01:38:13
cir 64000 bc 8000 be 0 byte limit 1000 interval 125 mincir 32000 byte increment 1000 Adaptive Shaping none pkts 1064 bytes 1584660 pkts delayed 563 bytes delayed 836566
traffic shaping drops 0 Queueing strategy: fifo
FRS_QOS# |
Note that output packets are marked with “DE” bit but no dropping because the threshold of 70% (28 out of 40) is not reached, so both traffic1 and traffic2 are received by R1 at the sender rate as shown in figure 8 and figure 9.
Figure8: traffic1 at the receiver station
Figure9: traffic2 at the receiver station
R1:
R1#sh frame pvc 201
PVC Statistics for interface Serial0/0 (Frame Relay DTE)
DLCI = 201, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial0/0.201
input pkts 22963 output pkts 3143 in bytes 34172308 out bytes 598859 dropped pkts 0 in pkts dropped 0 out pkts dropped 0 out bytes dropped 0 in FECN pkts 0 in BECN pkts 0 out FECN pkts 0 out BECN pkts 0 in DE pkts 2774 out DE pkts 0 out bcast pkts 122 out bcast bytes 40129 5 minute input rate 57000 bits/sec, 2 packets/sec 5 minute output rate 4000 bits/sec, 2 packets/sec pvc create time 02:01:04, last time pvc status changed 02:01:04 cir 64000 bc 8000 be 0 byte limit 1000 interval 125 mincir 32000 byte increment 1000 Adaptive Shaping none pkts 3144 bytes 599039 pkts delayed 24 bytes delayed 8574 shaping inactive traffic shaping drops 0 Queueing strategy: fifo Output queue 0/40, 0 drop, 24 dequeued R1# |
The above output show that traffic can be marked as DE along the path but still can reach the destination because there was no congestion in the FR cloud.
2-b) Test5:
- Critical application: traffic1 – 32kbps – destination (192.168.201.10/udp 5001).
- Junk traffic: traffic2 – 64kbps – destination (192.168.201.10/udp 5003).
- Policing configured on R2.
FRS:
FRS_QOS#sh frame-relay pvc 201
PVC Statistics for interface Serial1/0 (Frame Relay DCE)
DLCI = 201, DLCI USAGE = SWITCHED, PVC STATUS = ACTIVE, INTERFACE = Serial1/0
input pkts 4 output pkts 547 in bytes 2184 out bytes 817932 dropped pkts 111 in pkts dropped 0 out pkts dropped 111 out bytes dropped 166722 late-dropped out pkts 111 late-dropped out bytes 166722 in FECN pkts 0 in BECN pkts 0 out FECN pkts 0 out BECN pkts 0 in DE pkts 0 out DE pkts 420 out bcast pkts 0 out bcast bytes 0 30 second input rate 0 bits/sec, 0 packets/sec
switched pkts 4 Detailed packet drop counters: no out intf 0 out intf down 0 no out PVC 0 in PVC down 0 out PVC down 0 pkt too big 0 shaping Q full 111 pkt above DE 0 policing drop 0 pvc create time 01:46:49, last time pvc status changed 01:45:28
cir 64000 bc 8000 be 0 byte limit 1000 interval 125 mincir 32000 byte increment 1000 Adaptive Shaping none pkts 553 bytes 826944 pkts delayed 553 bytes delayed 826944
traffic shaping drops 0 Queueing strategy: fifo
FRS_QOS# |
Traffic2 higher that the police rate of 16kbps is marked as “DE” at R2 and because of traffic2 high rate of 64kbps, FRS output queue is congested and reach the “DE” threshold, therefore FRS start dropping traffic2 marked with “DE”.
According to figure10 and figure11 traffic 1 is still received at the sender rate but not traffic 2 because it is marked with “DE” therefore dropped by the FRS
Figure10: traffic1 at the receiver station
Figure11: policed traffic2 at the receiver station
CONCLUSION:
Discard Eligible marking and dropping mechanism certainly resolves the problem of application sensitivity to dropping but not the delay and jitter sensitivity caused by queuing, for this, a separated queuing mechanism is needed for delay/jitter sensitive applications.