This site is best viewed using the updated version of Mozilla Firefox

MPLS Tables, LSR ID, Broken LSP

আসসালামু আলাইকুম। আশাকরি মহান আল্লাহতায়ালার অশেষ রহমতে আপনারা সবাই ভালো আছেন এবং MPLS এর আগের টিউটোরিয়ালটি দেখে বেসিক থিওরী ও কনফিগারেশন সঠিকভাবে সম্পন্ন করতে পেরেছেন। নিচের লিঙ্ক এর মাধ্যমে আপনারা চাইলে আগের টিউটোরিয়ালটি থেকে ঢু মেরে আসতে পারেন।

Multi Protocol Label Switching (MPLS) Fundamentals

আজকের টিউটোরিয়ালে আমরা MPLS এর কিছু খুঁটি-নাটি বিষয় নিয়ে আলোচনা করবো, যেমনঃ বিভিন্ন MPLS টেবিল, LDP Neighbor Discovery প্রসেসের সময় কিভাবে LSR ID/Transport Address কে Manipulate করা যায়, এছাড়াও আমরা MPLS Ping, MPLS Traceroute ও Broken LSP নিয়েও আলোচনা করবো ইনশা-আল্লাহ।

MPLS Table(s)

আমাদের চিত্রের টপোলজি অনুযায়ী যদি আমরা রাউটারসমূহের মধ্যে OSPF কনফিগার করি তাহলে রাউটারসমূহ প্রাথমিকভাবে নিজেদের Routing Table Lookup করে প্যাকেট ফরোয়ার্ড করবে। Routing Table Lookup করে প্যাকেট ফরোয়ার্ড করার আগে রাউটারসমূহ প্রথমে নিজেদের মধ্যে OSPF Neighbor Relationship তৈরী করবে এবং LSA আদান-প্রদানের মাধ্যমে যার যার টপোলজি টেবিল তৈরী করবে। কোন ডেষ্টিনেশন নেটওয়ার্কে পৌছানোর জন্য রাউটারের কাছে যদি একাধিক পাথ থাকে তাহলে রাউটার সবগুলো পাথকেই এই টেবিলে যোগ করবে।

এই টেবিলটিকে বলা হয় Routing Information Base বা RIB টেবিল। আমরা যদি কোন রাউটারের RIB টেবিল দেখতে চাই তাহলে নিচের কমান্ড দিতে হবে।

R2#show ip ospf 1 rib
            OSPF Router with ID (2.2.2.2) (Process ID 1)
                Base Topology (MTID 0)
OSPF local RIB
Codes: * - Best, > - Installed in global RIB
*>  1.1.1.1/32, Intra, cost 2, area 10
      via 20.0.0.2, FastEthernet0/0
*   2.2.2.2/32, Intra, cost 1, area 10, Connected
      via 2.2.2.2, Loopback0
*>  3.3.3.3/32, Intra, cost 2, area 10
      via 30.0.0.2, FastEthernet0/1
*>  4.4.4.4/32, Intra, cost 3, area 10
      via 30.0.0.2, FastEthernet0/1
*>  10.0.0.0/30, Intra, cost 2, area 10
      via 20.0.0.2, FastEthernet0/0
*   20.0.0.0/30, Intra, cost 1, area 10, Connected
      via 20.0.0.1, FastEthernet0/0
*   30.0.0.0/30, Intra, cost 1, area 10, Connected
      via 30.0.0.1, FastEthernet0/1
*>  40.0.0.0/30, Intra, cost 2, area 10
      via 30.0.0.2, FastEthernet0/1
*>  50.0.0.0/30, Intra, cost 3, area 10
      via 30.0.0.2, FastEthernet0/1

এখানে ospf 1 দ্বারা বুঝানো হয়েছে OSPF রাউটিং প্রটোকল এবং এর প্রসেস নম্বর হলো 1 (আমাদের টপোলজি অনুযায়ী)। প্রদত্ত টপোলজিতে 50.0.0.0/30 নেটওয়ার্কে যাওয়ার জন্য R2 এর যেহেতু একাধিক পাথ নেই তাই এর RIB টেবিলে একটি পাথ দেখাচ্ছে।

অতঃপর রাউটার কোন ডেষ্টিনেশন নেটওয়ার্কে প্যাকেট পৌছানোর জন্য নিজের RIB টেবিলে থাকা একাধিক পাথের (যদি একাধিক পাথ থাকে) মধ্য থেকে শুধুমাত্র বেষ্ট পাথটিকেই নিজের Forwarding Information Base বা FIB টেবিলে যুক্ত করবে। আর এই FIB টেবিল দেখেই রাউটার তার রাউটিং ডিসিশন নেয়। আমরা যদি কোন রাউটারের FIB টেবিল দেখতে চাই তাহলে নিচের কমান্ড দিতে হবে।

R2#show ip route ospf
Gateway of last resort is not set
      1.0.0.0/32 is subnetted, 1 subnets
O        1.1.1.1 [110/2] via 20.0.0.2, 00:02:53, FastEthernet0/0
      3.0.0.0/32 is subnetted, 1 subnets
O        3.3.3.3 [110/2] via 30.0.0.2, 00:02:43, FastEthernet0/1
      4.0.0.0/32 is subnetted, 1 subnets
O        4.4.4.4 [110/3] via 30.0.0.2, 00:02:43, FastEthernet0/1
      10.0.0.0/30 is subnetted, 1 subnets
O        10.0.0.0 [110/2] via 20.0.0.2, 00:02:53, FastEthernet0/0
      40.0.0.0/30 is subnetted, 1 subnets
O        40.0.0.0 [110/2] via 30.0.0.2, 00:02:43, FastEthernet0/1
      50.0.0.0/30 is subnetted, 1 subnets
O        50.0.0.0 [110/3] via 30.0.0.2, 00:02:43, FastEthernet0/1

আমরা অনেকেই এতদিন জানতাম #show ip route কমান্ডের মাধ্যমে রাউটারের Routing টেবিল দেখা যায় কিন্ত এটা প্রকৃতপক্ষে হবে Forwarding Information Base বা FIB টেবিল।

পরবর্তীতে আমরা যখন রাউটারসমূহের মধ্যে MPLS এনাবল করবো তখন রাউটারসমূহ নিজেদের মধ্যে LDP Neighbor Relationship তৈরী করবে এবং নিজেদের FIB টেবিলে থাকা প্রতিটি রাউটের সাথে একটি করে Local MPLS Label যুক্ত করবে এবং একে অন্যের সাথে সেই Local MPLS Label আদান-প্রদান করে একটি পূর্ণাঙ্গ MPLS Label ডাটবেজ তৈরী করবে। এই পূর্ণাঙ্গ MPLS Label ডাটবেজটিকে বলা হয় রাউটারের Label Information Base বা LIB টেবিল। আমরা যদি কোন রাউটারের LIB টেবিল দেখতে চাই তাহলে নিচের কমান্ড দিতে হবে।

R2#show mpls ldp bindings 50.0.0.0 30
  lib entry: 50.0.0.0/30, rev 16
        local binding:  label: 204
        remote binding: lsr: 1.1.1.1:0, label: 104
        remote binding: lsr: 3.3.3.3:0, label: 305

#show mpls ldp bindings কমান্ডের মাধ্যমে সম্পূর্ণ LIB টেবিল দেখা যায় এবং #show mpls ldp bindings 50.0.0.0 30 কমান্ডের মাধ্যমে শুধুমাত্র 50.0.0.0/30 নেটওয়ার্কের অংশটুকু ফিল্টার আকারে দেখা যায়।

একটি MPLS এনাবলড রাউটারের LIB টেবিলে কোন ডেষ্টিনেশন নেটওয়ার্কের জন্য তার LDP Neighbor গণ কি Label যোগ করেছে সেই তথ্য থাকে। উদাহরণস্বরূপঃ R2 রাউটার 50.0.0.0/30 নেটওয়ার্কের জন্য R1 এর কাছ থেকে Label পেয়েছে 104 এবং R3 এর কাছ থেকে Label পেয়েছে 305 যা তার LIB টেবিলে আছে। এখন প্রশ্ন হলো R2 যখন MPLS Label দেখে দেখে প্যাকেট ফরোয়ার্ড করবে তখন ইহা 50.0.0.0/30 নেটওয়ার্কে প্যাকেট পাঠানোর সময় কোন Label টি কে Outgoing Label হিসেবে ব্যবহার করবে। প্রকৃতপক্ষে রাউটার এই সিদ্ধান্তটি নেয় নিজের FIB টেবিলে থাকা বেষ্ট পাথের তথ্যের উপর ভিত্তি করে। এখানে যদি আমরা R2 এর FIB টেবিল দেখি তাহলে দেখতে পাবো যে, 50.0.0.0/30 নেটওয়ার্কে পৌছানোর জন্য এর বেষ্ট পাথ একটি এবং Nexthop হলো 30.0.0.2 (অর্থাৎ R3)। তাই এক্ষেত্রে R2 রাউটার R3 এর কাছ থেকে প্রাপ্ত 305 Label টি কে Outgoing Label হিসেবে নির্বাচন করবে এবং তা নিজের MPLS Forwarding Table এ যুক্ত করবে। এই MPLS Forwarding Table টি কে রাউটারের Label Forwarding Information Base বা LFIB টেবিল বলে। আমরা যদি কোন রাউটারের LFIB টেবিল দেখতে চাই তাহলে নিচের কমান্ড দিতে হবে।

R2#show mpls forwarding-table 50.0.0.0 30
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
Label      Label      or Tunnel Id     Switched      interface
204        305        50.0.0.0/30      0             Fa0/1      30.0.0.2

#show mpls forwarding-table কমান্ডের মাধ্যমে সম্পূর্ণ LFIB টেবিল দেখা যায় এবং #show mpls forwarding-table 50.0.0.0 30 কমান্ডের মাধ্যমে শুধুমাত্র 50.0.0.0/30 নেটওয়ার্কের অংশটুকু ফিল্টার আকারে দেখা যায়।

এছাড়াও Cisco রাউটারসমূহে আরও একটি গুরূত্বপূর্ণ টেবিল রয়েছে, সেটি হলো CEF টেবিল। CEF এর পূর্ণরূপ হলো Cisco Express Forwaring । Cisco রাউটারসমূহে CEF হলো এমন একটি ফিচার যার মাধ্যমে রাউটার তার FIB বা LFIB এর তথ্যের উপর ভিত্তি করে কোন নেটওয়ার্কে যাওয়ার জন্য বেষ্ট পাথ/বেষ্ট Outgoing Label টি কে Cache করে রাখে। অর্থাৎ কোন একটি নির্দিষ্ট নেটওয়ার্কে প্যাকেট ফরোয়ার্ড করার জন্য রাউটার প্রতিবার Routing Table Lookup বা MPLS Forwarding Table চেক করে না। ইহা শুধুমাত্র তার রাউটিং Cache বা CEF টেবিলের তথ্য অনুযায়ী প্যাকেট ফরোয়ার্ড করে। এতে রাউটারের প্যাকেট ফরোয়ার্ডিং এফিসিয়েন্সি উল্লেখযোগ্য হারে বৃদ্ধি পায়। আমরা যদি কোন রাউটারের CEF টেবিল দেখতে চাই তাহলে নিচের কমান্ড দিতে হবে।

R2#show ip cef 50.0.0.0 detail
50.0.0.0/30, epoch 0
  local label info: global/204
  nexthop 30.0.0.2 FastEthernet0/1 label 305

#show ip cef কমান্ডের মাধ্যমে সম্পূর্ণ CEF টেবিল দেখা যায় এবং #show ip cef 50.0.0.0 detail কমান্ডের মাধ্যমে শুধুমাত্র 50.0.0.0/30 নেটওয়ার্কের অংশটুকু ফিল্টার আকারে দেখা যায়।

যে Cisco রাউটারসমূহ এই CEF ফিচার সাপোর্ট করে সেই রাউটারসমূহে এটি এনাবল করা থাকে। যদি কোন কারণে তা এনাবল করা না থাকে তাহলে নিচের কমান্ডের মাধ্যমে এনাবল করতে হবে।

R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#ip cef

Recap:

RIB = Routing Information Base (এখানে সব Available IP Route পাথ থাকে)

FIB = Forwarding Information Base (এখানে শুধুমাত্র Best IP Route পাথ থাকে)

LIB = Label Information Base (এখানে সব MPLS Label এর তথ্য থাকে)

LFIB = Label Forwarding Information Base (এখানে শুধুমাত্র MPLS Outgoing Label এর তথ্য থাকে)

CEF = Cisco Express Forwarding (এখানে Best IP Route/MPLS Outgoing Label এর তথ্য Cache আকারে থাকে, যাতে বার বার FIB বা LFIB চেক করতে না হয়।)


Manipulating MPLS LSR ID/Transport Address

আগের টিউটিারিয়ালে আমরা দেখেছিলাম কিভাবে দুইটি MPLS এনাবলড রাউটার নিজেদের মধ্যে LDP Neighbor Relationship তৈরী করে। LDP Neighbor Relationship তৈরী করার জন্য দুইটি রাউটার প্রথমে নিজেদের মধ্যে Hello Message আদান-প্রদান করে।

প্রথমে R1 রাউটার R2 এর কাছে একটি Hello ম্যাসেজ পাঠায়। যার সোর্স আই.পি 10.0.0.1 (যা R1 এর নিজের আই.পি) এবং ডেষ্টিনেশন আই.পি 224.0.0.2 (যা একটি All Router’s Multicast আই.পি)। যার সোর্স পোর্ট UDP 646 এবং ডেষ্টিনেশন পোর্টও UDP 646 । এই Hello ম্যাসেজের মধ্যে R1 এর Label Switch Router ID (LSR ID) থাকে। এই LSR ID টি রাউটারের Transport এ্যাড্রেস হিসেবেও ব্যবহৃত হয়। এখানে R1 এর LSR ID বা Transport এ্যাড্রেস হলো 1.1.1.1 যা ইহার Highest Loopback IP । এভাবে Hello ম্যাসেজ আদান প্রদান করে যখন দুইটি রাউটার একে অন্যের সাথে পরিচিত হয় তখন এরা নিজেদের LSR ID এর উপর ভিত্তি করে Active LDP Router/Passive LDP Router মুডে গমন করে। এখানে R1 এর LSR ID হলো 1.1.1.1 এবং R2 এর LSR ID হলো 2.2.2.2 । যার LSR ID বড় সে হয় Active LDP Router এবং যার LSR ID ছোট সে হয় Passive LDP Router । আমাদের টপোলজি অনুযায়ী R1 ও R2 এর মধ্যে R2 এর LSR ID বড়, তাই R2 হবে Active LDP Router এবং R1 হবে Passive LDP Router ।

এখানে যেহেতু R2 হলো Active LDP Router তাই এটিই প্রথমে R1 এর সাথে TCP 3-Way Handshake শুরু করে। অতঃপর পরবর্তী ধাপসমূহ একে একে সম্পন্ন হয় যা আগের টিউটোরিয়ালে বর্ণণা করা হয়েছে।

কোন একটি MPLS রাউটারের LSR ID বা Transport এ্যাড্রেস কি হবে তা নিম্নরূপে নির্ধারিত হয়ঃ

১. যদি রাউটারের মধ্যে LSR ID ম্যানুয়ালী কনফিগার করা থাকে তাহলে সেটাই হবে ঐ রাউটারের LSR ID বা Transport এ্যাড্রেস।

২. যদি রাউটারের মধ্যে LSR ID ম্যানুয়ালী কনফিগার করা না থাকে তাহলে, ঐ রাউটারের মধ্যে কনফিগার করা Highest Loopback আই.পি টিই হবে ঐ রাউটারের LSR ID বা Transport এ্যাড্রেস।

৩. আবার যদি রাউটারের মধ্যে কোন Loopback আই.পিও কনফিগার করা না থাকে তাহলে ঐ রাউটারের মধ্যে কনফিগার করা Highest Physical আই.পি টিই হবে ঐ রাউটারের LSR ID বা Transport এ্যাড্রেস।

এখানে, রাউটার R1 এ LSR ID ম্যানুয়ালী কনফিগার করা হয় নি, তাই রাউটারে কনফিগার করা একমাত্র Loopback আই.পি 1.1.1.1 ই হলো R1 এর LSR ID বা Transport এ্যাড্রেস। একইভাবে R2 এর LSR ID বা Transport এ্যাড্রেস হলো 2.2.2.2 ।

আমরা যদি R1 রাউটারে নিচের কমান্ড দিই তাহলে বিস্তারিত দেখতে পাবো।

R1#show mpls ldp neighbor detail
    Peer LDP Ident: 2.2.2.2:0; Local LDP Ident 1.1.1.1:0
        TCP connection: 2.2.2.2.11070 - 1.1.1.1.646
        Password: not required, none, in use
        State: Oper; Msgs sent/rcvd: 17/17; Downstream; Last TIB rev sent 10
        Up time: 00:08:33; UID: 1; Peer Id 0
        LDP discovery sources:
          FastEthernet0/1; Src IP addr: 20.0.0.1
            holdtime: 15000 ms, hello interval: 5000 ms
        Addresses bound to peer LDP Ident:
          20.0.0.1        2.2.2.2         30.0.0.1
        Peer holdtime: 180000 ms; KA interval: 60000 ms; Peer state: estab

এখানে R1 এর LSR ID হলো 1.1.1.1 (Local LDP Ident) এবং এর LDP Neighbor R2 এর LSR ID হলো 2.2.2.2 (Peer LDP Ident) । R1 ও R2 এর মধ্যে যেহেতু R2 এর LSR ID টি বড় তাই এটি Active LDP Router এবং ইহা TCP 3-WAY Handshake এর সূচনা করেছে। এসময় R2 একটি র‌্যান্ডমলী জেনারেট করা সোর্স পোর্ট TCP 11070 এবং ফিক্সড ডেষ্টিনেশন পোর্ট TCP 646 ব্যবহার করে R1 এর সাথে TCP 3-WAY Handshake এর সূচনা করেছে।

আমরা চাইলে R1 এর LSR ID টি ম্যানুয়ালী কনফিগার করে R2 এর LSR ID থেকে বড় করতে পারি।

R1#conf t
R1(config)#mpls ldp router-id fastEthernet 0/1 force
R1(config)#exit
*Jun  5 20:51:28.599: %LDP-5-INFO: default: LDP ID removed
*Jun  5 20:51:28.635: %LDP-5-NBRCHG: LDP Neighbor 2.2.2.2:0 (1) is DOWN
(LDP Router ID changed)
*Jun  5 20:51:33.847: %LDP-5-NBRCHG: LDP Neighbor 2.2.2.2:0 (1) is UP

এখানে R1 এর FE0/1 ইন্টারফেসের আই.পি 20.0.0.2 কে এর LSR ID হিসেবে কনফিগার করা হলো (ফোর্সলী)। এতে করে রাউটারদ্বয়ের মধ্যে LDP Neighbor Relationship ডাউন হয়ে নতুন করে Established হয়েছে।

R1#show mpls ldp neighbor detail
    Peer LDP Ident: 2.2.2.2:0; Local LDP Ident 20.0.0.2:0
        TCP connection: 2.2.2.2.646 - 20.0.0.2.32961
        Password: not required, none, in use
        State: Oper; Msgs sent/rcvd: 8/8; Downstream; Last TIB rev sent 10
        Up time: 00:00:20; UID: 2; Peer Id 0
        LDP discovery sources:
          FastEthernet0/1; Src IP addr: 20.0.0.1
            holdtime: 15000 ms, hello interval: 5000 ms
        Addresses bound to peer LDP Ident:
          20.0.0.1        2.2.2.2         30.0.0.1
        Peer holdtime: 180000 ms; KA interval: 60000 ms; Peer state: estab

এখন R1 ও R2 এর মধ্যে যেহেতু R1 এর LSR ID টি বড় তাই এটিই TCP 3-WAY Handshake এর সূচনা করেছে। এসময় R1 একটি র‌্যান্ডমলী জেনারেট করা সোর্স পোর্ট TCP 32961 এবং ফিক্সড ডেষ্টিনেশন পোর্ট TCP 646 ব্যবহার করে R2 এর সাথে TCP 3-WAY Handshake এর সূচনা করেছে।

আমরা চাইলে কোন রাউটারের বিভিন্ন ইন্টারফেসের আ্ই.পি কে বিভিন্ন রাউটারের সাথে LDP Neighbor Relationship তৈরী করার জন্য Transport এ্যাড্রেস হিসেবে ব্যবহার করতে পারি। যেমনঃ এখানে R2 এর দুইটি LDP Neighbor আছে R1 এবং R3 । উভয় রাউটারের সাথে LDP Neighbor Relationship তৈরীর ক্ষেত্রে R2 তার Loopback এর আই.পি 2.2.2.2 কে Transport এ্যাড্রেস হিসেবে ব্যবহার করেছে। আমরা যদি এরকম চাই যেমনঃ R2 যখন R1 এর সাথে LDP Neighbor Relationship তৈরী করবে তখন তার Transport এ্যাড্রেস হবে 20.0.0.1 (FE0/0 এর আই.পি) এবং যখন R3 এর সাথে LDP Neighbor Relationship তৈরী করবে তখন তার Transport এ্যাড্রেস হবে 30.0.0.1 (FE0/1এর আই.পি) তাহলে নিম্নোক্তভাবে কনফিগার করতে হবে। একে Per Interface Transport Address বলে। যদি কোন কারণে রাউটারের Loopback আই.পি IGP তে Advertise করার ক্ষেত্রে কোন সমস্যা থাকে তবে সেক্ষেত্রে এরকম Per Interface Transport Address কনফিগার করার প্রয়োজন হতে পারে।

R2#conf t
R2(config)#interface fastEthernet 0/0
R2(config-if)#mpls ldp discovery transport-address interface
R2(config-if)#exit
*Jun  5 21:29:36.691: %LDP-5-NBRCHG: LDP Neighbor 20.0.0.2:0 (2) is DOWN (Received
error notification from peer: Holddown time expired)
*Jun  5 21:29:40.943: %LDP-5-NBRCHG: LDP Neighbor 20.0.0.2:0 (2) is UP

R2(config)#interface fastEthernet 0/1
R2(config-if)#mpls ldp discovery transport-address interface
R2(config-if)#exit
*Jun  5 21:30:04.239: %LDP-5-NBRCHG: LDP Neighbor 3.3.3.3:0 (1) is DOWN (Received
error notification from peer: Holddown time expired)
*Jun  5 21:30:06.951: %LDP-5-NBRCHG: LDP Neighbor 3.3.3.3:0 (3) is UP

MPLS কনফিগারেশনের সময় LSR ID ম্যানিপুলেট করার ক্ষেত্রে বিশেষভাবে সতর্ক থাকা উচিত। LSR ID ভূলভাবে কনফিগার করা হলে বা দুইটি রাউটারের LSR ID এর আই.পিসমূহের মধ্যে সঠিকভাবে আই.পি রাউটিং করা না থাকলে রাউটারদ্বয়ের মধ্যে কখনোই LDP Neighbor Relationship তৈরী হবে না। তাই খুব বেশি প্রয়োজন না হলে এবং এ্যাডমিনিষ্ট্রেটরের স্কিল খুব ভালো না থাকলে LSR ID ম্যানিপুলেট করা থেকে বিরত থাকাই ভালো।

Broken Label Switch Path

আমরা আগের টিউটোরিয়ালেই দেখেছিলাম কিভাবে একটি আই.এস.পি নেটওয়ার্কে MPLS এনাবল করতে হয়। আই.এস.পি এর কোর রাউটারসমূহে MPLS এনাবল করার পর সবকিছু ঠিক থাকলে ক্লায়েন্ট তার এক লোকেশনের রাউটার থেকে আরেক লোকেশনের রাউটারে Ping দিয়ে কানেক্টিভিটি চেক করতে পারবে। এছাড়াও ক্লায়েন্ট যদি তার এক রাউটার থেকে আরেক রাউটারে Traceroute দেয় তাহলে Traceroute রিপোর্টে আই.এস.পি এর ট্রান্সমিশন পাথের রাউটারগুলোর আই.পি এর পাশাপাশি MPLS Label গুলোও দেখা যাবে। আর এই MPLS Label দেখে ক্লায়েন্ট বুঝতে পারবে যে, তার সার্ভিস প্রোভাইডারের নেটওয়ার্কে MPLS এনাবল করা আছে।

C1-A#ping 50.0.0.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 50.0.0.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 48/100/120 ms

C1-A#traceroute 50.0.0.2
Type escape sequence to abort.
Tracing the route to 50.0.0.2
  1 10.0.0.1 56 msec 28 msec 40 msec
  2 20.0.0.1 [MPLS: Label 204 Exp 0] 88 msec 76 msec 80 msec
  3 30.0.0.2 [MPLS: Label 305 Exp 0] 112 msec 56 msec 52 msec
  4 40.0.0.2 96 msec 96 msec 88 msec
  5 50.0.0.2 128 msec 76 msec 112 msec

অনেক সময় আই.এস.পি এর MPLS এনাবলড রাউটারসমূহের মধ্যে বিভিন্ন সমস্যা দেখা দিতে পারে, কোন রাউটারে MPLS ডিসএ্যাবল হয়ে যেতে পারে, সেক্ষেত্রে আই.এস.পি নেটওয়ার্কে বিভিন্ন ট্রাবলশুট করতে হয়। আমরা এখন MPLS পাথ ভেরিফিকেশনের দুইটি প্রয়োজনীয় কমান্ড নিয়ে আলোচনা করবো।

প্রথমে আমরা আই.এস.পি এর R1 রাউটার থেকে R4 রাউটারে কানেক্টিভিটি চেক করে নেই।

R1#ping 4.4.4.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 64/83/96 ms

R1#traceroute 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 20.0.0.1 [MPLS: Label 202 Exp 0] 148 msec 104 msec 140 msec
  2 30.0.0.2 [MPLS: Label 304 Exp 0] 136 msec 180 msec 80 msec
  3 40.0.0.2 180 msec 192 msec 176 msec

ধরি, কোন কারণে আই.এস.পি এর R2 রাউটারে MPLS কাজ করছে না বা MPLS বন্ধ হয়ে গেছে। (পরীক্ষামূলকভাবে আমরা R2 রাউটারে MPLS বন্ধ করে রাখবো।)

R2#conf t
R2(config)#no mpls ip
*Jun 10 22:34:31.199: %LDP-5-NBRCHG: LDP Neighbor 1.1.1.1:0 (1) is DOWN
(LDP unconfigured globally)
*Jun 10 22:34:31.211: %LDP-5-NBRCHG: LDP Neighbor 3.3.3.3:0 (2) is DOWN
(LDP unconfigured globally)

এখন R1 রাউটার থেকে R4 রাউটারের কানেক্টিভিটি চেক করার জন্য Ping দিলে Ping পাওয়া যাবে। কারণ R2 রাউটারে MPLS বন্ধ থাকলেও প্যাকেট ফরোয়ার্ড করার ক্ষেত্রে কোন সমস্যা হবে না। এক্ষেত্রে R2 রাউটার LFIB এর পরিবর্তে শুধুমাত্র FIB টেবিল Lookup করে প্যাকেট ফরোয়ার্ড করবে। এবং Traceroute রিপোর্টে শুধুমাত্র রাউটারের আই.পি দেখা যাবে কিন্তু এর সাথে কোন MPLS Label দেখাবে না। একে Broken Label Switch Path বলে।

R1#ping 4.4.4.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 84/90/96 ms

R1#traceroute 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 20.0.0.1 36 msec 40 msec 44 msec
  2 30.0.0.2 76 msec 36 msec 56 msec
  3 40.0.0.2 112 msec 104 msec 76 msec

নেটওয়ার্কে কোন কারণে এই Broken Label Switch Path থাকলে সাধারণ Ping কমান্ডের মাধ্যমে তা ধরা যায় না। এখানে সাধারণ Ping কমান্ডের মাধ্যমে কানেক্টিভিটি ঠিকই Okay দেখাচ্ছে। এক্ষেত্রে আমরা MPLS Ping কমান্ডের মাধ্যমে Label Switch Path চেক করতে পারি।

R1#ping mpls ipv4 4.4.4.4/32 repeat 5 verbose
Sending 5, 100-byte MPLS Echos to 4.4.4.4/32,
     timeout is 2 seconds, send interval is 0 msec:
Type escape sequence to abort.
Q    size 100
Q    size 100
Q    size 100
Q    size 100
Q    size 100
Success rate is 0 percent (0/5)
 Total Time Elapsed 124 ms

এখানে, MPLS Ping কমান্ডের আউটপুট দেখে সহজেই বুঝা যাচ্ছে যে, নেটওয়ার্কে Broken Label Switch Path আছে। আউটপুটে "Q" দ্বারা বুঝাচ্ছে "request not sent" অর্থাৎ LSP তে ঝামেলা আছে।

আবার MPLS Traceoute কমান্ডের মাধ্যমেও Broken LSP চেক করা যায়।

R1#traceroute mpls ipv4 4.4.4.4/32 verbose
Tracing MPLS Label Switched Path to 4.4.4.4/32, timeout is 2 seconds
Type escape sequence to abort.
  0 0.0.0.0 0.0.0.0 MRU 0 [No Label]
Q 1 *

এখন যদি R2 রাউটারে আবার MPLS এনাবল করা হয় তাহলে, R1 রাউটারের MPLS Ping ও MPLS Traceoute কমান্ডের আউটপুটও Okay দেখাবে।

R2#conf t
R2(config)#mpls ip
*Jun 10 22:41:57.607: %LDP-5-NBRCHG: LDP Neighbor 1.1.1.1:0 (1) is UP
*Jun 10 22:41:58.187: %LDP-5-NBRCHG: LDP Neighbor 3.3.3.3:0 (2) is UP
R1#ping mpls ipv4 4.4.4.4/32 repeat 5 verbose
Sending 5, 100-byte MPLS Echos to 4.4.4.4/32,
     timeout is 2 seconds, send interval is 0 msec:
Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
  'L' - labeled output interface, 'B' - unlabeled output interface,
  'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
  'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,
  'P' - no rx intf label prot, 'p' - premature termination of LSP,
  'R' - transit router, 'I' - unknown upstream index,
  'l' - Label switched with FEC change, 'd' - see DDMAP for return code,
  'X' - unknown return code, 'x' - return code 0
Type escape sequence to abort.
!    size 100, reply addr 40.0.0.2, return code 3
!    size 100, reply addr 40.0.0.2, return code 3
!    size 100, reply addr 40.0.0.2, return code 3
!    size 100, reply addr 40.0.0.2, return code 3
!    size 100, reply addr 40.0.0.2, return code 3

Success rate is 100 percent (5/5), round-trip min/avg/max = 104/120/136 ms
 Total Time Elapsed 728 ms
R1#traceroute mpls ipv4 4.4.4.4/32 verbose
Tracing MPLS Label Switched Path to 4.4.4.4/32, timeout is 2 seconds
Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
  'L' - labeled output interface, 'B' - unlabeled output interface,
  'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
  'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,
  'P' - no rx intf label prot, 'p' - premature termination of LSP,
  'R' - transit router, 'I' - unknown upstream index,
  'l' - Label switched with FEC change, 'd' - see DDMAP for return code,
  'X' - unknown return code, 'x' - return code 0
Type escape sequence to abort.
  0 20.0.0.2 20.0.0.1 MRU 1500 [Labels: 201 Exp: 0]
L 1 20.0.0.1 30.0.0.2 MRU 1500 [Labels: 304 Exp: 0] 80 ms, ret code 8
L 2 30.0.0.2 40.0.0.2 MRU 1504 [Labels: implicit-null Exp: 0] 108 ms, ret code 8
! 3 40.0.0.2 116 ms, ret code 3

আই.এস.পি এর কোর নেটওয়ার্কে Broken LSP থাকলে ক্লায়েন্ট তার Traceroute রিপোর্টে আই.পি এর সাথে MPLS Label না দেখতে পেলে বুঝতে পারবে যে, তার সার্ভিস প্রোভাইডারের নেটওয়ার্কে কোন ঝামেলা আছে এবং এ নিয়ে ক্লায়েন্ট নিজেই তার সার্ভিস প্রোভাইডারের সাথে ঝামেলা শুরু করবে। একারণে আই.এস.পি চাইলে তার কোর রাউটারসমূহে MPLS TTL Propagation ডিসএ্যাবল করে রাখতে পারে (বাই ডিফল্ট এটি এনাবল থাকে)। আই.এস.পি এর কোর রাউটারসমূহে MPLS TTL Propagation ডিসএ্যাবল থাকলে আই.এস.পি এর নেটওয়ার্কে Broken LSP থাকুক বা না থাকুক, ক্লায়েন্ট তা বুঝতে পারবে না। কারণ, এক্ষেত্রে ক্লায়েন্টের Traceroute রিপোর্টে কখনোই আই.পি এর সাথে MPLS Label দেখাবে না।

R1#conf
R1(config)#no mpls ip propagate-ttl
R1(config)#exit
R2#conf t
R2(config)#no mpls ip propagate-ttl
R2(config)#exit
R3#conf t
R3(config)#no mpls ip propagate-ttl
R3(config)#exit
R4#conf t
R4(config)#no mpls ip propagate-ttl
R4(config)#exit
C1-A#traceroute 50.0.0.2
Type escape sequence to abort.
Tracing the route to 50.0.0.2
  1 10.0.0.1 64 msec 44 msec 20 msec
  2 40.0.0.2 88 msec 80 msec 68 msec
  3 50.0.0.2 96 msec 88 msec 68 msec

এক্ষেত্রে আই.এস.পি তার ক্লায়েন্টকে আগে থেকেই বলে রাখতে পারে যে, আমাদের নেটওয়ারর্কে MPLS এ কোন সমস্যা নেই কিন্তু আমরা আমাদের ইন্টার্নাল পলিসি অনুযায়ী MPLS TTL Propagation ডিসএ্যাবল রেখেছি।

আশাকরি এই টিউটোরিয়ালটি দেখে আপনারা MPLS Tables, LSR ID Manipulation ও Broken LSP সম্পর্কে কিছু ধারণা পাবেন। ভাল থাকবেন, আল্লাহ হাফেজ।