Old CCIE Myths: Storm Control

VN:F [1.9.1_1087]
Rating: 4.2/5 (6 votes cast)
By Marko Milivojevic on March 15th, 2010

Storm control is a very useful feature on Catalyst switches. It allows us to control how much unicast, multicast or broadcast traffic is received on a certain port and if this rate becomes “unacceptable”, act on it. By act, I mean that we can either block the offending traffic or completely disable the port. Pretty useful to prevent broadcast storms, runaway multicast source, or a naughty workstation that has no business transmitting that much unicast.

However, there are certain aspects of storm control that are not widely known and some that, for this or other reason, are completely wrongly understood in CCIE community. I will mention the less understood bit first and then get to the business of dispelling with one myth.

Storm control in its functionality is very similar to traffic policing. However, unlike traffic policing that can police traffic based on several criteria, like IP address, MAC address, source or destination ports, etc., storm control can act only based on traffic type. This, we all know.

What is less widely known is that storm control, unlike traffic policing, has a fixed interval during which it performs its limiting function. This interval is exactly one second. When configured not to completely disable the port, storm control will measure and completely block the inbound traffic on these fixed intervals, if it exceeds the specified threshold. For further reading, take a look at the Catalyst 3560 configuration guide, section titled Understanding Storm Control.

The Myth

The widely accepted truth is that, when it comes to storm control “broadcast traffic is a subset of multicast traffic”… or was it the other way round? It doesn’t really matter, the reason here lies in the format of the MAC addresses. We all know that broadcast MAC address is “all ones”, or FFFF.FFFF.FFFF in hex. We also know that all multicast MAC addresses begin with 0100.5E. And here’s the catch. See that “1″ – that one comes from so-called I/G bit in the address, which is used to signify number of recipients. If it’s 0, then it’s one host. If it’s one, then it’s “a group”. Now, if we look at the broadcast address above – it also has “1″ in this field – of course it does, it has 1 in every bit. The myth then goes on to tell us that because of this fact, switches are “unable to differentiate between broadcast and multicast” traffic.

Dispelling the Myth

Let’s configure a simple testbed consisting of one router and one switch. I will use R1 and Cat2 in one of the ProctorLabs racks. Let’s create a very basic configuration on R1 and Cat2.

R1(config)#interface FastEthernet0/1
R1(config-if)#ip address 10.0.0.1 255.255.255.0
R1(config-if)#no cdp enable
R1(config-if)#no shutdown

Cat2(config)#interface FastEthernet0/1
Cat2(config-if)#switchport access vlan 1
Cat2(config-if)#switchport mode access
Cat2(config-if)#switchport nonegotiate
Cat2(config-if)#spanning-tree portfast
Cat2(config-if)#spanning-tree bpdufilter enable
Cat2(config-if)#no cdp enable

The reason for disabling CDP is that I don’t want any multicast traffic on the port whatsoever. Now, let’s see if storm control is configured.

Cat2#show storm-control FastEthernet0/1 unicast
Interface  Filter State   Upper        Lower        Current
---------  -------------  -----------  -----------  ----------
Cat2#show storm-control FastEthernet0/1 multicast
Interface  Filter State   Upper        Lower        Current
---------  -------------  -----------  -----------  ----------
Cat2#show storm-control FastEthernet0/1 broadcast
Interface  Filter State   Upper        Lower        Current
---------  -------------  -----------  -----------  ----------

Of course it isn’t. Next, let’s configure very low-threshold storm control for broadcast traffic and generate some of it from R1 and see what happens.

Cat2(config)#interface FastEthernet0/1
Cat2(config-if)#storm-control action trap
Cat2(config-if)#storm-control broadcast level 0.01

R1#ping 10.0.0.255 size 15000 repeat 2500 timeout 0
Type escape sequence to abort.
Sending 2500, 15000-byte ICMP Echos to 10.0.0.255, timeout is 0 seconds:
......................................................................
[... a lot of pings ...]

Cat2#show storm-control FastEthernet0/1 broadcast
Interface  Filter State   Upper        Lower        Current
---------  -------------  -----------  -----------  ----------
Fa0/1      Blocking          0.01%        0.01%       17.84%

We can clearly see that storm control is blocking our broadcasts. That’s what we expected. But, what happens if we generate a lot of multicast traffic? Let’s try, but before we do that, we need to configure few more things on R1.

R1(config)#ip multicast-routing
R1(config)#interface FastEthernet0/1
R1(config-if)#ip pim dense-mode

Cat2(config)#interface FastEthernet0/1
Cat2(config-if)#storm-control multicast level 0.01

Now, let’s verify that storm control is configured, but not actually blocking anything.

Cat2#show storm-control broadcast
Interface  Filter State   Upper        Lower        Current
---------  -------------  -----------  -----------  ----------
Fa0/1      Forwarding        0.01%        0.01%        0.00%
Cat2#show storm-control multicast
Interface  Filter State   Upper        Lower        Current
---------  -------------  -----------  -----------  ----------
Fa0/1      Forwarding        0.01%        0.01%        0.00%

Very good. Now, let’s generate some multicast traffic and see what happens to our storm control!

R1#ping 239.0.0.255 size 15000 repeat 2500 timeout 0

Type escape sequence to abort.
Sending 2500, 15000-byte ICMP Echos to 239.0.0.255, timeout is 0 seconds:
......................................................................
[... a lot of pings ...]

Cat2#show storm-control multicast
Interface  Filter State   Upper        Lower        Current
---------  -------------  -----------  -----------  ----------
Fa0/1      Blocking          0.01%        0.01%       11.08%
Cat2#show storm-control broadcast
Interface  Filter State   Upper        Lower        Current
---------  -------------  -----------  -----------  ----------
Fa0/1      Forwarding        0.01%        0.01%        0.00%

Clearly, multicast is being blocked, but not the broadcast! What happens now if we generate a lot of broadcast?

R1#ping 10.0.0.255 size 15000 repeat 2500 timeout 0 

Type escape sequence to abort.
Sending 2500, 15000-byte ICMP Echos to 10.0.0.255, timeout is 0 seconds:
......................................................................
[... a lot of pings ...]

Cat2#show storm-control broadcast
Interface  Filter State   Upper        Lower        Current
---------  -------------  -----------  -----------  ----------
Fa0/1      Blocking          0.01%        0.01%       16.98%
Cat2#show storm-control multicast
Interface  Filter State   Upper        Lower        Current
---------  -------------  -----------  -----------  ----------
Fa0/1      Forwarding        0.01%        0.01%        0.00%

Are We Testing Properly?

What we know at this point is that switch tells us that it’s not blocking multicast when we send broadcast storm and vice versa. What we don’t know is if the traffic is actually reaching anywhere… and how much of it. Luckily, we have more routers to help us here. Let’s introduce R2 to our topology and use the interface on the same switch. Brief config to get things rolling.

Cat2(config)#interface FastEthernet0/2
Cat2(config-if)#switchport access vlan 1
Cat2(config-if)#switchport mode access
Cat2(config-if)#switchport nonegotiate
Cat2(config-if)#spanning-tree bpdufilter enable
Cat2(config-if)#spanning-tree portfast
Cat2(config-if)#no cdp enable
Cat2(config-if)#no keepalive

R2(config)#interface GigabitEthernet0/1
R2(config-if)#ip address 10.0.0.2 255.255.255.0
R2(config-if)#load-interval 30
R2(config-if)#no cdp enable
R2(config-if)#no keepalive
R2(config-if)#no shutdown
R2(config-if)#^C
R2#ping 10.0.0.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.1, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/1/1 ms
R2#clear counters

Note that I used “no keepalive” command. This is because I don’t want interface counters to show any traffic except the one we are going to generate. We will also have interface counters show 30 second statistics. We have connectivity with R1, so let’s test. First, we ping broadcast and see what happens. Note, we need to ensure that ping lasts for than one second! 2500 packets should be enough.

R1#ping 10.0.0.255 size 15000 repeat 2500 timeout 0
Type escape sequence to abort.
Sending 2500, 15000-byte ICMP Echos to 10.0.0.255, timeout is 0 seconds:
......................................................................
[... a lot of pings ...]

R2#show interfaces GigabitEthernet0/1
GigabitEthernet0/1 is up, line protocol is up
  Hardware is BCM1125 Internal MAC, address is 0011.9369.1481 (bia 0011.9369.1481)
  Internet address is 10.0.0.2/24
  MTU 1500 bytes, BW 100000 Kbit/sec, DLY 100 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive not set
  Full-duplex, 100Mb/s, media type is RJ45
  output flow-control is XON, input flow-control is XON
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input 00:00:11, output 00:00:11, output hang never
  Last clearing of "show interface" counters 00:00:21
  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 212000 bits/sec, 16 packets/sec
  30 second output rate 212000 bits/sec, 16 packets/sec
     754 packets input, 1141556 bytes, 0 no buffer
     Received 754 broadcasts, 0 runts, 0 giants, 0 throttles
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
     0 watchdog, 2 multicast, 0 pause input
     0 input packets with dribble condition detected
     754 packets output, 1141556 bytes, 0 underruns
     0 output errors, 0 collisions, 0 interface resets
     0 unknown protocol drops
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier, 0 pause output
     0 output buffer failures, 0 output buffers swapped out
R2#clear counters

We can obviously see that the traffic was blocked. What we don’t know is which storm control statement did it. Multicast or broadcast. Let’s remove multicast one and try again.

Cat2(config)#interface FastEthernet0/1
Cat2(config-if)#no storm-control multicast level 0.01

R1#ping 10.0.0.255 size 15000 repeat 2500 timeout 0
Type escape sequence to abort.
Sending 2500, 15000-byte ICMP Echos to 10.0.0.255, timeout is 0 seconds:
......................................................................
[... a lot of pings ...]

R2#show interfaces GigabitEthernet0/1
GigabitEthernet0/1 is up, line protocol is up
  Hardware is BCM1125 Internal MAC, address is 0011.9369.1481 (bia 0011.9369.1481)
  Internet address is 10.0.0.2/24
  MTU 1500 bytes, BW 100000 Kbit/sec, DLY 100 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive not set
  Full-duplex, 100Mb/s, media type is RJ45
  output flow-control is XON, input flow-control is XON
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input 00:00:09, output 00:00:09, output hang never
  Last clearing of "show interface" counters 00:02:11
  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 231000 bits/sec, 19 packets/sec
  30 second output rate 231000 bits/sec, 19 packets/sec
     687 packets input, 1040118 bytes, 0 no buffer
     Received 687 broadcasts, 0 runts, 0 giants, 0 throttles
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
     0 watchdog, 6 multicast, 0 pause input
     0 input packets with dribble condition detected
     687 packets output, 1040118 bytes, 0 underruns
     0 output errors, 0 collisions, 0 interface resets
     0 unknown protocol drops
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier, 0 pause output
     0 output buffer failures, 0 output buffers swapped out
R2#clear counters

Very similar result. Another test, let’s return multicast storm control, remove broadcast one and re-test broadcast ping.

Cat2(config)#interface FastEthernet0/1
Cat2(config-if)#no storm-control broadcast level 0.01
Cat2(config-if)#storm-control multicast level 0.01

R1#ping 10.0.0.255 size 15000 repeat 2500 timeout 0
Type escape sequence to abort.
Sending 2500, 15000-byte ICMP Echos to 10.0.0.255, timeout is 0 seconds:
......................................................................
[... a lot of pings ...]

R2#show interfaces GigabitEthernet0/1
GigabitEthernet0/1 is up, line protocol is up
  Hardware is BCM1125 Internal MAC, address is 0011.9369.1481 (bia 0011.9369.1481)
  Internet address is 10.0.0.2/24
  MTU 1500 bytes, BW 100000 Kbit/sec, DLY 100 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive not set
  Full-duplex, 100Mb/s, media type is RJ45
  output flow-control is XON, input flow-control is XON
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input 00:00:15, output 00:00:15, output hang never
  Last clearing of "show interface" counters 00:01:55
  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 657000 bits/sec, 54 packets/sec
  30 second output rate 657000 bits/sec, 54 packets/sec
     2500 packets input, 3785000 bytes, 0 no buffer
     Received 2500 broadcasts, 0 runts, 0 giants, 0 throttles
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
     0 watchdog, 5 multicast, 0 pause input
     0 input packets with dribble condition detected
     2500 packets output, 3785000 bytes, 0 underruns
     0 output errors, 0 collisions, 0 interface resets
     0 unknown protocol drops
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier, 0 pause output
     0 output buffer failures, 0 output buffers swapped out
R2#clear counters

OK, how about multicast ping? Let’s try right away and see what happens. Remember, now we have multicast storm control configured. Before we do that, we need to ensure that multicast traffic is flooded by our switch.

Cat2(config)#no ip igmp snooping

R1#ping 239.0.0.255 size 15000 repeat 2500 timeout 0
Type escape sequence to abort.
Sending 2500, 15000-byte ICMP Echos to 10.0.0.255, timeout is 0 seconds:
......................................................................
[... a lot of pings ...]

R2#show interfaces GigabitEthernet0/1
GigabitEthernet0/1 is up, line protocol is up
  Hardware is BCM1125 Internal MAC, address is 0011.9369.1481 (bia 0011.9369.1481)
  Internet address is 10.0.0.2/24
  MTU 1500 bytes, BW 100000 Kbit/sec, DLY 100 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive not set
  Full-duplex, 100Mb/s, media type is RJ45
  output flow-control is XON, input flow-control is XON
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input 00:12:45, output 00:10:12, output hang never
  Last clearing of "show interface" counters 00:00:16
  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
  30 second output rate 0 bits/sec, 0 packets/sec
     0 packets input, 0 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 watchdog, 406 multicast, 0 pause input
     0 input packets with dribble condition detected
     0 packets output, 0 bytes, 0 underruns
     0 output errors, 0 collisions, 0 interface resets
     0 unknown protocol drops
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier, 0 pause output
     0 output buffer failures, 0 output buffers swapped out
R2#clear counters

We can see that storm control works, as expected. Let’s apply broadcast storm control and remove multicast one, before we end this test.

Cat2(config)#interface FastEthernet0/1
Cat2(config-if)#no storm-control multicast level 0.01
Cat2(config-if)#storm-control broadcast level 0.0

R1#ping 239.0.0.255 size 15000 repeat 2500 timeout 0
Type escape sequence to abort.
Sending 2500, 15000-byte ICMP Echos to 10.0.0.255, timeout is 0 seconds:
......................................................................
[... a lot of pings ...]

R2#show interfaces GigabitEthernet0/1
GigabitEthernet0/1 is up, line protocol is up
  Hardware is BCM1125 Internal MAC, address is 0011.9369.1481 (bia 0011.9369.1481)
  Internet address is 10.0.0.2/24
  MTU 1500 bytes, BW 100000 Kbit/sec, DLY 100 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive not set
  Full-duplex, 100Mb/s, media type is RJ45
  output flow-control is XON, input flow-control is XON
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input 00:15:41, output 00:01:54, output hang never
  Last clearing of "show interface" counters 00:00:19
  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
  30 second output rate 0 bits/sec, 0 packets/sec
     0 packets input, 0 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 watchdog, 2502 multicast, 0 pause input
     0 input packets with dribble condition detected
     0 packets output, 0 bytes, 0 underruns
     0 output errors, 0 collisions, 0 interface resets
     0 unknown protocol drops
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier, 0 pause output
     0 output buffer failures, 0 output buffers swapped out

Counter-Arguments

The test above doesn’t test one specific scenario in which we have the mix of broadcast and multicast traffic coming into the port with the storm-control configured. According to some documentation (Catalyst 6500 configuration guide), this particular scenario can have issues if both multicast and broadcast storm control are configured. However, the same warning is not present in the documentation for Catalyst 3560 switches, leading me to believe that these switches do not suffer from the effect described in that document.

Conclusion

While this would require more thorough testing, from this initial test, all I can say is that myth has been dealt a heavy blow. I don’t see that broadcasts are blocked with multicasts, or the other way round. What do you think – is this myth busted? :-)

I would like to thank my fellow IPexpert instructors, Tyson Scott and Brandon Carroll, who contributed greatly to this research.


Marko Milivojevic – CCIE #18427
Senior Technical Instructor – IPexpert
Join our Online Study List

Old CCIE Myths: Storm Control, 4.2 out of 5 based on 6 ratings
Share and Enjoy:
  • RSS
  • Twitter
  • Facebook
  • Google Bookmarks
  • Digg
  • Print
  • Technorati
  • Slashdot
  • LinkedIn
  • del.icio.us
  • Reddit
  • Sphinn
  • Mixx
  • Blogplay
  • Netvibes
  • NewsVine
  • Live
  • Ping.fm
  • MySpace
  • Yahoo! Bookmarks
  • Yahoo! Buzz

8 Responses to “Old CCIE Myths: Storm Control”

  1. Bojan Zivancevic Bojan Zivancevic says:

    I would like to have one thing cleared regarding the way the switch reacts to so called “control traffic.” I thought this term is related also to routing protocol update, hello packets etc. So, like “control plane traffic”… But, in the Cisco Doc (the link you posted in your text) thereis a NOTE:

    “When the storm control threshold for multicast traffic is reached, all multicast traffic except control traffic, such as bridge protocol data unit (BDPU) and Cisco Discovery Protocol (CDP) frames, are blocked. However, the switch does not differentiate between routing updates, such as OSPF, and regular multicast data traffic, so both types of traffic are blocked.”

    Marko, can you explain exactly what is the “control traffic”? What exactly falls into this category?

    thanks for the great article

    VA:F [1.9.1_1087]
    Rating: 0.0/5 (0 votes cast)
  2. Deepak Arora Deepak Arora says:

    Hi Marko,

    Can you please share what will be the necessary steps in order to find that info?

    I mean say you want to implement STORM CONTROL inside your company catalyst environment. So how you will proceed to gather required info in order to implement this.

    can you please suggest tools and steps etc as I am curious to give it a try in my production network but without causing and downtime :)

    VA:F [1.9.1_1087]
    Rating: 0.0/5 (0 votes cast)
  3. Deepak Arora Deepak Arora says:

    Hi Marko,

    What will be considered as good threshold settings for configuring Storm control in switch environment?

    Say I want to configure this feature inside my catalyst environment in order to protect network from any possible Broadcast storm created by some slammer worm or something.

    Also what will be the recommended scenarios and threshold levels for configuring unicast/multicast based storm control?

    VA:F [1.9.1_1087]
    Rating: 5.0/5 (1 vote cast)
    • As always – it depends. Configuring any kind of QoS (and storm control is a rudimentary QoS tool) rquires careful planning and implementation. You would need to establish a baseline – what constitutes “normal traffic” in your network and what are normal oscillations from this value. Armed with that information, you may proceed to plan the implementation.

      Since all networks are different, there is really no “magic” value.


      Marko Milivojevic – CCIE #18427
      Senior Technical Instructor – IPexpert
      Join our Online Study List

      VN:F [1.9.1_1087]
      Rating: 0.0/5 (0 votes cast)
  4. Paul Stewart Paul Stewart says:

    That is awesome. I had bought the myth, but this seems to be a good test.

    VA:F [1.9.1_1087]
    Rating: 0.0/5 (0 votes cast)
  5. I’m glad you guys liked it. We have many more new posts coming up soon.

    And yes… more mythbusters ;-)


    Marko Milivojevic – CCIE #18427
    Senior Technical Instructor – IPexpert
    Join our Online Study List

    VN:F [1.9.1_1087]
    Rating: 0.0/5 (0 votes cast)
  6. Aco Aco says:

    Great!!!

    VA:F [1.9.1_1087]
    Rating: 0.0/5 (0 votes cast)
  7. Mohamed Gazzaz Mohamed Gazzaz says:

    Thanks Marko for the excellent post.

    VA:F [1.9.1_1087]
    Rating: 0.0/5 (0 votes cast)

Leave a Reply