မာတိကာ သို့ သွားရန်

🧪 Lab 01 · Pure L2VNI (Bridging & BUM Head-End Replication)

✅ စမ်းသပ်အတည်ပြုပြီး - Arista cEOS 4.32.0F ပေါ်တွင် OrbStack fabric မှ output များကို တိုက်ရိုက်ရယူထားပါသည်။

ကြာချိန်: ~၄၅ မိနစ် · Nodes အရေအတွက်: ၆ ခု (Spine ၂ လုံး၊ Leaf ၂ လုံး၊ Customer Host ၂ လုံး)

အမြန်စတင်ရန် လမ်းညွှန် — Step-by-Step Execution Guide (တည်နေရာ: labs/evpn-datacenter-lab/)

အဆင့် ၁ · Lab Fabric ကို စတင်လည်ပတ်ပါ (မ run ရသေးပါက)

cd labs/evpn-datacenter-lab
sudo containerlab deploy -t topology.clab.yml --max-workers 1

အဆင့် ၂ · အပြန်အလှန် Interactive လမ်းညွှန်ကို စတင်ပါ

./run.sh --guided

အခြား Run နိုင်သော နည်းလမ်းများ (Automated Script သို့မဟုတ် Manual CLI)
  • Fast Automated Script Push:
    ./run.sh 01          # step 01 ကို အလိုအလျောက် config ထည့်သွင်း၍ စစ်ဆေးမည်
    ./run.sh --all       # အဆင့်အားလုံးကို အစီအစဉ်အတိုင်း run မည်
    
  • Manual Line-by-Line CLI Execution: Container node တစ်ခုချင်းစီသို့ CLI shell ဝင်ရောက်ရန်:
    docker exec -it clab-evpn-datacenter-lab-leaf1 Cli
    

🧠 နည်းပညာ အတွင်းကျကျ လေ့လာမှု: Pure L2VNI Bridging

၁။ ရိုးရာ Spanning Tree (STP) နှင့် MLAG တို့ အဘယ်ကြောင့် မအောင်မြင်ခဲ့သနည်း

ရိုးရာ data center များတွင် Layer 2 VLAN များကို switch များတစ်လျှောက် ဆွဲဆန့်ရန် Spanning Tree Protocol (STP) သို့မဟုတ် Multi-Chassis Link Aggregation (MLAG / vPC) ကို လိုအပ်ခဲ့သည်: - STP ၏ အားနည်းချက်: Loop မဖြစ်စေရန် အရန်လမ်းကြောင်း ထက်ဝက်ခန့်ကို ပိတ်ထားရသဖြင့် အသုံးပြုနိုင်သော bandwidth ထက်ဝက် ဆုံးရှုံးရသည်။ မတော်တဆ config အမှားတစ်ခုတည်းကပင် Topology Change Notifications (TCNs) များကို ဖြစ်ပေါ်စေပြီး fabric တစ်ခုလုံးရှိ CPU queue များကို ပြည့်လျှံစေနိုင်သည်။ - MLAG / vPC ၏ Vendor Lock-in အကန့်အသတ်: Leaf အစုံများကြား သီးသန့် peer-link များ လိုအပ်ပြီး multihoming ကို switch ၂ လုံးတည်းဖြင့်သာ ကန့်သတ်ထားသဖြင့် အလျားလိုက် scale-out ချဲ့ထွင်ရန် မဖြစ်နိုင်ပါ။

VXLAN (Virtual Extensible LAN) သည် Layer 2 Ethernet frame များကို စံနှုန်းမီ UDP/IP packet များအတွင်း ထည့်သွင်း (encapsulate) ပေးခြင်းဖြင့် (UDP 4789) ဤပြဿနာကို ဖြေရှင်းပေးသည်။ ၎င်းသည် Layer 2 traffic အား Spine အားလုံးတစ်လျှောက် Equal-Cost Multi-Pathing (ECMP) ဖြင့် 5-stage Clos IP underlay fabric ပေါ်တွင် ဖြတ်သန်းသွားလာနိုင်စေပါသည်!


၂။ VXLAN 50-Byte Encapsulation Header ဖွဲ့စည်းပုံ

host1 မှ fabric ကို ဖြတ်၍ host2 ဆီသို့ Ethernet frame တစ်ခု ပို့လိုက်သောအခါ leaf1 (VTEP 1) သည် အဆိုပါ frame အား VXLAN header ဖြင့် ထုပ်ပိုးပေးပါသည်:

+-------------------+-------------------+-------------------+-------------------+-------------------+
| Outer MAC Header  | Outer IP Header   | UDP Header        | VXLAN Header      | Inner Ethernet    |
| (Leaf1 -> Spine)  | (10.255.1.11 ->   | (Dst Port 4789,   | (24-bit VNI:      | Frame             |
|                   |  10.255.1.12)     |  Src Port Hash)   |  10100)           | (Host1 -> Host2)  |
+-------------------+-------------------+-------------------+-------------------+-------------------+
|<--- 14 Bytes ---->|<--- 20 Bytes ---->|<---- 8 Bytes ---->|<---- 8 Bytes ---->|<--- Original ---->|

💡 ထုတ်လုပ်မှု ပတ်ဝန်းကျင် စည်းမျဉ်း (MTU 9214): VXLAN သည် 50 bytes overhead (Outer Ethernet 14B + Outer IP 20B + UDP 8B + VXLAN 8B) ထပ်တိုးစေသောကြောင့် packet များ fragmentation မဖြစ်စေရန် Spine နှင့် Leaf interface အားလုံးတွင် jumbo frames (MTU 9214) ကို မဖြစ်မနေ သတ်မှတ်ထားရမည်။


၃။ Pure L2VNI နှင့် L3VNI နှိုင်းယှဉ်ချက်

  • Pure L2VNI (ဤ Lab): VNI 10100 ကို အသုံးပြု၍ VTEP များတစ်လျှောက် Layer 2 broadcast domain တစ်ခုတည်း (VLAN 10) ကို တိုးချဲ့ပေးသည်။ Leaf သည် pure Layer 2 bridging ကိုသာ လုပ်ဆောင်သည် (routing မပါပါ)။ Host များသည် IP subnet တစ်ခုတည်း (10.10.10.0/24) တွင် မဖြစ်မနေ ရှိရမည်။
  • L3VNI (Lab 02): သီးသန့် VRF transport VNI (50001) ကို အသုံးပြု၍ Leaf များတစ်လျှောက် inter-subnet routing ပြုလုပ်ရန် သုံးသည်။

၄။ BUM Traffic နှင့် Head-End Replication (HER) (EVPN Route Type 3 အသုံးပြု၍)

Host တစ်ခုက BUM (Broadcast, Unknown Unicast, Multicast) traffic ပေးပို့သည့်အခါ (ဥပမာ ARP Request Who has 10.10.10.12?): 1. ရှေးဟောင်း VXLAN တွင် BUM traffic အတွက် underlay ၌ IP Multicast လိုအပ်ခဲ့သည်။ 2. EVPN-VXLAN တွင် VTEP များသည် အဝေးရှိ VTEP များကို အလိုအလျောက် ရှာဖွေတွေ့ရှိရန် BGP ပေါ်တွင် EVPN Route Type 3 (Inclusive Multicast Ethernet Tag / IMET) route များကို ဖလှယ်ကြသည်။ 3. Ingress Leaf သည် Head-End Replication (HER) ကို လုပ်ဆောင်သည်: BUM packet ၏ သီးခြား unicast မိတ္တူများကို ဖန်တီးပြီး Route Type 3 database ထဲရှိ remote VTEP အားလုံးထံသို့ တိုက်ရိုက် ပေးပို့သည်။

graph TD
    subgraph ControlPlane["BGP EVPN Control Plane (AFI 25 / SAFI 70)"]
        RT3["Route Type 3 (IMET)<br/>Leaf1 & Leaf2 တို့ VTEP IPs (10.255.1.11 <-> 10.255.1.12) ဖလှယ်ကြသည်"]
    end

    subgraph DataPlane["Pure L2VNI Unicast / BUM Data Plane"]
        H1["host1 (10.10.10.10)<br/>MAC: 00:50:56:00:00:11"] ===>|1. Untagged Frame| LF1["leaf1 (VTEP 1)<br/>VNI 10100"]
        LF1 ===>|2. Encapsulate Outer UDP 4789| SP1["spine1 (IP Core)"]
        SP1 ===>|3. ECMP Unicast Transport| LF2["leaf2 (VTEP 2)<br/>VNI 10100"]
        LF2 ===>|4. Decapsulate & Forward| H2["host2 (10.10.10.20)<br/>MAC: 00:50:56:00:00:22"]
    end

    classDef spine fill:#0d47a1,stroke:#64b5f6,color:#ffffff,stroke-width:2px,font-weight:bold;
    classDef leaf fill:#1b5e20,stroke:#81c784,color:#ffffff,stroke-width:2px,font-weight:bold;
    classDef host fill:#e65100,stroke:#ffb74d,color:#ffffff,stroke-width:2px,font-weight:bold;

    class SP1 spine; class LF1,LF2 leaf; class H1,H2 host;

အဆင့် ၁ · IP Underlay နှင့် Loopback ဆက်သွယ်မှု တည်ဆောက်ခြင်း

VTEP loopback များအကြား underlay /32 reachability ရရှိစေရန် spine1၊ spine2၊ leaf1၊ နှင့် leaf2 ပေါ်တွင် OSPF Area 0 ကို ချိန်ညှိပါ။

configure
hostname spine1
!
interface Loopback0
   ip address 10.255.0.1/32
   ip ospf area 0.0.0.0
!
interface Ethernet1
   no switchport
   ip address 10.0.1.1/30
   ip ospf area 0.0.0.0
!
interface Ethernet2
   no switchport
   ip address 10.0.1.5/30
   ip ospf area 0.0.0.0
!
router ospf 100
   router-id 10.255.0.1
   passive-interface Loopback0
configure
hostname spine2
!
interface Loopback0
   ip address 10.255.0.2/32
   ip ospf area 0.0.0.0
!
interface Ethernet1
   no switchport
   ip address 10.0.2.1/30
   ip ospf area 0.0.0.0
!
interface Ethernet2
   no switchport
   ip address 10.0.2.5/30
   ip ospf area 0.0.0.0
!
router ospf 100
   router-id 10.255.0.2
   passive-interface Loopback0
configure
hostname leaf1
!
interface Loopback0
   ip address 10.255.0.11/32
   ip ospf area 0.0.0.0
!
interface Loopback1
   ip address 10.255.1.11/32
   ip ospf area 0.0.0.0
!
interface Ethernet1
   no switchport
   ip address 10.0.1.2/30
   ip ospf area 0.0.0.0
!
interface Ethernet2
   no switchport
   ip address 10.0.2.2/30
   ip ospf area 0.0.0.0
!
router ospf 100
   router-id 10.255.0.11
   passive-interface Loopback0
   passive-interface Loopback1
configure
hostname leaf2
!
interface Loopback0
   ip address 10.255.0.12/32
   ip ospf area 0.0.0.0
!
interface Loopback1
   ip address 10.255.1.12/32
   ip ospf area 0.0.0.0
!
interface Ethernet1
   no switchport
   ip address 10.0.1.6/30
   ip ospf area 0.0.0.0
!
interface Ethernet2
   no switchport
   ip address 10.0.2.6/30
   ip ospf area 0.0.0.0
!
router ospf 100
   router-id 10.255.0.12
   passive-interface Loopback0
   passive-interface Loopback1

အဆင့် ၂ · MP-iBGP EVPN Overlay (Route Reflectors)

Spines နှင့် Leafs များကြားတွင် MP-iBGP EVPN (AFI 25 / SAFI 70) ကို ချိန်ညှိပါ။ Spines များသည် EVPN Route Reflectors အဖြစ် လုပ်ဆောင်သည်။

configure
router bgp 65000
   router-id 10.255.0.1
   neighbor LEAFS-EVPN peer group
   neighbor LEAFS-EVPN remote-as 65000
   neighbor LEAFS-EVPN update-source Loopback0
   neighbor LEAFS-EVPN route-reflector-client
   neighbor 10.255.0.11 peer group LEAFS-EVPN
   neighbor 10.255.0.12 peer group LEAFS-EVPN
   !
   address-family evpn
      neighbor LEAFS-EVPN activate
configure
service routing protocols model multi-agent
!
router bgp 65000
   router-id 10.255.0.11
   neighbor SPINES-EVPN peer group
   neighbor SPINES-EVPN remote-as 65000
   neighbor SPINES-EVPN update-source Loopback0
   neighbor 10.255.0.1 peer group SPINES-EVPN
   neighbor 10.255.0.2 peer group SPINES-EVPN
   !
   address-family evpn
      neighbor SPINES-EVPN activate

အဆင့် ၃ · Pure L2VNI နှင့် Access Port ပြင်ဆင်သတ်မှတ်ခြင်း

leaf1 နှင့် leaf2 ပေါ်တွင် VLAN 10 ကို L2 VNI 10100 သို့ ချိတ်ဆက်သတ်မှတ်ပြီး host access port များကို ပြင်ဆင်ပါ။

configure
vlan 10
   name TENANT-A-VLAN10
!
interface Vxlan1
   vxlan source-interface Loopback1
   vxlan udp-port 4789
   vxlan vlan 10 vni 10100
!
router bgp 65000
   vlan 10
      rd 10.255.0.11:10100
      route-target both 10100:10100
      redistribute learned
!
interface Ethernet3
   switchport mode access
   switchport access vlan 10
configure
vlan 10
   name TENANT-A-VLAN10
!
interface Vxlan1
   vxlan source-interface Loopback1
   vxlan udp-port 4789
   vxlan vlan 10 vni 10100
!
router bgp 65000
   vlan 10
      rd 10.255.0.12:10100
      route-target both 10100:10100
      redistribute learned
!
interface Ethernet3
   switchport mode access
   switchport access vlan 10

အဆင့် ၄ · စနစ်စစ်ဆေးခြင်းနှင့် Data Plane စမ်းသပ်မှု

၁။ EVPN Route Type 3 (BUM IMET Routes) စစ်ဆေးခြင်း

leaf1 သည် leaf2 (10.255.1.12) ကို EVPN Route Type 3 မှတစ်ဆင့် ရှာဖွေတွေ့ရှိထားခြင်း ရှိမရှိ စစ်ဆေးပါ:

docker exec -i clab-evpn-datacenter-lab-leaf1 Cli -p 15 <<'EOF'
enable
show bgp evpn route-type imet
EOF
BGP routing table information for VRF default
Router identifier 10.255.0.11, local AS number 65000
Route type: 3 (Inclusive Multicast Ethernet Tag)
   Prefix                          Next Hop        Option
*  [3][0][32][10.255.1.12]         10.255.1.12     i

၂။ EVPN Route Type 2 (MAC Advertisement) စစ်ဆေးခြင်း

EVPN table ထဲရှိ သိရှိထားသော host MAC address များကို စစ်ဆေးပါ:

docker exec -i clab-evpn-datacenter-lab-leaf1 Cli -p 15 <<'EOF'
enable
show vxlan address-table
EOF
          Vxlan Mac Address Table
----------------------------------------------------------------------
VLAN  Mac Address       Type     Prsnt  Transforms  Ports
----+---------------+----------+-------+-----------+------------------
  10  0050.5600.0022  EVPN       No                 Vx1 (10.255.1.12)

၃။ VXLAN Tunnel ကို ဖြတ်၍ အစအဆုံး L2 Ping စမ်းသပ်ခြင်း

host1 (10.10.10.10) မှ host2 (10.10.10.20) ဆီသို့ ping စမ်းသပ်ပါ:

docker exec -i clab-evpn-datacenter-lab-host1 Cli -p 15 <<'EOF'
enable
ping 10.10.10.20 repeat 5
EOF
PING 10.10.10.20 (10.10.10.20) 56(84) bytes of data.
64 bytes from 10.10.10.20: icmp_seq=1 ttl=64 time=2.15 ms
64 bytes from 10.10.10.20: icmp_seq=2 ttl=64 time=1.42 ms

--- 10.10.10.20 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4ms

✅ အောင်မြင်မှု သတ်မှတ်ချက်: host1 သည် host2 သို့ L2 VNI 10100 ကို ဖြတ်၍ packet loss 0% ဖြင့် အောင်မြင်စွာ ping နိုင်ရပါမည်။


ရှင်းလင်းသိမ်းဆည်းခြင်း (Clean up)

sudo containerlab destroy -t topology.clab.yml