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

🧪 Lab 02 · Single-AS L3VPN နှင့် Multi-Tenant VRF သီးခြားခွဲထုတ်ခြင်း

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

ကြာချိန်: ~၅၀ မိနစ် · Nodes အရေအတွက်: ၅ ခု (PE Router ၂ လုံး၊ P Core Router ၁ လုံး၊ Customer CE Router ၂ လုံး)

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

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

cd labs/mpls-l3vpn-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-mpls-l3vpn-lab-pe1 Cli
    

Topology နှင့် Addressing

graph LR
    subgraph CustA["Customer A (VRF RED)"]
        CE1["ce1 (Cust A)<br/>10.100.1.1/24"]
    end

    subgraph CoreProvider["Service Provider MPLS Backbone (AS 65000)"]
        PE1["pe1 (PE Router)<br/>2.2.2.2/32"] <===>|OSPF + LDP| P1["p1 (P Core)<br/>1.1.1.1/32"]
        P1 <===>|OSPF + LDP| PE2["pe2 (PE Router)<br/>3.3.3.3/32"]
        PE1 -.-|MP-iBGP VPNv4 Peer Session| PE2
    end

    subgraph CustB["Customer A Remote Site (VRF RED)"]
        CE2["ce2 (Cust A)<br/>10.100.2.2/24"]
    end

    CE1 <===>|eBGP / Static| PE1
    PE2 <===>|eBGP / Static| CE2

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

    class CE1,CE2 cust; class PE1,PE2 pe; class P1 p;
Node အခန်းကဏ္ဍ VRF Route Distinguisher (RD) Import / Export Route Target (RT) Interface / IP
pe1 Provider Edge RED 65000:100 target:65000:100 Et2 → 10.0.11.1/24
pe2 Provider Edge RED 65000:100 target:65000:100 Et2 → 10.0.22.2/24
ce1 Customer Edge - Customer LAN - Et1 → 10.0.11.10/24
ce2 Customer Edge - Customer LAN - Et1 → 10.0.22.20/24

အဆင့် ၁ · VRF နှင့် Route Target ပြင်ဆင်သတ်မှတ်ခြင်း

pe1 နှင့် pe2 ပေါ်တွင် VRF RED ကို ဖန်တီးပါ။ Customer IPv4 prefix များသည် VPNv4 address space ထဲတွင် ထပ်တူမကျဘဲ သီးခြားဖြစ်စေရန် Route Distinguishers (RD) ကို သတ်မှတ်ပါ (RD + IPv4 Prefix = 96-bit VPNv4 Prefix)။ Route ဖြန့်ဝေမှုကို ထိန်းချုပ်ရန် Extended BGP Route Targets (import / export) ကို သတ်မှတ်ပါ။

configure
vrf instance RED
!
router bgp 65000
   vrf RED
      rd 65000:100
      route-target import vpn-ipv4 65000:100
      route-target export vpn-ipv4 65000:100
configure
vrf instance RED
!
router bgp 65000
   vrf RED
      rd 65000:200
      route-target import vpn-ipv4 65000:100
      route-target export vpn-ipv4 65000:100

အဆင့် ၂ · MP-iBGP VPNv4 Peer Session ချိတ်ဆက်ခြင်း

PE loopback များ (2.2.2.2 ↔ 3.3.3.3) ကြားတွင် vpn-ipv4 address-family ဖြင့် MP-iBGP ကို ချိန်ညှိပြင်ဆင်ပါ။

configure
router bgp 65000
   router-id 2.2.2.2
   neighbor 3.3.3.3 remote-as 65000
   neighbor 3.3.3.3 update-source Loopback0
   !
   address-family vpn-ipv4
      neighbor 3.3.3.3 activate
configure
router bgp 65000
   router-id 3.3.3.3
   neighbor 2.2.2.2 remote-as 65000
   neighbor 2.2.2.2 update-source Loopback0
   !
   address-family vpn-ipv4
      neighbor 2.2.2.2 activate

စစ်ဆေးခြင်း:

docker exec -i clab-mpls-l3vpn-lab-pe1 Cli -p 15 <<'EOF'
enable
show bgp vpn-ipv4 summary
EOF
BGP summary information for VRF default
Router identifier 2.2.2.2, local AS number 65000
Neighbor    V AS     MsgRcvd MsgSent OutQ Up/Down State  NRcvd
3.3.3.3     4 65000    142     139    0  00:12:44 Estab  2

✅ အောင်မြင်မှု သတ်မှတ်ချက်: State တွင် Estab ဟု ပြသပြီး NRcvd > 0 ဖြစ်ရပါမည်။


အဆင့် ၃ · PE-CE Routing နှင့် အစအဆုံး Data Plane စစ်ဆေးခြင်း

Customer စက်များနှင့် ချိတ်ဆက်ထားသော PE interface များကို VRF RED ထဲသို့ ထည့်သွင်းပြီး PE-CE eBGP routing ကို ချိန်ညှိပါ။

configure
hostname ce1
!
interface Loopback0
   ip address 10.100.1.1/32
!
interface Ethernet1
   no switchport
   ip address 10.1.1.2/30
!
router bgp 65001
   router-id 10.100.1.1
   neighbor 10.1.1.1 remote-as 65000
   network 10.100.1.1/32
configure
hostname ce2
!
interface Loopback0
   ip address 10.100.2.2/32
!
interface Ethernet1
   no switchport
   ip address 10.2.2.2/30
!
router bgp 65002
   router-id 10.100.2.2
   neighbor 10.2.2.1 remote-as 65000
   network 10.100.2.2/32
configure
interface Ethernet2
   no switchport
   vrf RED
   ip address 10.1.1.1/30
!
router bgp 65000
   vrf RED
      neighbor 10.1.1.2 remote-as 65001
configure
interface Ethernet2
   no switchport
   vrf RED
   ip address 10.2.2.1/30
!
router bgp 65000
   vrf RED
      neighbor 10.2.2.2 remote-as 65002

Data Plane စစ်ဆေးခြင်း:

ce1 မှ MPLS core ကို ဖြတ်၍ ce2 (10.100.2.2) သို့ ping စမ်းသပ်ပါ:

docker exec -i clab-mpls-l3vpn-lab-ce1 Cli -p 15 <<'EOF'
enable
ping 10.100.2.2 repeat 5
EOF
PING 10.100.2.2 (10.100.2.2) 56(84) bytes of data.
64 bytes from 10.100.2.2: icmp_seq=1 ttl=62 time=3.12 ms
64 bytes from 10.100.2.2: icmp_seq=2 ttl=62 time=1.84 ms
64 bytes from 10.100.2.2: icmp_seq=3 ttl=62 time=1.75 ms

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


🧠 Google Network Infra ဗဟုသုတမျှဝေမှုနှင့် Protocol သဘောတရားများ

[!NOTE]

၁။ MPLS L3VPN Packet ဖွဲ့စည်းပုံ (Two-Label Stack Header)

L3VPN forwarding လမ်းကြောင်းတွင် packet များသည် two-label MPLS stack ကို သယ်ဆောင်သွားပါသည်:

[ L2 Header ] [ Outer Transport Label (LDP) ] [ Inner Service Label (VPNv4) ] [ Original IPv4 Packet ]
  1. Outer Transport Label (LDP / RSVP-TE): Egress PE loopback ဆီသို့ MPLS underlay backbone တစ်လျှောက် packet အား သယ်ယူပို့ဆောင်ရန် P core hop တိုင်းတွင် swap လုပ်ပေးသည်။
  2. Inner Service Label (VPNv4 BGP): Egress PE မှ MP-BGP မှတစ်ဆင့် ကြေညာပေးသည်။ Egress PE router ပေါ်ရှိ သက်ဆိုင်ရာ destination VRF သို့မဟုတ် customer egress interface ကို ဖော်ထုတ်သတ်မှတ်ပေးသည်။

[!IMPORTANT]

၂။ Penultimate Hop Popping (PHP — Implicit Null Label 3)

Egress PE သည် default အားဖြင့် မိမိထံသို့ packet မရောက်မီ အထက်ရှိ P router အား အပြင်ဘက် transport label ကို ကြိုတင်ဖြုတ်ပယ်ပေးရန် တောင်းဆိုသည် (RFC 3032 Implicit Null Label 3 အသုံးပြု၍)။ - PHP ရှိရခြင်း အကြောင်းရင်း: Egress PE အား hardware label lookup နှစ်ကြိမ် (outer transport lookup + inner VPN label lookup) လုပ်ရခြင်းမှ သက်သာစေပါသည်။ ထို့ကြောင့် Egress PE သည် အတွင်းပိုင်း VPN service label တစ်ခုတည်းပါသော packet ကိုသာ လက်ခံရရှိတော့သည်!

[!TIP]

၃။ Route Distinguishers (RD) နှင့် Route Targets (RT) နှိုင်းယှဉ်ချက်

  • Route Distinguisher (RD — 64 bits):
  • ဖွဲ့စည်းပုံ: 32-bit AS / IP : 32-bit Number (ဥပမာ 65000:100)။
  • ရည်ရွယ်ချက်: 32-bit IPv4 prefix ၏ ရှေ့တွင် ထပ်ပေါင်း၍ တစ်မူထူးခြားသော 96-bit VPNv4 prefix ကို ဖန်တီးပေးသည်။ ထို့ကြောင့် customer အများအပြားသည် ထပ်တူကျနေသော IPv4 subnet များ (ဥပမာ 10.0.0.0/24) ကို သုံးစွဲစေကာမူ BGP route collisions မဖြစ်စေဘဲ ယှဉ်တွဲတည်ရှိနိုင်စေပါသည်!

  • Route Target (RT — Extended BGP Community):

  • ဖွဲ့စည်းပုံ: target:65000:100။
  • ရည်ရွယ်ချက်: VRF route import/export မူဝါဒ ကို ထိန်းချုပ်သည်။ အဝေးရှိ PE များပေါ်မှ မည်သည့် VRF များက လက်ခံရရှိသော VPNv4 prefix ကို မိမိတို့၏ local VRF routing table ထဲသို့ ထည့်သွင်းရမည်ကို ဆုံးဖြတ်ပေးသည်။

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

sudo containerlab destroy -t topology.clab.yml