13/10/2026
VXLAN & BGP EVPN EP.6 มาต่อแล้วครับ 😃
Thanaris Field Note | VXLAN & BGP EVPN EP.6
VXLAN = Data Plane แล้ว BGP EVPN = Control Plane ยังไง?
-----
จาก EP.5 เราลองเอา BGP EVPN ออกจาก VXLAN Fabric กันไปแล้ว
แล้วพบว่า... VXLAN สามารถทำงานแบบ Flood-and-Learn ได้
ถ้า VTEP ยังไม่รู้ว่า Remote MAC อยู่ที่ไหน ก็ต้องอาศัย Flood / Replicate Traffic
แล้วค่อยเรียนรู้ Remote Endpoint จาก Data Plane Traffic ที่เกิดขึ้นจริง
หรือถ้าจะจำแบบที่เราทิ้งไว้ท้าย EP.5 ก็คือ
"Flood-and-Learn = Traffic มาก่อน แล้วค่อย Learn Remote Endpoint ทีหลัง"
แต่ก่อนจบ EP.5 ผมมีทิ้งคำถามไว้ว่า...
จะเป็นยังไง ถ้า VTEP ไม่จำเป็นต้องรอ Remote Traffic ก่อน?
แต่หลังจาก Leaf ตัวหนึ่งเรียนรู้ Endpoint ของตัวเองแล้ว
มันสามารถบอก Leaf ตัวอื่นได้เลยว่า...
"MAC นี้อยู่หลังผมนะ"
วันนี้เราจะเอา BGP EVPN กลับเข้ามาในภาพครับ 😄
-----
ลองกลับมาที่ Topology เดิมของเรา
Host-A อยู่หลัง Leaf-1
Host-B อยู่หลัง Leaf-2
ทั้งสองฝั่งอยู่ใน Overlay Service เดียวกัน
สมมติว่าเป็น VNI 10010
และ Underlay มี IP Reachability ระหว่าง VTEP เรียบร้อยแล้ว
สมมติว่า
Leaf-1 VTEP = 10.255.1.1
Leaf-2 VTEP = 10.255.2.1
ถ้า Host-A ต้องการส่ง Ethernet Frame ไปหา Host-B
Leaf-1 จะรู้ได้ยังไงว่า... "MAC ของ Host-B อยู่หลัง VTEP ตัวไหน?"
ลองดูสิ่งที่เรามีอยู่ก่อน
- VXLAN Header มี VNI ซึ่งเอาไว้ระบุว่า Traffic นี้อยู่ใน Overlay Service ไหน
- Outer IP Header มี Destination IP ซึ่งเอาไว้ส่ง VXLAN Packet ไปยัง Remote VTEP
- ส่วน Underlay Routing ก็ช่วยพา Packet ไปยัง VTEP ปลายทาง
แต่ทั้งหมดนี้มันก็ยังไม่ได้ตอบคำถามว่า...
"MAC ของ Host-B อยู่ที่ไหน?" ถูกไหมครับ
VNI ไม่ใช่ MAC Directory
และ Routing Table ของ Underlay ก็ไม่ได้เก็บ Location ของ Host MAC
ตรงนี้แหละครับที่ Control Plane จะเริ่มเข้ามามีบทบาท
-----
ก่อนอื่นต้องแยกสองเรื่องนี้ออกจากกันให้ชัดก่อน
VXLAN = Data Plane
หน้าที่หลักคือ Encapsulate Ethernet Frame ให้กลายเป็น VXLAN Packet
แล้วส่ง Traffic ผ่าน IP Fabric ไปยัง Remote VTEP
เมื่อถึงปลายทางก็ Decapsulate แล้วนำ Original Ethernet Frame ไป Forward ต่อ
ส่วน...
BGP EVPN = Control Plane
หน้าที่คือแลกเปลี่ยน Reachability Information ระหว่างอุปกรณ์ที่เข้าร่วม EVPN Service
หรือถ้าพูดแบบสั้น ๆ ก็คือ
- VXLAN ทำหน้าที่ใน Data Plane สำหรับ Encapsulation / Decapsulation Traffic
- ส่วน EVPN ช่วยให้ VTEP เรียนรู้ว่า Endpoint นั้น Reachable ผ่าน VTEP ไหน
แต่สองอย่างนี้ไม่ได้ทำหน้าที่แทนกันนะครับ
-----
ลองมาดู Flow การทำงานกัน เริ่มจาก Host-B ที่อยู่หลัง Leaf-2
เมื่อ Host-B ส่ง Ethernet Frame เข้ามา
Leaf-2 จะเรียนรู้ Source MAC ของ Host-B จาก Local Data Plane ตามปกติ
สมมติว่า MAC ของ Host-B คือ "MAC-B"
Leaf-2 ก็เรียนรู้ว่า "MAC-B อยู่ฝั่ง Local ของผมนะ"
ถึงตรงนี้ยังเหมือน Ethernet Switching ที่เราคุ้นกัน ถูกไหมครับ
แต่สิ่งที่เพิ่มเข้ามาเมื่อมี BGP EVPN ก็คือ...
หลังจาก Leaf-2 เรียนรู้ Local Endpoint แล้ว
Leaf-2 สามารถ Advertise Endpoint Reachability ออกไปผ่าน BGP EVPN Control Plane
หรือพูดสั้น ๆ ได้ประมาณว่า... "ถ้าจะไปหา MAC-B ให้มาทางผมนะ"
ข้อมูล Endpoint แบบนี้ ใน EVPN จะเกี่ยวข้องกับ Route Type 2 หรือ MAC/IP Advertisement Route
ซึ่งสามารถ Advertise MAC Address และถ้ามี IP Binding ที่ใช้งานได้ ก็สามารถมี IP Address ไปด้วยได้
แต่ Route Type 2 เอาไว้ค่อยลงลึกอีกที ใน EP ถัด ๆ ไปละกันครับ
ตอนนี้เอาแค่ภาพใหญ่ให้เข้าใจก่อน 😄
ถัดมา เมื่อ Leaf-1 ได้รับและ Import EVPN Route ที่เกี่ยวข้องกับ Service ของมัน
Leaf-1 ก็สามารถเรียนรู้ได้ว่า MAC-B จะไป Remote VTEP 10.255.2.1
ตรงนี้คือจุดต่างสำคัญจาก EP.5
คราวนี้ Leaf-1 ไม่ต้องรอให้ VXLAN Traffic จากฝั่ง Leaf-2 วิ่งมาก่อนแล้วค่อยเรียนรู้ MAC-B จาก Remote Data Plane
แต่ Remote MAC Reachability สามารถถูกแจกมาทาง BGP EVPN Control Plane ได้
ดังนั้น...
Local Endpoint Learning ยังเกิดจาก Local Data Plane ตามปกติ
เราไม่ได้ยกเลิก MAC Learning
แต่สิ่งที่เปลี่ยนไปก็คือ... "Remote VTEP ได้ข้อมูล Endpoint Location มายังไง?"
จากเดิมที่ต้องพึ่ง Remote Data-plane Flood-and-Learn
แต่ตอนนี้มันสามารถเรียนรู้ผ่าน Control Plane ได้
แล้วตอน Packet วิ่งจริงล่ะ จะเป็นยังไง?
-----
สมมติ Host-A รู้ Destination MAC ของ Host-B แล้ว
1. Host-A ส่ง Ethernet Frame เข้ามาที่ Leaf-1 โดย Destination MAC = MAC-B
.
2. Leaf-1 Lookup Forwarding State แล้วพบว่า MAC-B Reachable ผ่าน VTEP 10.255.2.1
.
3. Leaf-1 ทำ VXLAN Encapsulation โดยใส่ VNI 10010 เพื่อระบุ Overlay Service และใช้ Outer Destination IP = 10.255.2.1
.
4. จากนั้น VXLAN Packet ถูกส่งเข้า Underlay ซึ่งทำการ Lookup Route → เลือก Path → แล้ว Forward Packet ไปหา 10.255.2.1
.
5. เมื่อ Leaf-2 ได้รับ Packet ก็ Decapsulate VXLAN Header ออก แล้วนำ Original Ethernet Frame ไป Forward ต่อหา Host-B
.
จบครับ 😄
.
-----
แต่มีจุดหนึ่งที่อยากให้ทุกคนสังเกตให้ดี...
ตอนที่ User Traffic วิ่งจริง ๆ
BGP EVPN ไม่ได้เป็นตัวที่ใช้ขน Ethernet Frame
ตัวที่ทำ Encapsulation / Decapsulation Traffic ยังคงเป็น VXLAN
และตัวที่พา Outer IP Packet เดินทางผ่าน Fabric ก็คือ Underlay Routing
ถ้าสรุปแบบสั้น ๆ ก็คือ
- EVPN บอกว่า Endpoint Reachable ผ่าน VTEP ไหน
- VXLAN ทำ Encapsulation / Decapsulation
- Underlay พา VXLAN Packet ไปถึง Remote VTEP
.
จะเห็นว่าทั้งสามอย่างทำงานร่วมกัน แต่ทำหน้าที่คนละเรื่อง
.
-----
ทีนี้ก็มีอีกคำถามให้คิดตามกันต่อว่า...
BGP EVPN แจกข้อมูลแค่ Endpoint MAC อย่างเดียวหรือเปล่า?
คำตอบคือ... ไม่ใช่ครับ 😄
ลองนึกย้อนกลับไป EP.5
ตอนที่เราพูดถึง BUM Traffic ก็จะมีอีกคำถามหนึ่งว่า
"ใน VNI 10010 มี VTEP ไหนเข้าร่วม Service นี้อยู่บ้าง?"
ซึ่ง EVPN ก็มีข้อมูลอีกชนิดหนึ่ง ที่ใช้บอก Layer 2 Service Membership ได้เหมือนกัน
ข้อมูลตรงนี้จะเกี่ยวข้องกับ EVPN Route Type 3 หรือ IMET
เดี๋ยวเรื่อง EVPN Route Type เราจะไว้คุยกันใน EP ถัด ๆ ไปอีกทีนะครับไม่ต้องซีเรียส 555
ตอนนี้แค่รู้ไว้ก่อนว่า EVPN มี Route Type หลายแบบ
และแต่ละแบบตอบคำถามคนละเรื่อง
เช่น...
Route Type 2 ช่วยตอบประมาณว่า "Endpoint นี้คือใคร และ Reachable ผ่าน VTEP ไหน?"
ส่วน Route Type 3 ช่วยตอบประมาณว่า "ใครบ้างที่ Participate อยู่ใน Layer 2 Service นี้?"
ส่วนรายละเอียดว่า Membership นี้ ถูกนำไปใช้กับ BUM Handling ยังไง
เดี๋ยวไปว่ากันต่อใน EP.7 ครับ 😄
-----
โอเคครับ พออ่านมาถึงตรงนี้ อาจจะเริ่มคิดว่า...
"งั้นพอมี BGP EVPN แล้ว ก็ไม่มี Flooding เลยหรือเปล่า?"
ยังไม่ใช่ครับ 555
BGP EVPN ช่วยลดการพึ่งพา Remote Data-plane Flood-and-Learn
แต่ไม่ได้หมายความว่า BUM Traffic จะหายไปทั้งหมด
Broadcast
Unknown Unicast
Multicast
ยังต้องมี Forwarding Behavior ตาม Design ของ Fabric อยู่
ดังนั้น...
การใช้ BGP EVPN ไม่ได้แปลว่าไม่มี Flood เลย
แต่มันเพิ่ม Control Plane สำหรับแลกเปลี่ยน Reachability และ Service Information
ทำให้ Fabric ไม่จำเป็นต้องพึ่ง Remote Data-plane Learning เพียงอย่างเดียว
แล้วอีกเรื่องที่สำคัญมาก คือ...
ต่อให้มี EVPN Route แล้ว ก็ไม่ได้แปลว่า Data Traffic จะส่งผ่านได้แน่นอน
สมมติ Leaf-1 รู้แล้วว่า MAC-B → VTEP 10.255.2.1
แต่ถ้า Underlay Route ไปหา 10.255.2.1 ไม่ได้ VXLAN Packet ก็ไปไม่ถึงอยู่ดี 😅
เพราะฉะนั้นเวลา Troubleshoot ลองแยกคิดเป็นชั้น ๆ ออกมา
Underlay
→ Reach Remote VTEP ได้ไหม?
EVPN Control Plane
→ เรียน Reachability ที่ถูกต้องหรือยัง?
Forwarding State
→ ข้อมูลถูก Install พร้อมใช้งานหรือยัง?
Data Plane
→ VXLAN Packet วิ่งจริงไหม?
เพราะแต่ละชั้นสัมพันธ์กัน แต่ไม่ใช่สิ่งเดียวกันนะครับ
ดังนั้นเราจะเห็นว่า...
การเข้าใจ Control Plane กับ Data Plane มันสำคัญกว่าการจำแค่ว่า
Feature นี้ต้องเปิด Command อะไรบ้าง
โอเคครับ ทิ้งคำถามกันไว้ให้คิดต่อก่อนจบ EP.6
ถ้า Endpoint Reachability เป็นเรื่องหนึ่ง แล้ว VTEP จะรู้ได้ยังไงว่า...
"ใครบ้างเข้าร่วม VNI 10010?"
Route Type 3 หรือ IMET เข้ามาเกี่ยวข้องตรงไหน?
แล้วข้อมูล Membership นี้ ถูกนำไปใช้กับ BUM Traffic ยังไง?
เดี๋ยว EP.7 เรามาต่อเรื่องนี้กันครับ 😄