Skip to main content

What is Weighted Random Early Detection? How to configure WRED?

 

 Queuing mechanisms we have discus like LLQ is about managing the front of our queues. RED (Random Early Detection) is about managing the tail of our queue.

When a queue is full, IOS has no place to put newly arriving packets, so it discards them this phenomenon is called tail drop.

by default, queues use their maximum size, and then if any new packets arrived it will discard them until there is space again in the queue. yes dropped packets may cause significant application performance degradation when the router interface experiences congestion when the output queue is full. 



 Tail drop is bad for the overall network, especially for TCP traffic, and especially for TCP because when packets are lost, for whatever reason, TCP senders slow their rate of sending data. When tail drops occur and multiple packets are lost, the TCP connections slow even more. 

The TCP window size increases automatically but when TCP segments are dropped, it reduces back to one segment. The window size then grows exponentially until it reaches half the window size of what it was when the congestion occurred. The TCP window size then grows linearly. This process is called a slow start. Meaning that the overall network load tends to drop after multiple packets are tailed dropped. 

Interestingly, overall throughput can be improved by discarding a few packets as queues begin to fill, rather than waiting for the larger impact of tail drops. cisco created weighted random early detection (WRED). Weighted random early detection Cisco iso deployment of red Add weight (precedence / DSCP) Selectively prefer to drop packets with lower QoS markings. Can be applied on the interface or class level.

 Now the question is how WRED works?



 

 

Whenever the average queue depth is below the minimum threshold (20), WRED will not drop any packets at all. Until the average queue depth is above the minimum threshold (20), WRED will start to drop a small number of any (random) packets. If the average queue depth increases, even more, WRED will start dropping a larger percentage of random packets until it will reach the maximum threshold (45). If the average queue depth reaches the maximum threshold (45), WRED drops all packets. The MPD (25%) is the number of packets that WRED drops when we hit the maximum threshold (45).

MPD (mark probability denominator) IOS calculates the discard percentage used at the maximum threshold based on the simple formula 1/MPD.

Enough talk now. Let’s see how to configure WRED with IP Precedence and DSCP this tech.


Topology:




Goal: 

  • configure the topology as per the diagram 
  • configure IP addresses to their ports as per the topology 
  • configure OSPF 1 routing between router 1 and router 2
  • configure WRED default MPD (mark probability denominator)
  • configure WRED using IP precedence on router 1 with the following terms.

1. traffic marking with IPP value 0 and 1 allow 22 percent bandwidth 

2. traffic marking with IPP value 2 and 3 allow 27 percent bandwidth

3. traffic marking with IPP value 4 and  allow 30 percent bandwidth


R1(config)#interface serial 4/0

R1(config-if)#ip address 192.168.1.1 255.255.255.0

R1(config-if)#no shutdown

R1(config-if)#exit


R1(config)#interface fastEthernet 0/0

.R1(config-if)#ip address 172.16.1.1 255.255.0.0

R1(config-if)#no keepalive

R1(config-if)#no shutdown

R1(config-if)#exit


R1(config)#interface loopback 0

R1(config-if)#ip address 10.1.1.1 255.0.0.0

R1(config-if)#no shutdown

R1(config-if)#exit



R2(config)#interface fastEthernet 0/0
R2(config-if)#ip address 172.16.1.2 255.255.0.0
R2(config-if)#no keepalive
R2(config-if)#no shutdown
R2(config-if)#exit

R2(config)#int loopback 0
R2(config-if)#ip address 20.1.1.1 255.0.0.0
R2(config-if)#no shutdown
R2(config-if)#exit


R1(config)#router ospf 1

R1(config-router)#network 192.168.1.0 255.0.0.0 area 0

R1(config-router)#network 172.16.0.0 255.255.0.0 area 0

R1(config-router)#network 10.0.0.0 255.255.255.0 area 0

R1(config-router)#exit


*Feb  2 13:15:23.675: %OSPF-5-ADJCHG: Process 1, Nbr 20.1.1.1 on Serial4/0 from LOADING to FULL, Loading Done

R2(config)#router ospf 1
R2(config-router)#network 192.168.1.0 255.0.0.0 area 0
R2(config-router)#network 172.16.0.0 255.255.0.0 area 0
R2(config-router)#network 10.0.0.0 255.255.255.0 area 0
R2(config-router)#exit


*Feb  2 13:15:01.195: %OSPF-5-ADJCHG: Process 1, Nbr 10.1.1.1 on Serial4/0 from LOADING to FULL, Loading Done



R1(config)#class-map WRED0_1

R1(config-cmap)#match ip precedence 0 1

R1(config-cmap)#exit


R1(config)#class-map WRED2_3

R1(config-cmap)#match ip precedence 2 3

R1(config-cmap)#exit


R1(config)#class-map WRED4_5

R1(config-cmap)#match ip precedence 4 5

R1(config-cmap)#exit



R1(config)#policy-map prec_WRED

R1(config-pmap)#class WRED0_1

R1(config-pmap-c)#bandwidth percent 22

R1(config-pmap-c)#random-de

R1(config-pmap-c)#random-detect ?

  atm-clp-based                   Enable atm-clp-based WRED as drop policy

  clp                             parameters for each clp value

  cos                             parameters for each cos value

  cos-based                       Enable cos-class-based WRED as drop policy

  discard-class                   parameters for each discard-class value

  discard-class-based             Enable discard-class-based WRED as drop

                                  policy

  dscp                            parameters for each dscp value

  dscp-based                      Enable dscp-based WRED as drop policy

  ecn                             explicit congestion notification

  exponential-weighting-constant  weight for mean queue depth calculation

  precedence                      parameters for each precedence value

  precedence-based                Enable precedence-based WRED as drop policy

  <cr>


R1(config-pmap-c)#random-detect

R1(config-pmap-c)#random-detect precedence 0 20 40 10

R1(config-pmap-c)#random-detect precedence 1 24 40 10

R1(config-pmap-c)#exit


R1(config-pmap)#class WRED2_3

R1(config-pmap-c)#bandwidth percent 27

R1(config-pmap-c)#random-detect

R1(config-pmap-c)#random-detect precedence 2 26 40 10

R1(config-pmap-c)#random-detect precedence 3 29 40 10

R1(config-pmap-c)#exit


R1(config-pmap)#class WRED4_5

R1(config-pmap-c)#bandwidth percent 30

R1(config-pmap-c)#random-detect

R1(config-pmap-c)#random-detect precedence 4 31 40 10

R1(config-pmap-c)#random-detect precedence 5 33 40 10

R1(config-pmap-c)#exit

R1(config-pmap)#exit


R1(config)#interface serial 4/0

.R1(config-if)#service-policy output prec_WRED

R1(config-if)#

R1(config-if)#exit










R1#show policy-map interface serial 4/0
 Serial4/0

  Service-policy output: prec_WRED

    Class-map: WRED0_1 (match-all)
      0 packets, 0 bytes
      5 minute offered rate 0000 bps, drop rate 0000 bps
      Match: ip precedence 0  1
      Queueing
      queue limit 64 packets
      (queue depth/total drops/no-buffer drops) 0/0/0
      (pkts output/bytes output) 0/0
      bandwidth 22% (339 kbps)
        Exp-weight-constant: 9 (1/512)
        Mean queue depth: 0 packets
        class       Transmitted         Random drop      Tail drop          Minimum        Maximum     Mark
                pkts/bytes            pkts/bytes       pkts/bytes          thresh         thresh     prob

        0               0/0               0/0              0/0                 20            40  1/10
        1               0/0               0/0              0/0                 24            40  1/10
        2               0/0               0/0              0/0                 24            40  1/10
        3               0/0               0/0              0/0                 26            40  1/10
        4               0/0               0/0              0/0                 28            40  1/10
        5               0/0               0/0              0/0                 30            40  1/10
        6               0/0               0/0              0/0                 32            40  1/10
        7               0/0               0/0              0/0                 34            40  1/10

    Class-map: WRED2_3 (match-all)
      0 packets, 0 bytes
      5 minute offered rate 0000 bps, drop rate 0000 bps
      Match: ip precedence 2  3
      Queueing
      queue limit 64 packets
      (queue depth/total drops/no-buffer drops) 0/0/0
      (pkts output/bytes output) 0/0
      bandwidth 27% (416 kbps)
        Exp-weight-constant: 9 (1/512)
        Mean queue depth: 0 packets
        class       Transmitted         Random drop      Tail drop          Minimum        Maximum     Mark
                pkts/bytes            pkts/bytes       pkts/bytes          thresh         thresh     prob

        0               0/0               0/0              0/0                 20            40  1/10
        1               0/0               0/0              0/0                 22            40  1/10
        2               0/0               0/0              0/0                 26            40  1/10
        3               0/0               0/0              0/0                 29            40  1/10
        4               0/0               0/0              0/0                 28            40  1/10
        5               0/0               0/0              0/0                 30            40  1/10
        6               0/0               0/0              0/0                 32            40  1/10
        7               0/0               0/0              0/0                 34            40  1/10

    Class-map: WRED4_5 (match-all)
      0 packets, 0 bytes
      5 minute offered rate 0000 bps, drop rate 0000 bps
      Match: ip precedence 4  5
      Queueing
      queue limit 64 packets
      (queue depth/total drops/no-buffer drops) 0/0/0
      (pkts output/bytes output) 0/0
      bandwidth 30% (463 kbps)
        Exp-weight-constant: 9 (1/512)
        Mean queue depth: 0 packets
        class       Transmitted         Random drop      Tail drop          Minimum        Maximum     Mark
                pkts/bytes            pkts/bytes       pkts/bytes          thresh         thresh     prob

        0               0/0               0/0              0/0                 20            40  1/10
        1               0/0               0/0              0/0                 22            40  1/10
        2               0/0               0/0              0/0                 24            40  1/10
        3               0/0               0/0              0/0                 26            40  1/10
        4               0/0               0/0              0/0                 31            40  1/10
        5               0/0               0/0              0/0                 33            40  1/10
        6               0/0               0/0              0/0                 32            40  1/10
        7               0/0               0/0              0/0                 34            40  1/10

    Class-map: class-default (match-any)
      19 packets, 1622 bytes
      5 minute offered rate 0000 bps, drop rate 0000 bps
      Match: any

      queue limit 64 packets
      (queue depth/total drops/no-buffer drops) 0/0/0
      (pkts output/bytes output) 19/1622


R1#show policy-map
  Policy Map prec_WRED
    Class WRED0_1
      bandwidth 22 (%)
       packet-based wred, exponential weight 9

      class    min-threshold    max-threshold    mark-probablity
      ----------------------------------------------------------
      0       20               40               1/10
      1       24               40               1/10
      2       -                -                1/10
      3       -                -                1/10
      4       -                -                1/10
      5       -                -                1/10
      6       -                -                1/10
      7       -                -                1/10
    Class WRED2_3
      bandwidth 27 (%)
       packet-based wred, exponential weight 9

      class    min-threshold    max-threshold    mark-probablity
      ----------------------------------------------------------
      0       -                -                1/10
      1       -                -                1/10
      2       26               40               1/10
      3       29               40               1/10
      4       -                -                1/10
      5       -                -                1/10
      6       -                -                1/10
      7       -                -                1/10
    Class WRED4_5
      bandwidth 30 (%)
       packet-based wred, exponential weight 9

      class    min-threshold    max-threshold    mark-probablity
      ----------------------------------------------------------
      0       -                -                1/10
      1       -                -                1/10
      2       -                -                1/10
      3       -                -                1/10
      4       31               40               1/10
      5       33               40               1/10
      6       -                -                1/10
      7       -                -                1/10

(In the next section we are going to configure DSCP)





Comments

Popular posts from this blog

What is Classification and marking? What is IP Precedence and DSCP Values? What is AF and EF?

  Classification and Marking Classification and marking are the processes of identifying the priority of each packet. This is the first step of QOS control and should be done near the source hosts. Classification is the process of identifying and categorising traffic into classes, typically based upon incoming interface IP precedence, DSCP Source or Destination address. Application classification is the most fundamental QOS building block. Without classification, all packets are treated the same.   The table lists the criteria of classification                                  Marking  Marking is the QOS feature component that colours a packet so it can be identified and distinguished from other packets in QOS treatment. Commonly used markers: link-layer: COS (ISL, 802.1q), MPLS EXP bits,...

OSPF default routing

  OSPF Default Route Configuring OSPF Default route is not a big problem. We have couple of options when we want to OSPF default route. Here is an example R1(config)#router ospf 1  R1(config-router)#default-information originate ?   always       Always advertise default route   metric       OSPF default metric   metric-type  OSPF metric type for default routes   route-map    Route-map reference   <cr> We can change numbers of things for example metric or metric type but most of the people forget about the most important thing is the always keyword.  If we add the always command this feature advertises the default route even if we do not have in our routing table. It will look like that route is installed in routing table.   When we use the default information originate we can advertise a default route in OSPF. But OSPF won’t...

BGP Local preference configuration

BGP Local preference (Local_Pref) Path attribute gives the router inside a single autonomous system a value that they can set per-route and advertise to all iBGP routers inside the autonomous system, so that all routers in the autonomous system agree about which routers is the best exit point for packet destined for that prefix. Local preference (Local_Pref) is the second BGP attribute. We can use the local preference to choose the outbound external BGP path. Local preference is sent to all internal BGP (iBGP) routers in our autonomous system. Local preference (Local_Pref) is not exchanged between external BGP routers. It’s a well-known and discretionary BGP attribute. Default value is 100. The path with the highest local preference is desirable  Topology:- TASK: To reach 50.1.1.1, 15.0.0.1 network router 2 and router 3 using 3.1.1.2 path ( AS 65144) because it has less numbers of au...