ตอนแรก : Loop ฝันร้ายในความเป็นจริง (ภาค ทำความเข้าใจเกี่ยวกับ loop) (คลิก)
ตอนที่สอง : Loop ฝันร้ายในความเป็นจริง (ภาค ทำไมยังคงมี loop) (คลิก)
อย่างที่เราทราบกันไปแล้วว่าการป้องกัน loop ในระดับ Layer2 นั้น ทั่วไปแล้วเป็นหน้าที่ของ Spanning tree Protocol ถึงแม้ว่า network ที่ดีจะออกแบบมาไม่ให้มี L2 loop เลยก็ตามแต่ในความเป็นจริงก็อาจจะยังมี loop ที่เกิดจากการนำอุปกรณ์ภายนอกมาต่อพ่วงโดยไม่ได้รับอนุญาตอยู่ดี
ในบทความนี้เราจะ focus ไปที่ปัญหาเหล่านั้นและความเข้าใจผิดเกี่ยวกับ feature บางอย่างที่ีมีใช้งานอยู่
โดย base บนพื้นฐานของอุปกรณ์ยี่ห้อ Cisco เท่านั้น
โดยทั่วไปแล้ว spanning tree ทำงานโดยอ้างอิงจาก BPDU เป็นหลัก ดังนั้นตามมาตรฐาน protocol มันจะต้องคอย monitor เมื่อมีอุปกรณ์ใหม่ๆเสียบเข้ามา และพยายามเรียนรู้ว่าอุปกรณ์นั้นๆเป็น Switch หรือไม่ทำให้เกิด state ต่างๆดังนี้

ถ้าภาพบนเล็กไป คลิกดูใหญ่ๆได้ที่นี่ (คลิก)
จะเห็นได้ว่าเมื่อเอาอุปกรณ์ต่างๆมาเสียบบน Switch มันจะต้องเข้าสู่กระบวนการ listening และ learning ก่อนเป็นระยะเวลาราวๆ 30 วินาที จึงจะสามารถใช้งาน (สถานะหน้า port ของ Switch จะเป็นสีส้มกระพริบ เมื่อใช้งานได้จะกลายเป็นสีเขียว)โดยไม่มีข้อยกเว้น แม้ว่าเราจะเอาอุปกรณ์คอมพิวเตอร์ซึ่งไม่สามารถสร้าง loop ได้มาเสียบก็เถอะ ดังนั้นจึงเกิด feature พิเศษอันนึงขึ้นมาเพื่ออำนวยความสะดวกคือ….
Spanning-tree portfast
ซึ่งเจ้า portfast นี้ทำหน้าที่ง่ายๆคือทำให้ port นั้นข้ามสถานะ listening และ learning ไปหา forwarding ทันทีทำให้สามารถใช้งาน port นั้นได้ทันที โดยเรานิยมใช้งาน feature นี้บน port ที่เรามั่นใจว่าเอาไว้ต่อกับคอมพิวเตอร์เท่านั้น

และนี่เป็นอีกความสามารถที่มักเป็นแพะว่าเป็นต้นเหตุของการเกิด loop
ความเชื่อที่ผิด : การใช้งาน spanning-tree portfast คือการ disable spanning-tree protocol บน port นั้นๆ
ที่จริงแล้ว : portfast แค่ข้าม learning และ listening state แต่ spanning-tree protocol ยังคงทำงานอยู่ซึ่งถ้าเกิด loop จริงมันจะกลายเป็น block port อยู่ดี สรุป ไม่เกิด loop จ้าาาา (จริงๆแล้วอาจจะ loop นะแต่ loop อยู่แปบนึงก็หายไม่ถาวรจน network ล่ม)
อ่าว แล้วอะไรที่ทำให้เกิด loop ละ?
ถ้าจะมี feature อะไรซักอย่างที่ทำให้เกิด loop ได้ที่สุดก็น่าจะเป็น
BPDU Filter
แนะนำเลยว่าถ้าเราไม่ใช่ service provider โอกาสได้ใช้น่าจะน้อยมาก (เอ๊ะหรือถ้ามีเคสอื่นๆที่มีคนใช้ก็มาแชร์กันบ้างนะ) หน้าที่ของ BPDU Filter คือมันจะไม่รับและไม่ส่ง BPDU ออกไปทาง port นั้น
ซึ่งแน่นอนว่าการไม่รับและไม่ส่ง BPDU นี่แหละที่เปรียบเสมือนการปิดการทำงานของ spanning-tree protocol และทำให้เมื่อต่อกับ switch ตัวอื่นแล้วตัวอื่นๆจะไม่รู้ว่ามันคือ Switch และอาจเกิด loop ได้
แล้วไอ้ feature นี้มันมีไว้ทำอะไรละ?
หลักๆแล้วเราเอาไว้หลอกว่าไอ้อุปกรณ์ตัวนี้มันไม่ใช่ switch นะ ในกรณี provider คือเราต่อกับลูกค้าแล้วไม่อยากให้ BPDU เข้าไปกวนในระบบลูกค้าเลยปิดมันซะเลย
มีอะไรน่ารู้จักอีกไหม?
จริงๆมีอีก feature นะที่มักจะใช้ควบคู่ไปกับ Spanning-tree portfast
BPDU Guard
อันนี้ง่ายมากเลยคือถ้ามี BPDU เข้ามาทาง port นั้นจะ block port นั้นทิ้งซะ (โดย default)
วัตถุประสงค์ของมันก็ชัดเจนมากคือเราไม่อยากให้เอา Switch เข้ามาเสียบที่ port นี้นะป้องกันอุปกรณ์ Switch แปลกปลอมที่จะเชื่อมต่อเข้ามาในระบบได้ ช่วยรักษาความปลอดภัยในระบบได้เยอะเหมือนกัน
ส่วนใหญ่ทั้ง spanning-tree portfast และ ฺBPDU guard นั้นจะเปิดใช้งานบน access port ที่เอาไว้ต่อกับคอมพิวเตอร์ทั่วๆไป
มีอะไรอีกปล่อยออกมาให้หมด จะได้ไม่ต้องมีตอนหน้าอีก
อืม…. จริงๆตัวนี้ถ้าลงรายละเอียดจะค่อนข้างยาว แต่เอาแบบลวกๆแล้วกันนะ
Etherchannel
บางยี่ห้อก็อาจเรียกว่า port aggregation หรือบางที่อาจะเรียก port bounding , port teaming, ฯลฯ เอาเป็นว่ามันทำหน้าที่เดียวกันนั่นแหละคือรวมเอาหลายๆ physical port มาเป็น logical port อันเดียว โดยจะเหมือนได้ port เดียวที่มี Bandwidth เพิ่มขึ้น, เมื่อบาง port down ไปจะยังสามารถใช้งานได้อยู่เหมือนไม่มีอะไรเกิดขึ้น (ยกเว้น bandwidth ลดลง) สามารถใช้งานข้ามยี่ห้อได้ (แต่บางทีอาจต้องมีทริคนิดหน่อย)
ฟังดูเผินๆเหมือนไม่มีอะไรเกี่ยวข้องกับ spanning-tree protocol เลยทำไมเอามาลงที่นี่ละ?
จริงๆแล้วนี่คือ feature ที่เกี่ยวกับ Spanning-tree protocol อย่างมาก
เพราะ Spanning-tree protocol จะไม่สนใจ physical port ที่รวมแล้วโดยจะคำนวณ spanning-tree จาก logical port เท่านั้น


ซึ่งในที่นี้ตรงกับ concept พื้นฐานที่เป็นหัวใจเลยว่า
“เราควรจะออกแบบให้ไม่มี loop ในระบบ”
ตัดจบกันง่ายๆแบบนี้แหละ…. สูงสุดกลับสู่สามัญ
อยากรู้อะไรเกี่ยวกับ Spanning-tree ก็ทิ้งคำถามไว้ได้นะครับ series นี้ถือว่าจบแล้ว…. เจอกันใหม่กับเรื่องใหม่ๆบ้าง