Capability Transit to prevent Virtual-Links Routing Loops in OSPF

ပြီးခဲ့တဲ့ ပို့စ်မှာ Capability Transit ဆိုတာ ဘာလဲ ဆိုတာနဲ့ Virtual Link တွေနဲ့ တွဲသုံးပုံကို ရှင်းပြပြီးပါပြီ။
ဒီတခါ Capability Transit ကို Disable လုပ်လိုက်တဲ့အခါ Virtual Link Route တွေမှာ Loop ဖြစ်တာကို နည်းနည်းဝေမျှချင်ပါတယ်။
အောက်ကပုံကိုကြည့်ပါ။

R2 ကနေ R4 ရဲ့ loopback ကို သွားတဲ့ Route ကိုကြည့်ပါမယ်။ Traceroute လုပ်ကြည့်ပါမယ်။
ဒီမှာ ကျတော် R2 ရဲ့ Capability Transit ကို Disable လုပ်ထားပါမယ်။ ကျန်တဲ့ Router တွေ(Virtual Link ထိုးထားတဲ့ R1 , R3) မှာတော့ Default အတိုင်းပဲ Enable လုပ်ထားပါမယ်။

R2(config)#router ospf 1
R2(config-router)#no capability transit
R2(config-router)#end
R2#show ip route 4.4.4.4
Routing entry for 4.4.4.4/32
  Known via "ospf 1", distance 110, metric 129, type inter area
  Last update from 172.16.23.3 on Serial2/1, 00:00:48 ago
  Routing Descriptor Blocks:
  * 172.16.23.3, from 3.3.3.3, 00:00:48 ago, via Serial2/1
      Route metric is 129, traffic share count is 1
R2#
R2#trace 4.4.4.4
Type escape sequence to abort.
Tracing the route to 4.4.4.4
VRF info: (vrf in name/id, vrf out name/id)
  1 172.16.23.3 36 msec 28 msec 32 msec
  2 172.16.34.4 56 msec 64 msec 60 msec

ပုံမှန်ပါပဲ။ R2 က R4 loopback ကိုသွားဖို့ R3 ကနေဖြတ်သွားတယ်။
ကဲ… အခု လိုအပ်ချက်အရ R2 မှာ Loopback Interface တခုထပ်ထည့်ပြီး Area 2 ထဲကို ထည့်မယ်။
Area 2 ကို isolated area ဖြစ်မနေဖို့အတွက် Backbone Area (Area 0) နဲ့ ချိတ်ရမယ်။ ဒီတော့ R2 နဲ့ R1 ကို Virtual Link ထိုးရမယ်။ အောက်ကပုံမှာကြည့်ပါ။


R2#config t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#int lo0
R2(config-if)#
*Aug 22 10:51:10.975: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
R2(config-if)#ip add 2.2.2.2 255.255.255.0
R2(config-if)#ip ospf 1 area 2
R2(config-if)#exit
R2(config)#router ospf 1
R2(config-router)#area 123 virtual-link 1.1.1.1
R2(config-router)#end
R2#
*Aug 22 10:51:51.667: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on OSPF_VL1 fr                                                                                             om LOADING to FULL, Loading Done
*Aug 22 10:51:52.607: %SYS-5-CONFIG_I: Configured from console by console
R2#

ပြီးတာနဲ့ R4 Loopback ကို သွားတဲ့ လမ်းကြောင်းကို ပြန်ကြည့်ကြည့်ရအောင်။

R2#show ip route 4.4.4.4
Routing entry for 4.4.4.4/32
  Known via "ospf 1", distance 110, metric 257, type inter area
  Last update from 172.16.12.1 on Serial2/0, 00:00:18 ago
  Routing Descriptor Blocks:
  * 172.16.12.1, from 3.3.3.3, 00:00:18 ago, via Serial2/0
      Route metric is 257, traffic share count is 1
R2#

R3 ကနေသွားရမယ့် Route က R1 ကနေသွားနေတာကို မြင်လားမသိဘူး။ ဇာတ်လမ်းက စပါပြီ။ အဲဒီတော့ ဘာဖြစ်မယ်ထင်လဲ R2 ကနေ R1 ကို ပို့ ၊ R1 ကနေ R2 ကိုပို့ နဲ့ loop ဖြစ်နေပါပြီ။ မယုံရင် R4 loopback ကို traceroute လုပ်ကြည့်ကြည့်ပါ။

R2#trace 4.4.4.4
Type escape sequence to abort.
Tracing the route to 4.4.4.4
VRF info: (vrf in name/id, vrf out name/id)
  1 172.16.12.1 8 msec 56 msec 32 msec
  2 172.16.12.2 40 msec 60 msec 44 msec
  3 172.16.12.1 40 msec 56 msec 52 msec
  4 172.16.12.2 88 msec 100 msec 60 msec
  5 172.16.12.1 92 msec 52 msec 96 msec
  6 172.16.12.2 120 msec 72 msec 92 msec
  7 172.16.12.1 92 msec 92 msec 92 msec
  8 172.16.12.2 160 msec 140 msec 156 msec

ဒါပါပဲ။ ဒါကြောင့် Default မှာ Enable လုပ်ထားတဲ့ Capability Transit ဆိုတာ Virtual Link Route မှာ ဖြစ်တတ်တဲ့ loop တွေကို ကာကွယ်ဖို့ပါ။ loop မဖြစ်စေချင်ရင်တော့ R2 ရဲ့ ospf process အောက်မှာ capability transit ဆိုတာလေး ထည့်ပေးလိုက်တာနဲ့ ရပါတယ်။

တကယ်တော့ OSPF Equal Cost Load Balancing အကြောင်းနဲ့ OSPF LSA Type အကြောင်းတွေ ကောင်းကောင်းနားလည်တဲ့အခါ ကျရင် Capability Transit ကို တခါတရံမှာ Disable လုပ်ပေးဖို့လိုတဲ့အခါတွေလဲ ရှိပါသေးတယ်။ ဒါတွေကိုတော့ အသေးစိတ်မရေးတော့ပါဘူး။

Expert တွေကတော့ Virtual Link ကို အတတ်နိုင်ဆုံး မိမိ Network Design မှာ မသုံးဖို့နဲ့ မဖြစ်မနေ ယာယီအနေနဲ့ သုံးဖို့လိုလာရင်လည်း ယာယီကနေ အမြဲတမ်း ဖြစ်မသွားစေဖို့ ဂရုစိုက်ဖို့လိုကြောင်းပြောလေ့ရှိကြပါတယ်။

ပျော်ရွှင်ပါစေဗျာ။

(Be knowledgeable, pass it on then)

Capability Transit in OSPF

CCIE အတွက်လေ့လာရင်း Study Partner သူငယ်ချင်းတွေနဲ့ ငြင်းကြခုံကြ ရတဲ့ Topic တခုပေါ့ဗျာ။ 

Capability Transit ဆိုတာ Cisco IOS တွေမှာ Default အနေနဲ့ Enable လုပ်ထားပြီးသားပါ။ 
သူ့ကို Cisco ကရှင်းပြထားတာကတော့ Route တခုက သူသွားချင်တဲ့ နေရာကို သွားဖို့ အနည်းဆုံး လမ်း ၂ လမ်းရှိပြီး အတိုဆုံးလမ်းက Non-Backbone Area (Area 0 မဟုတ်တဲ့ Standard Area) ကို ဖြတ်သွားတယ်ဆိုရင် အဲ့ဒီ လမ်းကနေပဲသွားဖို့သုံးတာပါတဲ့။ ရှုပ်သွားလားမသိဘူး။

အောက်က ပုံကိုကြည့်ကြည့်ပါ။
Area 2 ရဲ့ R4 ကနေ Area 0 မှာရှိတဲ့ R3 ရဲ့ Network 1 နဲ့ Network 2 တွေကိုသွားတာပါ။



ဒီပုံထဲက Interface တွေနဲ့ IP Address, OSPF Area တွေကို Router တွေမှာ ကျတော် Configure လုပ်ထားပါတယ်။
နောက်ပြီး R1 နဲ့ R4 ကို Virtual Link ထိုးထားပါသေးတယ်။ ဒီ Capability Transit ဆိုတာကို လျှာရှည်ချင်လို့ပါ။
(မိတ်ဆွေတို့လည်း စိတ်ပါရင် ကိုယ်တိုင်လုပ်ကြည့်နိုင်ပါတယ်။)

စလိုက်ကြရအောင်...
Configuration တွေဘာမှ မပြောင်းသေးပဲ R4 ရဲ့ OSPF Routing Table ကိုကြည့်ရအောင်... 
R4#show ip route ospf

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 4 subnets, 3 masks
O        10.1.13.0/29 [110/74] via 10.1.124.1, 00:00:32, Ethernet0/0
O        10.1.23.0/29 [110/74] via 10.1.124.2, 00:00:32, Ethernet0/0
      172.16.0.0/16 is variably subnetted, 8 subnets, 2 masks
O        172.16.101.1/32 [110/11] via 10.1.124.1, 00:00:42, Ethernet0/0
O        172.16.101.2/32 [110/11] via 10.1.124.2, 00:00:42, Ethernet0/0
O        172.16.103.3/32 [110/75] via 10.1.124.2, 00:00:32, Ethernet0/0
                         [110/75] via 10.1.124.1, 00:00:32, Ethernet0/0
O        172.16.133.3/32 [110/75] via 10.1.124.2, 00:00:32, Ethernet0/0
                         [110/75] via 10.1.124.1, 00:00:32, Ethernet0/0
R4#

R3 ရဲ့ Network 1 , Network 2 တွေကို R4 ကနေသွားဖို့  R1 နဲ့ R4 ကို Virtual Link ထိုးထားပေမယ့်၊ R1 , R2 ၂ ခုစလုံးဆီကနေ သွားနိုင်တာကိုတွေ့ရမှာပါ။
ဒီတော့ Cisco IOS တွေမှာ Capability Transit ဆိုတာကို Default အနေနဲ့ Enable (on) ထားပြီးသားဖြစ်နေတဲ့အတွက် Virtual Link ပေါ်ကနေသွားလို့ရနေတာကို မရတော့အောင် ကျတော် R2 ရဲ့ Cost ကို ပြင်လိုက်မယ်ဗျာ။

!
interface Serial2/1
 ip address 10.1.23.2 255.255.255.248
 ip ospf 1 area 0
 ip ospf cost 1
 serial restart-delay 0
!

ပြင်ပြီးတာနဲ့ R4 ရဲ့ OSPF Routing Table ကိုပြန်ကြည့်ရအောင်... 

R4#show ip route ospf


Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 4 subnets, 3 masks
O        10.1.13.0/29 [110/74] via 10.1.124.1, 00:32:04, Ethernet0/0
O        10.1.23.0/29 [110/11] via 10.1.124.2, 00:01:45, Ethernet0/0
      172.16.0.0/16 is variably subnetted, 8 subnets, 2 masks
O        172.16.101.1/32 [110/11] via 10.1.124.1, 00:32:14, Ethernet0/0
O        172.16.101.2/32 [110/11] via 10.1.124.2, 00:32:14, Ethernet0/0
O        172.16.103.3/32 [110/12] via 10.1.124.2, 00:01:45, Ethernet0/0
O        172.16.133.3/32 [110/12] via 10.1.124.2, 00:01:45, Ethernet0/0
R4#

R1 ကို မသုံးတော့ပဲ R2 ကိုပဲ​သုံးတော့တာကို တွေ့ရမှာပါ။ ဒါဘာကြောင့်လဲ အပေါ်မှာ ပြောခဲ့သလိုပါပဲ Capability Transit ကို Enable (on) ထားလို့ပါ။

ဒီတခါ... အပေါ်က R2 ရဲ့ Cost Value 1 အတိုင်းကို မပြောင်းပဲ Capability Transit ကိုပဲ Disable (off) ကြည့်ပြီး ထွက်လာတဲ့ Result  ကိုကြည့်ပါမယ်။

R1(config)#router ospf 1
R1(config-router)#no capability transit
R1(config-router)#end

R4(config)#router ospf 1
R4(config-router)#no capability transit
R4(config-router)#end

R4#show ip route ospf


Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 4 subnets, 3 masks
O        10.1.13.0/29 [110/74] via 10.1.124.1, 00:00:05, Ethernet0/0
O        10.1.23.0/29 [110/138] via 10.1.124.1, 00:00:05, Ethernet0/0
      172.16.0.0/16 is variably subnetted, 8 subnets, 2 masks
O        172.16.101.1/32 [110/11] via 10.1.124.1, 00:00:05, Ethernet0/0
O        172.16.101.2/32 [110/11] via 10.1.124.2, 00:00:05, Ethernet0/0
O        172.16.103.3/32 [110/75] via 10.1.124.1, 00:00:05, Ethernet0/0
O        172.16.133.3/32 [110/75] via 10.1.124.1, 00:00:05, Ethernet0/0
R4#

ဒီတခါတော့ R2 အစား R1 ကိုရွေးသွားတာကို တွေ့ရမှာပါ။

ကဲ… Capability Transit ဆိုတာ ဒါပါပဲ။

သူ့ကို Virtual Link တွေနဲ့ သုံးတဲ့အခါ On မထားရင် Routing Loop ဖြစ်နိုင်တဲ့အတွက် သတိထားဖို့လိုအပ်ပါတယ်။
ဘယ်လိုမျိုး loop ဖြစ်နိုင်လဲ ဆိုတာ နောက်ပို့စ်တခုအနေနဲ့ ရေးပါအုံးမယ်။

ပျော်ရွှင်ပါစေဗျာ။
(Be knowledgeable, pass it on then)

Tool Command Language Simple Shell (TCLSH) in HP Switch

ဒီတခါတော့ (Hub and Spoke) လို Network မှာ Spoke Network Node တွေအများကြီးကို Hub ဖက်ကနေ IP Connectivity Test လုပ်ပုံလေး ပြန်ဝေမျှချင်ပါတယ်။
Cisco Router တွေ Switch တွေမှာတော့ သုံးနေတာကြာပါပြီ။ အခု HP Device တွေကို လက်ရှိ Project မှာ သုံးနေတော့မှ ပဲ လိုအပ်ချက်ရ  IP Connectivity Test လုပ်ရတဲ့အခါ Node တွေအများကြီးကို PING Test လုပ်ရတာ အတော် လက်ဝင်ပါတယ်။
ဒီတော့မှ ထုံးစံအတိုင်း ငပျင်းကျတော် ရှာရင်းဖွေရင်း TCLSH ကို HP မှာလည်း သုံးလို့ရတာသွားတွေ့ပါတယ်။
သုံးပုံက လွယ်ပါတယ်။
Device ထဲ console/remote shell ကနေဝင်ပြီးတာနဲ့ user view mode မှာတင် အောက်မှာ နမူနာ ပြထားသလို ရိုက်ထည့်လိုက်ရုံပါပဲ။ IP Address တွေနေရာမှာတော့ ကိုယ့် Node IP Address တွေကိုထည့်ပေါ့။

tclsh
foreach address {
192.168.5.1
192.168.5.2
192.168.5.3
192.168.5.4
192.168.5.5
192.168.5.6
192.168.5.7
192.168.5.8
} { ping $address }
နောက်ဆုံး တကြောင်းရိုက်ထည့်ပြီး Enter နှိပ်လိုက်တာနဲ့ PING result တွေထွက်လာပါလိမ့်မယ်။
Test လုပ်ချင်တာတွေလုပ်ပြီးရင်တော့ tclshquit ဆိုတာလေးရိုက်ပြီး ထွက်လိုက်ရုံပါပဲ။




အသေးစိတ် သိချင်ရင်တော့ အောက်ကလင့်မှာ သွားဖတ်နိုင်ပါတယ်။

ပျော်ရွှင်ပါစေဗျာ။
(Be knowledgeable, pass it on then)

Multilink Point to Point (MLPPP) in Cisco Router

စာမရေးဖြစ်တာကြာပါပြီ။

ဒီတခါတော့ CCNA Version အသစ်မှာ ပါလာတဲ့ Multilink Point to Point ကိုဘယ်လို Configure လုပ်လဲ ဆိုတာ နည်းနည်းပြောမှာပါ။

အပြင်မှာလည်း အသုံးများတဲ့ တခုဖြစ်ပါတယ်။ ကျတော်ကိုယ်တိုင်လည်း လက်ရှိ Project မှာ ဒါကိုသုံးနေရပါတယ်။

နမူနာအနေနဲ့ အောက်က Topology ကိုသုံးပါမယ်။ 


လုပ်ရမှာကတော့ Router ၂ လုံးကို Serial Link ၂ ခု၊ IP Address တခုတည်းနဲ့ သုံးမှာပါ။
ဒီလိုလုပ်ခြင်းအားဖြင့် Bandwidth ပိုရစေတယ်။ Link Redundancy (ဒီအတွက်တော့ ပိုမိုရှုပ်ထွေးတဲ့ Configuration လိုပါတယ်) ရပြီးသားဖြစ်ပါတယ်။

ကဲ စလိုက်ရအောင်

ပထမဆုံး Multilink Bundle ကို အောက်ပါအတိုင်း Router ၂ လုံးစလုံးမှာ Configure လုပ်ပါ။ IP Address တော့မတူရဘူးပေါ့။ Bundle create လုပ်ပြီးတာနဲ့ loopback create လုပ်သလိုမျိုး virtual interface တခုပေါ်လာတာကို တွေ့ရပါလိမ့်မယ်။ အောက်မှာ နမူနာပြထားပါတယ်။

For Router 1

interface multilink 1
ip address 172.16.12.1 255.255.255.252
encapsulation ppp
ppp multilink
ppp multilink group 1 (ဒါကတော့ Serial Interface တွေအများကြီးသုံးချင်တဲ့အခါ Group ခွဲပြီးသုံးဖို့ပါ။)

For Router 2

interface multilink 1
ip address 172.16.12.2 255.255.255.252
encapsulation ppp
ppp multilink
ppp multilink group 1

ပြီးရင် Serial Interface တွေကို အောက်ပါအတိုင်း Router ၂ လုံးစလုံးမှာ Configure လုပ်ပါ။

For Router 1

interface serial0/1
no ip address
encapsulation ppp
ppp multilink
ppp multilink group 1

interface serial0/2
no ip address
encapsulation ppp
ppp multilink
ppp multilink group 1


For Router 2

interface serial0/1
no ip address
encapsulation ppp
ppp multilink
ppp multilink group 1

interface serial0/2
no ip address
encapsulation ppp
ppp multilink
ppp multilink group 1

ကျတော် GNS3 မှာ Configure လုပ်ပြထားတာကို အောက်မှာ နမူနာပြထားပါတယ်။

တခုမမေ့ဖို့က Default မှာ shutdown ဖြစ်နေတဲ့ Serial Interface တွေကို no shutdown လုပ်ပေးဖို့ပါ။

R1#config t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#
R1(config)#interface multilink 1
R1(config-if)#ip address 172.16.12.1 255.255.255.252
R1(config-if)#encapsulation ppp
R1(config-if)#ppp multilink
R1(config-if)#ppp multilink group 1
R1(config-if)#
*Mar  1 00:11:40.995: %LINEPROTO-5-UPDOWN: Line protocol on Interface Multilink1, changed state to down
R1(config-if)#exit
R1(config)#
R1(config)#interface serial0/1
R1(config-if)#no ip address
R1(config-if)#encapsulation ppp
R1(config-if)#ppp multilink
R1(config-if)#ppp multilink group 1
R1(config-if)#exit
R1(config)#
R1(config)#interface serial0/2
R1(config-if)#no ip address
R1(config-if)#encapsulation ppp
R1(config-if)#ppp multilink
R1(config-if)#ppp multilink group 1
R1(config-if)#
R1(config-if)#exit
R1(config)#exit


R2#config t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#interface multilink 1
R2(config-if)#ip address 172.16.12.2 255.255.255.252
R2(config-if)#encapsulation ppp
R2(config-if)#ppp multilink
R2(config-if)#ppp multilink group 1
R2(config-if)#exit
R2(config)#
*Mar  1 00:14:52.131: %LINEPROTO-5-UPDOWN: Line protocol on Interface Multilink1, changed state to down
R2(config)#
R2(config)#
R2(config)#interface serial0/1
R2(config-if)#no ip address
R2(config-if)#encapsulation ppp
R2(config-if)#ppp multilink
R2(config-if)#ppp multilink group 1
R2(config-if)#exit
R2(config)#
R2(config)#interface serial0/2
R2(config-if)#no ip address
R2(config-if)#encapsulation ppp
R2(config-if)#ppp multilink
R2(config-if)#ppp multilink group 1
R2(config-if)#
R2(config-if)#exit
R2(config)#  

ပြီးရင် ကိုယ်လုပ်ထားတာ မှန် မမှန် အောက်ပါအတိုင်း စစ်ကြည့်ပါ။

R1#show ppp multilink 

Multilink1, bundle name is R2
  Endpoint discriminator is R2
  Bundle up for 00:15:58, total bandwidth 3088, load 1/255
  Receive buffer limit 24000 bytes, frag timeout 1000 ms
    0/0 fragments/bytes in reassembly list
    0 lost fragments, 0 reordered
    0/0 discarded fragments/bytes, 0 lost received
    0x36 received sequence, 0x36 sent sequence
  Member links: 2 active, 0 inactive (max not set, min not set)
    Se0/1, since 00:15:58
    Se0/2, since 00:15:54
No inactive multilink interfaces
R1#

R2#show ppp multilink

Multilink1, bundle name is R1
  Endpoint discriminator is R1
  Bundle up for 00:16:13, total bandwidth 3088, load 1/255
  Receive buffer limit 24000 bytes, frag timeout 1000 ms
    0/0 fragments/bytes in reassembly list
    0 lost fragments, 0 reordered
    0/0 discarded fragments/bytes, 0 lost received
    0x38 received sequence, 0x38 sent sequence
  Member links: 2 active, 0 inactive (max not set, min not set)
    Se0/1, since 00:16:13
    Se0/2, since 00:16:10
No inactive multilink interfaces
R2#


မှန်ပြီဆိုရင် PING ကြည့်ပါ။ Reply ရပြီဆိုရင် Multilink Point to Point Configuration အောင်မြင်စွာနဲ့ ပြီးဆုံးပါပြီ။

R1#ping 172.16.12.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/19/56 ms
R1#

R2#ping 172.16.12.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.12.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/22/68 ms
R2#

ဒါပါပဲ။ သုံးပြထားတာကတော့ GNS3 နဲ့ Cisco 3640 , IOS Version 12.4(16) ပါ။

တကယ်တော့ MLPPP ဟာ တကယ့် environment မှာ လိုအပ်ချက်ပေါ်လိုက်ပြီး အခု ကျတော်ပြောတာထက် ပိုအသေးစိတ်ကျကျ Configure လုပ်ရပါတယ်။

အသေးစိတ်သိချင်ရင်တော့ အောက်က Cisco Link မှာ သွားလေ့လာနိုင်ပါတယ်။

Reference : http://www.cisco.com/c/en/us/td/docs/ios/ios_xe/wan/configuration/guide/xe_3s/wan_xe_3s_book/wan_cfg_mlppp_conn_xe.html

ပျော်ရွှင်ပါစေဗျာ။

(Be knowledgeable, pass it on then)