Supakorn Visutthicho

การตั้งค่า Storm-Control บน Cisco Switch

Storm-Control เป็น features นึงบน Cisco Switch ที่ใช้สำหรับป้องกันจำนวน traffic ทั้งแบบ broadcast, multicast หรือ unicast ที่มากเกินไป อย่างเช่น การเกิด Layer 2 Loop ในระบบ จากการตั้งค่าผิดพลาด หรือ ระบบทำงานผิดพลาด ก็ทำให้เกิด broadcast traffic จำนวนมาก เราเรียกว่า broadcast storm (พายุ broadcast) ซึ่งส่งผลให้ระบบใช้งานได้ช้าลง หรือ ใช้งานไม่ได้เลย

การป้องกันเหตุการณ์ลักษณะแบบนี้ คือการใช้ Storm-Control เพื่อจำกัดจำนวน traffic บน interface ไม่ให้มากจนเกินไป โดยเราจะตั้งค่า threshold สำหรับใช้ในการ limit จำนวน traffic ว่าไม่ให้เกินจำนวนเท่าไหร่ และ ถ้าเกินให้มี action อย่างไร

โดนหลักการทำงานก็คือ ถ้ามี traffic ขาเข้า (incoming traffic) ที่เข้ามาบน interface เกินจำนวนค่า threshold ที่ตั้งไว้ภายใน 1 วินาที (polling interval) แล้ว traffic นั้นจะถูก block เอาไว้จนกว่า traffic ขาเข้า (incoming traffic) ที่เข้ามาบน interface นั้นจะต่ำกว่าค่า threshold ที่ตั้งเอาไว้ ซึ่ง threshold ที่เรากำหนดจะมี 2 ค่า คือ
1. Rising threshold ถ้า traffic เกินจากค่านี้จะถูก drop
2. Falling threshold ถ้า traffic ถูกลดลงมาต่ำกว่าค่านี้ถึงจะส่ง traffic ต่อได้
ลองดูจากรูปด้านบน
  • วินาทีที่ 0 (T0) มี traffic ขาเข้า ไม่เกิน Rising threshold ก็สามารถส่ง traffic ได้ตามปกติ
  • วินาทีที่ 1 (T1) มี traffic ขาเข้า เกิน Rising threshold ที่ตั้งเอาไว้ traffic จะถูก dropในวินาทีถัดไป
  • วินาทีที่ 2 (T2) traffic จะถูก drop ลงไป และเมื่อ traffic ลดลงมาจนต่ำกว่าค่า Rising threshold แล้ว traffic ยังคงถูก drop อยู่ จนกว่าจะลดลงมาต่ำกว่า falling threshold
  • วินาทีที่ 3 (T3) traffic ยังคงถูก drop ต่อเนื่องมาจาก T2 แต่ จำนวน traffic นั้นลดลงต่ำกว่าค่า falling threshold แล้ว ในวินาทีถัดไปอุปกรณ์จะปลด block และส่ง traffic ต่อได้
  • วินาทีที่ 4 (T4) traffic ตำ่กว่าค่า Falling threshold จึงสามารถกลับมาส่งได้ปกติ

Empty space, drag to resize

คำสั่งที่ใช้ตั้งค่า Storm-Control

เข้าไปที่ interface เพื่อใช้คำสั่ง storm-control จะมีให้ตั้งค่าสำหรับ broadcast, multicast หรือ unicast และ action
Switch(config)#interface gi0/1
Switch(config-if)#storm-control ?
  action     Action to take for storm-control
  broadcast  Broadcast address storm control
  multicast  Multicast address storm control
  unicast    Unicast address storm control

Option ในการตั้งค่า
1. ตั้งค่า rising threshold เป็น percent
2. ตั้งค่าเป็นจำนวน bps หรือ pps

Switch(config)#interface gi0/1
Switch(config-if)#storm-control broadcast level ?
  <0.00 - 100.00>  Enter rising threshold
  bps              Enter suppression level in bits per second
  pps              Enter suppression level in packets per second
Empty space, drag to resize

ตัวอย่างการตั้งค่าใช้งาน

แบบที่ 1. เมื่อมี broadcast traffic เกิน 30% จาก bandwidth บน interface ให้ action ตามที่กำหนด (โดย default จะ drop ถ้ายังไม่กำหนด action)
Switch(config-if)#storm-control broadcast level 30

แบบที่ 2. เมื่อมี multicast traffic เกิน 10Mbps ให้ action ตามที่กำหนด (โดย default จะ drop ถ้ายังไม่กำหนด action) และเมื่อ traffic ต่ำกว่า 10Mbps ก็จะสามารถกลับมาส่งได้ตามปกติ
Switch(config-if)#storm-control multicast level bps 10m
Note : กรณีนี้ เมื่อใส่ 10m เป็นค่า rising threshold อย่างเดียว โดยไม่ได้กำหนดค่า falling threshold มันจะใช้ค่าเดียวกัน

แบบที่ 3. เมื่อมี unknown unicast traffic จำนวน packet per sec (pps) เกิน 30Mpps ให้ action ตามที่กำหนด (โดย default จะ drop ถ้ายังไม่กำหนด action) และเมื่อ traffic ต่ำกว่า 20Mpps ก็จะสามารถกลับมาส่งได้ตามปกติ
Switch(config-if)#storm-control unicast level pps 30m 20m

ถัดมาคือการตั้งค่า storm-control action ซึ่งเราสามารถตั้งค่า action ได้ 2 แบบ
1. shutdown (ค่า default) ทำการ shutdown interface เมื่อ traffic เกินกว่า rising threshold
2. trap ทำการ drop traffic ส่ง trap ผ่าน SNMP เมื่อ traffic เกินกว่า rising threshold (block traffic แต่ไม่ shutdown interface)

Switch(config-if)#storm-control action ?
  shutdown  Shutdown this interface if a storm occurs
  trap      Send SNMP trap if a storm occurs
Empty space, drag to resize

การตรวจสอบการทำงาน

ใช้คำสั่ง "show storm-control" เพื่อตรวจสอบการตั้งค่า Upper, Lower ส่วน Current คือ traffic ที่ใช้งานอยู่ ณ ปัจจุบัน และ state ว่ายัง forwarding อยู่หรือ blocking 
Switch#show storm-control
Interface Filter State  Upper       Lower       Current
--------- ------------- ----------- ----------- ----------
Gi0/1     Forwarding    30.00%      30.00%      0.00%
Note : คำสั่ง "show storm-control" จะแสดงเฉพาะ broadcast traffic

ถ้าต้องการแสดง multicast หรือ unicast ต้องใช้คำสั่ง "show storm-control multicast" หรือ "show storm-control unicast"

ตัวอย่างผลที่แสดงว่า traffic ถูก block
Switch# show storm-control
Interface Filter State  Upper       Lower       Current
--------- ------------- ----------- ----------- ----------
Gi0/1     Blocking      1m bps      500k bps    2.08m bps

Log message ที่จะแสดงขึ้นมาบน Switch เมื่อตรวจพบ storm หรือ traffic ที่เกิน
%STORM_CONTROL-3-FILTERED: A Broadcast storm detected on Fa0/5. A packet filter action
has been applied on the interface.

แถมสุดท้ายครับ บางคนถามว่า แล้วเราต้องกำหนดพวกค่า threshold, bps หรือ pps เท่าไหร่ดีล่ะ คำตอบก็คือ มันไม่มีค่า best practice ที่สามารถใช้ได้กับทุกๆไซต์ หรือ ทุกสถานการณ์ครับ เราต้องลอง monitor ดูว่า จำนวน traffic ที่เราใช้งานอยู่ในระบบเราปัจจุบันนั้น มันใช้อยู่ปกติเท่าไหร่ เราก็สามารถตั้งค่าให้เกิกว่านั้นซัก 10-20% ได้ครับ

ผมยกตัวอย่างง่ายๆแบบนี้ สมมุติว่า Site 1 เราตั้งค่า multicast ไว้ที่ 10% ไม่ได้มีการใช้งาน multicast เยอะ แต่พอเราเอาค่านี้ไปใช้กับ Site 2 ซึ่งมีการใช้งานระบบ multicast traffic เยอะกว่า 10% คราวนี้มันก็จะถูก block ไปทันที พอเห็นภาพไหมครับ

ก็หวังว่าบทมความนี้จะเป็นประโยชน์กับทุกๆท่านนะครับ
Created with