Loop ฝันร้ายในความเป็นจริง (ภาค feature พิเศษเกี่ยวกับการป้องกัน loop)

Posted by

ตอนแรก : Loop ฝันร้ายในความเป็นจริง (ภาค ทำความเข้าใจเกี่ยวกับ loop) (คลิก)
ตอนที่สอง : Loop ฝันร้ายในความเป็นจริง (ภาค ทำไมยังคงมี loop) (คลิก)


อย่างที่เราทราบกันไปแล้วว่าการป้องกัน loop ในระดับ Layer2 นั้น ทั่วไปแล้วเป็นหน้าที่ของ Spanning tree Protocol ถึงแม้ว่า network ที่ดีจะออกแบบมาไม่ให้มี L2 loop เลยก็ตามแต่ในความเป็นจริงก็อาจจะยังมี loop ที่เกิดจากการนำอุปกรณ์ภายนอกมาต่อพ่วงโดยไม่ได้รับอนุญาตอยู่ดี

ในบทความนี้เราจะ focus ไปที่ปัญหาเหล่านั้นและความเข้าใจผิดเกี่ยวกับ feature บางอย่างที่ีมีใช้งานอยู่

โดย base บนพื้นฐานของอุปกรณ์ยี่ห้อ Cisco เท่านั้น


โดยทั่วไปแล้ว spanning tree ทำงานโดยอ้างอิงจาก BPDU เป็นหลัก ดังนั้นตามมาตรฐาน protocol มันจะต้องคอย monitor เมื่อมีอุปกรณ์ใหม่ๆเสียบเข้ามา และพยายามเรียนรู้ว่าอุปกรณ์นั้นๆเป็น Switch หรือไม่ทำให้เกิด state ต่างๆดังนี้

Capture
แผนภาพแสดงการตัดสินใจของ spanning tree port state

ถ้าภาพบนเล็กไป คลิกดูใหญ่ๆได้ที่นี่ (คลิก)

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

Spanning-tree portfast 

ซึ่งเจ้า portfast นี้ทำหน้าที่ง่ายๆคือทำให้ port นั้นข้ามสถานะ listening และ learning ไปหา forwarding ทันทีทำให้สามารถใช้งาน port นั้นได้ทันที โดยเรานิยมใช้งาน feature นี้บน port ที่เรามั่นใจว่าเอาไว้ต่อกับคอมพิวเตอร์เท่านั้น

Capture
Cisco ถึงกับขึ้นคำเตือนตอนเรา configure ใช้งาน portfast

และนี่เป็นอีกความสามารถที่มักเป็นแพะว่าเป็นต้นเหตุของการเกิด 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 เท่านั้น

Capture
แบบนี้ spanning-tree มองว่ามี loop ต้อง block
Capture
พอรวมแล้วมันจะมองว่าเป็น link เดียวไม่มี loop งั้นไม่ต้อง block เลยได้ใช้เต็มที่ทุก link

ซึ่งในที่นี้ตรงกับ concept พื้นฐานที่เป็นหัวใจเลยว่า

“เราควรจะออกแบบให้ไม่มี loop ในระบบ”

ตัดจบกันง่ายๆแบบนี้แหละ…. สูงสุดกลับสู่สามัญ

อยากรู้อะไรเกี่ยวกับ Spanning-tree ก็ทิ้งคำถามไว้ได้นะครับ series นี้ถือว่าจบแล้ว…. เจอกันใหม่กับเรื่องใหม่ๆบ้าง

 

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  เปลี่ยนแปลง )

Google photo

You are commenting using your Google account. Log Out /  เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out /  เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out /  เปลี่ยนแปลง )

Connecting to %s