
หลักการในการ Configure VLAN บน Switch แบบปกติที่เพื่อนๆทุกคนเข้าใจคือ Uplink Port ต้องเป็น Trunk (Tagged VLAN) )เพื่อ Carry หลายๆ VLAN และ Downlink Port ไปยัง อุปกรณ์ EndPoint จะ Configure เป็น Access Port (Untagged VLAN) จะทำให้อุปกรณ์ สามารถใช้งานได้ เมื่อมี Switch หลายๆตัว จะต้อง Config VLAN ให้ตรงกัน ที่ Downlink Port เพื่อให้สามารถสื่อสารกันได้ระหว่างอุปกรณ์ใน VLAN นั้นๆ
แต่จะเป็นอย่างไร ถ้าเรามี Switch 2 ตัว Config Switch ให้ Uplink Port เป็น Access Port รวมถึง Downlink ในแต่ละฝั่ง ยังคงเป็นคนละ VLAN กันอีก แต่สามารถสื่อสารกันได้ PC ทั้ง 2 ฝั่ง สามารถ Ping กันเจอได้ครับ
เป็นแบบนี้ได้อย่างไร สามารถติดตามได้ในบทความนี้ได้เลยครับ
ก่อนอื่น เรามาแนะนำ Topology กันก่อนคับ
ฝั่งซ้าย จะ Configure เป็น VLAN 10 ทั้งหมด Uplink ที่ Port Gig0/1 ก็เป็น Access VLAN 10 ครับ
ฝั่งขวา จะ Configure เป็น VLAN 20 ทั้งหมด Uplink ที่ Port Gig0/1 ก็เป็น Access VLAN 20ครับ
ผลลัพธ์ของการ Ping จาก PC0 –> PC1
จะเห็นว่า PC0 สามารถ Ping PC1 ได้ครับ ทั้งๆที่ VLAN ไม่ตรงกัน จะมาอธิบายครับว่า ทำไมถึงสามารถ Ping เจอ โดยเราจะใช้คำสั่ง show mac address-table บน Switch เพื่อทำความเข้าใจครับ
Step การเดินทาง จาก PC0–>PC1
1.) PC0 ใช้คำสั่ง Ping บน CLI Ping 10.10.10.2
2.) PC0 ดู Arp Table ตัวเอง ว่ามีการ ARP 10.10.10.2 กับ MAC Address หรือไม่ –> ไม่มี เนื่องจาก Ping ครั้งแรก
3.) PC0 สร้าง Frame ARP Request เพื่อไปถามว่า ใครคือ 10.10.10.2 และ Mac Address คืออะไร โดยมีข้อความ ดังนี้
4.) PC0 ส่ง Frame นี้ ไปยัง Switch 0 ผ่าน Port Fa0/1
4.1) Switch 0 ได้ Learn mac address จาก Port Fa0/1 โดย Frame ที่ Switch ได้รับ เป็น Untagged Frame และมีการ Config Switchport Fa0/1 เป็น access VLAN 10 จึงปรากฏดังภาพ สามารถ Show จาก คำสั่ง show mac address-table ครับ
5.) Switch 0 ได้รับ Frame เมื่อเห็น Dest mac addr เป็น FFFF.FFFF.FFFF จึง Flood ออกทุก Port ที่ไม่ใช่ Port ที่ส่ง Frame เข้ามา ซึ่งนั่นคือ G0/1 –> Switch 1
6.) Frame ถูกส่งไปยัง Switch1 –> Switch 1 อ่าน Frame –> เห็นว่า Dest mac addr เป็น FFFF.FFFF.FFFF –> ทำการ Broadcast ต่อ ไปยัง Port ที่ไม่ใช่ Ingress นั่นคือ Fa0/1
6.1) จาก Frame ที่ได้รับมา เนื่องจากเป็นการส่งจาก Access Port ดังนั้นแล้ว จะไม่มีการ Tagged VLAN หรือก็คือ เป็น Native VLAN ดังนั้น เมื่อ Switch 1 รับ Frame จาก Switch 0 จึงคิดว่า เป็น VLAN 20 เนื่องจากไม่ได้มีการ Tag VLAN ลงบน Frame นี้ เราสามารถ show mac address table เพื่อเช็คได้ว่า mac address ของ Switch 0 เป็น VLAN 20 จริงๆ บน Switch 1
จากภาพ จะเห็นว่า บน Switch1 เมื่อ show mac address table แล้ว จะเห็น Mac Address ของ PC0 (ลูกศรสีเขียว) และ Switch0 (ลูกศรสีฟ้า) Ingress มาจาก Gi0/1 ซึ่งเป็น Port ของ Switch 0 นั่นเอง
7.) Switch 1 แกะ Frame –> Flood ไปทุก Port ยกเว้น Ingress Port (G0/1) –> ส่ง Frame ไปยัง Port Fa0/1
8.) PC1 แกะ Frame –> เห็นว่า กำลังเรียกหาตนเอง จึงสร้าง ARP Reply กลับไปหา PC01 ซึ่งมีเนื้อหาดังนี้
9.) PC1 –> ส่ง ARP Reply กลับไปหา Switch ผ่าน Port Fa0/1 ไปยัง Switch และเก็บ ARP Record ไว้ สามารถเช็คได้จากคำสั่ง arp -a ดังรูป
10.) ARP Reply จาก PC01 ส่งไปหา –> Switch1 –> Switch 1 อ่าน Frame แล้ว ส่งไปยัง 0030.F2B2.E7E0 (PC1) –> ส่งไปยัง Gi0/1 เนื่องจากมี Record อยู่บน mac address table
11.) ARP Reply จาก Switch1 ส่งไปยัง –> Switch 0 –> Switch 0 อ่าน Frame –> เห็นว่าปลายทางเป็น 0030.F2B2.E7E0 (PC1) –> ไปอ่านบน Mac Address Table ของตนเอง –> เจอว่า Map อยู่กับ Port Fa0/1 –> ส่ง ARP Reply ไปหา PC0
11.1) Switch 0 จะ Update mac address table ของตนเอง จากที่ switch 1 ส่ง ARP Reply กลับมา แต่เนื่องจาก มีการ Configure เป็น Access VLAN 10 แล้ว Frame ที่ส่งมานั้น ไม่ได้ Tagged VLAN (เนื่องมาจาก G0/1 ของ Switch 1 ก็ทำเป็น Access Port เหมือนกัน) จึงทำให้ Switch คิดไปว่า ต้องเป็น VLAN 10 แน่ๆเลย จึงทำให้ปรากฏ mac address ของ Switch1 และ PC1 เป็น VLAN 10 ตามรูปปรากฏ
12.) PC0 ARP Table Updated ตามภาพด้านล่าง หลังจากนั้นจะเริ่มทำการส่ง ICMP (Ping) ไป-กลับ ได้ปกติแล้วครับ
บน Switch จะมี Error อยู่ตลอดเวลา เนื่องจาก Untagged VLAN (หรือ Native) บน Port นั้น ทั้ง 2 switch ไม่ตรงกันครับ
สรุปนะครับ เนื่องจากท่อ Uplink (G0/1) ของทั้ง 2 Switch มีการทำเป็น Access Port หรือ Untagged Port ทำให้เมื่อส่ง Frame มา จะไม่มีการ Tag VLAN ดังนั้นแล้ว เมื่อ Frame ส่งผ่าน Uplink ได้ ก็แสดงว่า เป็น Untag –> จะขึ้นอยู่กับฝั่งผู้รับ ว่าได้มีการ Config เป็น access vlan อะไร ใน Port ปลายทางครับ
สังเกตุได้ว่า ถึงแม้ VLAN จะไม่เหมือนกัน แต่ network ID / Subnet เป็น Range เดียวกันครับ
ถ้าไม่ใช้ network ID / Subnet Range เดียวกัน ก็จะไม่สามารถ ส่ง ARP Request <–> ARP Reply ได้ตั้งแต่แรกครับ
ถ้าจะทำท่านี้ได้ vlan บน uplink และ downlink ต้องใช้ vlan เดียวกันครับ เนื่องจาก เมื่อ Frame มาถึง Switch –> ตัว Switch จะเช็คจาก mac address table ว่า vlan เหมือนกันไหม ใน Port ที่รับ Frame มา (G0/1) และ downlink (Fa0/1) ถ้าไม่เหมือนกัน Switch จะไม่ส่งข้อมูลหาอุปกรณ์ปลายทางครับ
อย่างไรก็ตาม ควรจะ Configure เรื่อง VLAN ให้ถูกต้องตาม Best Practice ครับ ควรแยก subnet / vlan ให้ชัดเจน เพื่อความง่ายต่อการจัดการ และความถูกต้องครับผม ขอบคุณครับ