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

Configuring MPLS Layer-3 VPN

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

Multi Protocol Label Switching (MPLS) Fundamentals

MPLS Tables, LSR ID, Broken LSP

আজকের টিউটোরিয়ালে আমরা MPLS এর একটি চমৎকার ফিচার নিয়ে আলোচনা করবো, আর সেটি হলো MPLS L3 VPN ।

আমাদের চিত্রের টপোলজি অনুযায়ী, ধরি, আই.এস.পি এর একটি ক্লায়েন্ট ABC তার দুইটি ভিন্ন লোকেশনের মধ্যে (ABC-1 ও ABC-2) ডাটা আদান-প্রদানের জন্য আই.এস.পি এর কাছ থেকে ডাটা কানেক্টিভিটি নিয়েছে। ABC-1 আই.এস.পি এর R1 রাউটারের সাথে যুক্ত যার পয়েন্ট-টু-পয়েন্ট আই.পি 10.0.0.0/30 এবং ABC-1 এর ল্যান সাইডের আই.পি 192.168.10.0/24। অন্যদিকে, ABC-2 আই.এস.পি এর R4 রাউটারের সাথে যুক্ত যার পয়েন্ট-টু-পয়েন্ট আই.পি 50.0.0.0/30 এবং ABC-2 এর ল্যান সাইডের আই.পি 172.16.10.0/24। এখানে ডাটা আদান-প্রদানের জন্য ক্লায়েন্টের দুই লোকেশনের আই.পি.গুলো (192.168.10.0/24 ও 172.16.10.0/24) আই.এস.পি রাউটিং করে দিবে। রাউটিং ও অন্যান্য কনফিগারেশন ঠিক থাকলে ক্লায়েন্ট তার ABC-1 ও ABC-2 লোকেশনের মধ্যে ডাটা আদান-প্রদান করতে পারবে।

ধরি, পরবর্তীতে আরো একটি ক্লায়েন্ট XYZ আসলো আই.এস.পি এর কাছ থেকে ডাটা কানেক্টিভিটি নেওয়ার জন্য এবং তাদের আই.পি রিকোয়ার্মেন্টও ABC এর মতো। অর্থাৎ ক্লায়েন্ট XYZ এর XYZ-1 লোকেশনের পয়েন্ট-টু-পয়েন্ট আই.পি 10.0.0.0/30 এবং ল্যান সাইডের আই.পি 192.168.10.0/24। আবার XYZ-2 লোকেশনের পয়েন্ট-টু-পয়েন্ট আই.পি 50.0.0.0/30 এবং ল্যান সাইডের আই.পি 172.16.10.0/24। যেহেতু ABC এবং XYZ ক্লায়েন্টদ্বয়ের আই.পি রিকোয়ার্মেন্ট একই রকম তাই আই.এস.পি নেটওয়ার্কে ট্রাডিশনাল আই.পি রাউটিং দিয়ে তা পূরণ করা সম্ভব নয়। ট্রাডিশনাল আই.পি রাউটিং এর ক্ষেত্রে আই.এস.পি রাউটারের রাউটিং টেবিলে এক ক্লায়েন্টের রাউটিং ইনফরমেশন আরেক ক্লায়েন্টের রাউটিং ইনফরমেশনের সাথে ওভারল্যাপ করবে এবং ক্লায়েন্টদের ট্রাফিক আদান-প্রদান বিঘ্নিত হবে। এই সমস্যা থেকে সমাধানের উপায় হিসেবে এবং উভয় ক্লায়েন্টের রিকোয়ার্মেন্ট পূরণ করার জন্য আই.এস.পি এর MPLS এনাবলড নেটওয়ার্কে MPLS L3 VPN কনফিগার করা হয়।

MPLS L3 VPN হলো এমন এক ধরণের টেকনিক যার মাধ্যমে আই.এস.পি এর PE রাউটার R1 তার সাথে যুক্ত ABC-1 ও XYZ-1 এর রাউটিং টেবিল সম্পূর্ণ আলাদা রাখে। এক্ষেত্রে রাউটিং টেবিল আলাদা রাখার জন্য R1 রাউটার তার নিজের মধ্যে একাধিক VRF তৈরী করে। VRF এর পূর্ণরূপ হলো Virtual Routing and Forwarding । VRF হলো একটি ফিজিক্যাল রাউটারের মধ্যে থাকা একটি ভার্চুয়াল রাউটার। (আমরা একটি ফিজিক্যাল কম্পিউটারের মধ্যে VMWare দিয়ে যেভাবে একাধিক ভার্চুয়াল হোষ্ট কনফিগার করি ঠিক সেরকমই)। একটি ফিজিক্যাল রাউটারের মধ্যে একাধিক VRF তৈরী করা যায় এবং প্রতিটি VRF সম্পূর্ণ আলাদাভাবে পৃথক পৃথক ক্লায়েন্টের জন্য রাউটিং টেবিল মেইনটেইন করতে পারে এবং এক ক্লায়েন্টের রাউটিং ইনফরমেশন আরেক ক্লায়েন্টের রাউটিং ইনফরমেশনের সাথে ওভারল্যাপ করে না। (অর্থাৎ এখানে রাউটার একটি, কিন্তু এটি লজিক্যালী দুই বা ততোধিক রাউটার হিসেবে কাজ করে।) একইভাবে R4 রাউটারেও VRF তৈরীর মাধ্যমে ABC-2 ও XYZ-2 এর রাউটিং ইনফরমেশন সম্পূর্ণ আলাদা রাখা হয়।

দুইটি PE (R1 ও R4) রাউটারে কনফিগারকৃত VRF এর মধ্যে থাকা রাউটসমূহ রাউটারদ্বয়ের মধ্যে শেয়ার করার জন্য VPN Route ব্যবহার করা হয়। আরো সুনির্দিষ্টভাবে বলতে গেলে IPv4 এর ক্ষেত্রে VPNv4 Route এর মাধ্যমে R1 এর VRF সমূহের রাউটসমূহ R4 এর VRF সমূহে পাঠানো হয়। এখানে VPN Route বলতে R1 ও R4 এর মধ্যে কোন Tunnel বা Encryption বুঝানো হয় নি, VPN Route দ্বারা এটিই বুঝানো হচ্ছে যে, ক্লায়েন্টদের রাউটিং ইনফরমেশনগুলো লজিক্যালী আলাদা রাখা।

দুইটি PE (R1 ও R4) রাউটারের মধ্যে VPNv4 Route আদান-প্রদান করতে হলে রাউটারদ্বয়ের মধ্যে MBGP কনফিগার করতে হয়। MBGP এর পূর্ণরূপ হলো MultiProtocol BGP । MBGP এমন এক ধরণের প্রটোকল যার মাধ্যমে বিভিন্ন ধরণের যেমনঃ IPv4, IPv6, VPNv4, VPNv6 ইত্যাদি ট্রাফিক একই সাথে হ্যান্ডল করা যায়।

সমগ্র প্রক্রিয়াটির চুম্বক অংশ নিচে দেওয়া হলোঃ

১. প্রথমে ABC-1 রাউটার R1 এর কাছে নিজের রাউটিং ইনফরমেশন (192.168.10.0/24) পাঠাবে। আবার XYZ-1ও রাউটার R1 এর কাছে নিজের রাউটিং ইনফরমেশন (192.168.10.0/24) পাঠাবে।

২. এক্ষেত্রে R1 দুইটি আলাদা VRF 101:ABC ও 102:XYZ এর মধ্যে যথাক্রমে ABC-1 ও XYZ-1 এর রাউটিং ইনফরমেশন রাখবে। (এখানে 101:ABC ও 102:XYZ হলো দুইটি VRF এর নাম যা R1 রাউটারের জন্য Locally Significant এবং সব PE রাউটারে একই হওয়া জরুরী নয়।)

৩. R1 তার VRF 101:ABC ও 102:XYZ এর মধ্যে রাখা রাউটিং ইনফরমেশন MBGP তে VPNv4 Route হিসেবে Export করবে। এখানে Export শব্দটি দ্বারা বুঝানো হয়েছে রাউটসমূহ VRF থেকে MBGP তে যাবে। যদি কখনো রাউটসমূহ MBGP থেকে VRF এ যায় তাহলে তাকে Import বলে। এখানে R1 রাউটার VPNv4 Route সমূহ Export করার সময় এর সাথে Route Distinguisher (RD)/Route Target (RT) যোগ করবে। এখানে RD ও RT দ্বারাই রাউটার বুঝতে পারে কোন রাউটটি কোন ক্লায়েন্টের জন্য। পরবর্তীতে RD ও RT সম্পর্কে আলোচনা করা হবে।

৪. অতঃপর R1 রাউটার MBGP এর মাধ্যমে VPNv4 Route সমূহকে R4 এর কাছে পাঠাবে।

৫. R4 রাউটার MBGP এর মাধ্যমে VPNv4 Route সমূহ রিসিভ করে নির্দিষ্ট RD ও RT এর ভিত্তিতে নির্দিষ্ট ক্লায়েন্টের VRF এ Import করবে।

৬. সবশেষে রাউটসমূহ R4 রাউটারের VRF থেকে ABC-2 ও XYZ-2 রাউটারে যাবে।

পক্ষান্তরে, ঠিক একই প্রক্রিয়ায় ABC-2 ও XYZ-2 এর রাউটসমূহও যথাক্রমে ABC-1 ও XYZ-1 রাউটারের কাছে আসবে। MPLS L3 VPN এর মাধ্যমে বিভিন্ন ক্লায়েন্টদের রাউটিং ইনফরমেশন মূলত এভাবেই শেয়ার করা হয়।

MPLS L3 VPN কনফিগার করার জন্য বেশ কয়েকটি ধাপ অনুসরণ করতে হয়। যেমনঃ

i) PE রাউটারসমূহের মধ্যে MBGP কনফিগার করা। (MBGP কনফিগার করার আগে PE রাউটারসমূহের মধ্যে আবার iBGP কনফিগার করতে হবে।)

ii) PE রাউটারসমূহের মধ্যে VRF তৈরী করা।

iii) PE ও CE রাউটারসমূহের মধ্যে ডাইনামিক রাউটিং কনফিগার করা।

iv) VRF ও MBGP এর মধ্যে রাউটসমূহ Export ও Import করা।

v) এবং সবশেষে End-to-End কানেক্টিভিটি চেক করা।

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

R1#conf t
R1(config)#interface fastEthernet 0/1
R1(config-if)#ip address 20.0.0.2 255.255.255.252
R1(config-if)#no shutdown
R1(config-if)#description R2
R1(config-if)#exit
R1(config)#interface loopback 0
R1(config-if)#ip address 1.1.1.1 255.255.255.255
R1(config-if)#exit
R2#conf t
R2(config)#interface fastEthernet 0/0
R2(config-if)#ip address 20.0.0.1 255.255.255.252
R2(config-if)#no shutdown
R2(config-if)#description R1
R2(config-if)#exit
R2(config)#interface fastEthernet 0/1
R2(config-if)#ip address 30.0.0.1 255.255.255.252
R2(config-if)#no shutdown
R2(config-if)#description R3
R2(config-if)#exit
R2(config)#interface loopback 0
R2(config-if)#ip address 2.2.2.2 255.255.255.255
R2(config-if)#exit
R3#conf t
R3(config)#interface fastEthernet 0/0
R3(config-if)#ip address 30.0.0.2 255.255.255.252
R3(config-if)#no shutdown
R3(config-if)#description R2
R3(config-if)#exit
R3(config)#interface fastEthernet 0/1
R3(config-if)#ip address 40.0.0.1 255.255.255.252
R3(config-if)#no shutdown
R3(config-if)#description R4
R3(config-if)#exit
R3(config)#interface loopback 0
R3(config-if)#ip address 3.3.3.3 255.255.255.255
R3(config-if)#exit
R4#conf t
R4(config)#interface fastEthernet 0/0
R4(config-if)#ip address 40.0.0.2 255.255.255.252
R4(config-if)#no shutdown
R4(config-if)#description R3
R4(config-if)#exit
R4(config)#interface loopback 0
R4(config-if)#ip address 4.4.4.4 255.255.255.255
R4(config-if)#exit

অতঃপর আমরা আই.এস.পি এর কোর রাউটারসমূহের মধ্যে IGP হিসেবে OSPF কনফিগার করবো। এখানে ক্লায়েন্ট রাউটারে কোন OSPF থাকবে না।

R1#conf t
R1(config)#router ospf 1
R1(config-router)#network 20.0.0.0 0.0.0.3 area 10
R1(config-router)#network 1.1.1.1 0.0.0.0 area 10
R1(config-router)#exit
R2#conf t
R2(config)#router ospf 1
R2(config-router)#network 20.0.0.0 0.0.0.3 area 10
R2(config-router)#network 30.0.0.0 0.0.0.3 area 10
R2(config-router)#network 2.2.2.2 0.0.0.0 area 10
R2(config-router)#exit
R3#conf t
R3(config)#router ospf 1
R3(config-router)#network 30.0.0.0 0.0.0.3 area 10
R3(config-router)#network 40.0.0.0 0.0.0.3 area 10
R3(config-router)#network 3.3.3.3 0.0.0.0 area 10
R3(config-if)#exit
R4#conf t
R4(config)#router ospf 1
R4(config-router)#network 40.0.0.0 0.0.0.3 area 10
R4(config-router)#network 4.4.4.4 0.0.0.0 area 10
R4(config-if)#exit

আই.এস.পি এর কোর রাউটারসমূহের মধ্যে OSPF কনফিগার করার পর আমরা কানেক্টিভিটি চেক করে দেখবো।

R1#ping 4.4.4.4 source 1.1.1.1
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 = 60/96/128 ms

সব কিছু ঠিক থাকলে এখন আমরা আই.এস.পি এর কোর রাউটারসমূহের মধ্যে MPLS এনাবল করবো।

R1#conf t
R1(config)#mpls label range 100 199
R1(config)#mpls ip
R1(config)#interface fastEthernet 0/1
R1(config-if)#mpls ip
R1(config-if)#exit
R2#conf t
R2(config)#mpls label range 200 299
R2(config)#mpls ip
R2(config)#interface fastEthernet 0/0
R2(config-if)#mpls ip
R2(config-if)#exit
R2(config)#interface fastEthernet 0/1
R2(config-if)#mpls ip
R2(config-if)#exit
R3#conf t
R3(config)#mpls label range 300 399
R3(config)#mpls ip
R3(config)#interface fastEthernet 0/0
R3(config-if)#mpls ip
R3(config-if)#exit
R3(config)#interface fastEthernet 0/1
R3(config-if)#mpls ip
R3(config-if)#exit
R4#conf t
R4(config)#mpls label range 400 499
R4(config)#mpls ip
R4(config)#interface fastEthernet 0/0
R4(config-if)#mpls ip
R4(config-if)#exit

এতটুকু কনফিগারেশন করলেই আই.এস.পি রাউটারসমূহে MPLS কাজ করবে। এবং আমাদের প্রাথমিক কনফিগারেশন সম্পন্ন হবে।

এখন আমরা MPLS L3 VPN কনফিগার করার জন্য উপরিউল্লেখিত পাঁচটি ধাপের কাজ পর্যায়ক্রমে সম্পন্ন করবো।

ধাপ-১: PE রাউটারসমূহের মধ্যে MBGP কনফিগার করা।

MBGP কনফিগার করার পূর্বশর্ত হিসেবে আগে PE রাউটারসমূহের মধ্যে iBGP কনফিগার করতে হবে। এখানে আমরা আই.এস.পি রাউটারসমূহের মধ্যে Full Mesh iBGP Peering করবো না, শুধু R1 ও R4 এর মধ্যে iBGP Peering করবো। এখানে Full Mesh iBGP Peering করলেও এখানে কোন সমস্যা নেই।

R1#conf t
R1(config)#router bgp 100
R1(config-router)#neighbor 4.4.4.4 remote-as 100
R1(config-router)#neighbor 4.4.4.4 update-source loopback 0
R1(config-router)#exit
R4#conf t
R4(config)#router bgp 100
R4(config-router)#neighbor 1.1.1.1 remote-as 100
R4(config-router)#neighbor 1.1.1.1 update-source loopback 0
R4(config-router)#exit

iBGP কনফিগারেশন সম্পন্ন হলে আমরা রাউটারদ্বয়ের BGP Status চেক করতে পারি।

R1#show ip bgp summary
BGP router identifier 1.1.1.1, local AS number 100
BGP table version is 1, main routing table version 1
Neighbor    V     AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
4.4.4.4     4    100       8       8        1    0    0 00:02:56        0
R4#show ip bgp summary
BGP router identifier 4.4.4.4, local AS number 100
BGP table version is 1, main routing table version 1
Neighbor    V     AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
1.1.1.1     4    100       8       8        1    0    0 00:02:42        0

এখানে আমরা শুধুমাত্র iBGP Peering করেছি, কিন্তু এখনো কোন Network অরিজিনেট করি নাই। BGP বাই ডিফল্ট IPv4 নিয়ে কাজ করে, এর মধ্যে MBGP এনাবল করার জন্য আমরা নিচের কমান্ড ব্যবহার করবো।

R1#conf t
R1(config)#router bgp 100
R1(config-router)#address-family vpnv4
R1(config-router-af)#neighbor 4.4.4.4 activate
R1(config-router-af)#neighbor 4.4.4.4 send-community extended
R1(config-router-af)#exit
R4#conf t
R4(config)#router bgp 100
R4(config-router)#address-family vpnv4
R4(config-router-af)#neighbor 1.1.1.1 activate
R4(config-router-af)#neighbor 1.1.1.1 send-community extended
R4(config-router-af)#exit

MBGP কনফিগারেশনের ক্ষেত্রে এখানে address-family হিসেবে vpnv4 নির্বাচন করা হয়েছে। এছাড়া এখানে Neighbor এর সাথে send-community extended কমান্ড ব্যবহার করা হয়েছে। যখন কোন PE রাউটার ক্লায়েন্টের কাছ থেকে কোন রাউট রিসিভ করে এবং তা MBGP এর মাধ্যমে অন্য কোন PE রাউটারের সাথে শেয়ার করে তখন রাউটটি ঠিক কোন ক্লায়েন্টের জন্য হবে তা নির্ধারণ করার জন্য এর সাথে একটি Route Target (RT) যোগ করা হয়। Route Target (RT) টি Extended Communinity আকারে এক PE থেকে আরেক PE তে গমন করে। এ কমান্ড না দিলে MBGP এর VPNv4 রাউটের সাথে Route Target (RT) যুক্ত হবে না। আর Route Target (RT) যুক্ত না হলে অপর PE বুঝতে পারবে না যে, উক্ত রাউটটি কোন ক্লায়েন্ট এর জন্য।

MBGP কনফিগারেশনের পর আমরা PE রাউটারদ্বয়ের Capabilities চেক করে দেখতে পারি।

R1#show ip bgp neighbors | section capabilities
  Neighbor capabilities:
    Route refresh: advertised and received(new)
    Four-octets ASN Capability: advertised and received
    Address family IPv4 Unicast: advertised and received
    Address family VPNv4 Unicast: advertised and received
    Enhanced Refresh Capability: advertised and received
    Multisession Capability:
    Stateful switchover support enabled: NO for session 1
R4#show ip bgp neighbors | section capabilities
  Neighbor capabilities:
    Route refresh: advertised and received(new)
    Four-octets ASN Capability: advertised and received
    Address family IPv4 Unicast: advertised and received
    Address family VPNv4 Unicast: advertised and received
    Enhanced Refresh Capability: advertised and received
    Multisession Capability:
    Stateful switchover support enabled: NO for session 1

ধাপ-২: PE রাউটারসমূহে VRF তৈরী করা।

এখন আমরা আই.এস.পি এর PE রাউটার R1 ও R4 এ ক্লায়েন্ট ABC ও XYZ এর জন্য আলাদা দুইটি VRF অর্থাৎ ভার্চুয়াল রাউটার তৈরী করবো। এখানে দুইটি VRF এর মধ্যে ক্লায়েন্ট ABC ও XYZ এর রাউটিং টেবিল সম্পূর্ণ আলাদা থাকবে। যেমনঃ R1 রাউটারে ABC-1 ক্লায়েন্টের জন্য VRF এর নাম হলো ABC এবং XYZ-1 ক্লায়েন্টের জন্য VRF এর নাম হলো XYZ । অনুরূপভাবে, R4 রাউটারে ABC-2 ক্লায়েন্টের জন্য VRF এর নাম হলো ABC এবং XYZ-2 ক্লায়েন্টের জন্য VRF এর নাম হলো XYZ । এখানে কোন নির্দিষ্ট ক্লায়েন্টের জন্য দুইটি PE রাউটারে VRF এর নাম একই হওয়া জরুরী নয়।

R1 যখন MBGP এর মধ্য দিয়ে VPNv4 আকারে R4 এর কাছে ABC-1 ও XYZ-1 এর রাউট পাঠাবে তখন R1 কে অবশ্যই এমন একটি মেকানিজম যুক্ত করতে হবে যাতে করে VPNv4 রাউট দুইটি MBGP এর মধ্যে আলাদা থাকে। আর এজন্য R1 রাউটারে Route Distinguisher (RD) কনফিগার করতে হয়। RD এখানে একটি খুবই গুরুত্বপূর্ণ বিষয়।

Route Distinguisher এর কাজ হলো শুধুমাত্র R1 ও R4 এর মধ্যকার MBGP এর মধ্যে VPNv4 রাউটসমূহ চিহ্নিত করা। কিন্তু R1 যখন তার দুইটি VRF এর রাউট MBGP এর মধ্য দিয়ে R4 এর কাছে পাঠাবে তখন R4 কিভাবে বুঝবে যে কোন রাউটটিকে তার কোন VRF এর মধ্যে Import করতে হবে (এখানে R4 এও কিন্তু দুইটি VRF আছে)?

এই সমস্যা সমাধানের জন্য R1 তার দুইটি VRF থেকে MBGP তে দুইটি রাউট Export করার সময় রাউট দুইটির সাথে দুইটি আলাদা Extended Community Tag যুক্ত করে দেবে। এই ট্যাগকে Route Target (RT) বলে। এজন্য R1 এর সংশ্লিষ্ট VRF এর মধ্যে একটি Export RT কনফিগার করতে হবে।

যেমনঃ R1 যখন ABC-1 এর রাউট VRF থেকে MBGP তে Export করবে তখন RT যোগ করবে 1.1.1.1:101 । এই রাউটটি যখন VPNv4 রাউট আকারে MBGP এর মধ্য দিয়ে R4 এর কাছে পৌছাবে তখন R4 দেখবে যে রাউটির সাথে থাকা RT টি তার কোন VRF এর Import RT এর সাথে ম্যাচ করে, যে VRF এর সাথে ম্যাচ করবে R4 উক্ত রাউটটি সেই VRF এর মধ্যে Import করবে। এজন্য R4 রাউটারের সংশ্লিষ্ট VRF এর মধ্যে একই নামে (1.1.1.1:101) একটি Import RT কনফিগার করতে হবে। অর্থাৎ R1 এর Export RT টি যে নামে হবে R4 এর Import RT টি ঠিক একই নামে হবে।

এবং সবশেষে দুইটি PE রাউটারের যে ইন্টারফেস যে ক্লায়েন্টের সাথে যুক্ত সেই ইন্টারফেসটি ঐ ক্লায়েন্টের VRF এর সাথে Bonding করতে হবে এবং প্রতিটি ইন্টারফেসে প্রয়োজনীয় আই.পি এ্যাড্রেস কনফিগার করতে হবে।

তো VRF তৈরীর কাজটি একটু প্র্যাকটিক্যালী দেখা যাক,

R1#conf t
R1(config)#vrf definition ABC
R1(config-vrf)#rd 1.1.1.1:1
R1(config-vrf)#address-family ipv4
R1(config-vrf-af)#route-target export 1.1.1.1:101
R1(config-vrf-af)#route-target import 4.4.4.4:101
R1(config-vrf-af)#exit
R1(config-vrf)#exit

এখানে, R1 রাউটারে ক্লায়েন্ট ABC-1 এর জন্য ABC নামে একটি VRF তৈরী করা হলো। এখানে ABC হলো একটি Variable । #vrf definition ABC কমান্ডের মাধ্যমে VRF তৈরী করলে উক্ত VRF IPV4 ও IPV6 উভয়ই সাপোর্ট করে। যদি আমরা শুধুমাত্র IPv4 সাপোর্টেড VRF তৈরী করতে চাই তাহলে #vrf definition ABC কমান্ডের পরিবর্তে #ip vrf ABC কমান্ড দিতে হবে।

রাউটার R1 এই ABC VRF থেকে যে রাউটসমূহ MBGP তে Export করবে সে রাউটসমূহকে MBGP এর মধ্যে স্বতন্ত্রভাবে চেনার জন্য 1.1.1.1:1 নামে একটি RD ব্যবহার করা হয়েছে। RD এর ফরম্যাট হলো ASN:nn অথবা IP-address:nn । এখানে R1 এর Loopback0 এর আই.পি এর সাথে (:) দিয়ে একটি নিউমেরিক ভ্যালু 1 ব্যবহার করা হয়েছে।

রাউটার R1 এই ABC VRF থেকে যে রাউটসমূহ VPNv4 আকারে MBGP এর মধ্য দিয়ে R4 এর কাছে পাঠাবে সে রাউটসমূহের সাথে একটি Extended Community Tag 1.1.1.1:101 যোগ করা হয়েছে যা RT হিসেবে পরিচিত। RT এর ফরম্যাট হলো ASN:nn অথবা IP-address:nn । এখানে R1 এর Loopback এর আই.পি এর সাথে (:) দিয়ে একটি নিউমেরিক ভ্যালু 101 ব্যবহার করা হয়েছে। এখানে, R1 যে RT টি Export করবে অপর প্রান্তে R4 ঠিক একই RT টি Import করবে। আবার, R4 যে RT টি Export করবে এই প্রান্তে R1 ঠিক একই RT টি Import করবে।

একইভাবে আমরা R1 এ ক্লায়েন্ট XYZ-1 এর জন্য XYZ নামে একটি VRF তৈরী করবো এবং অন্যান্য প্যারামিটার যেমন: RD ও RT কনফিগার করবো।

R1#conf t
R1(config)#vrf definition XYZ
R1(config-vrf)#rd 1.1.1.1:2
R1(config-vrf)#address-family ipv4
R1(config-vrf-af)#route-target export 1.1.1.1:102
R1(config-vrf-af)#route-target import 4.4.4.4:102
R1(config-vrf-af)#exit
R1(config-vrf)#exit

এখানে XYZ VRF এ RD হিসেবে 1.1.1.1:2 কনফিগার করা হয়েছে যা ABC VRF এর RD 1.1.1.1:1 থেকে আলাদা। এবং এটি আলাদা হতেই হবে।

R1 এ VRF তৈরীর কাজ শেষ হলে আমরা R4 এও একইভাবে ABC-2 ও XYZ-2 এর জন্য দুইটি VRF তৈরী করবো। VRF এর নাম PE রাউটারগুলোর জন্য Locally Significant । আর VRF তৈরীর সময় RD ও RT গুলো একটু ঠান্ডা মাখায় বুঝে বুঝে কনফিগার করবো।

R4#conf t
R4(config)#vrf definition ABC
R4(config-vrf)#rd 4.4.4.4:1
R4(config-vrf)#address-family ipv4
R4(config-vrf-af)#route-target export 4.4.4.4:101
R4(config-vrf-af)#route-target import 1.1.1.1:101
R4(config-vrf-af)#exit
R4(config-vrf)#exit
R4(config)#vrf definition XYZ
R4(config-vrf)#rd 4.4.4.4:2
R4(config-vrf)#address-family ipv4
R4(config-vrf-af)#route-target export 4.4.4.4:102
R4(config-vrf-af)#route-target import 1.1.1.1:102
R4(config-vrf-af)#exit
R4(config-vrf)#exit

উভয় PE রাউটারে সঠিক RD ও RT সহ VRF কনফিগার করা শেষ হলে পরবর্তীতে আমরা এই রাউটারদ্বয়ের ক্লায়েন্ট ইন্টারফেসসমূহ কনফিগার করবো।

R1#conf t
R1(config)#interface fastEthernet 0/0
R1(config-if)#vrf forwarding ABC
R1(config-if)#ip address 10.0.0.1 255.255.255.252
R1(config-if)#no shutdown
R1(config-if)#exit

এখানে সবার আগে R1 রাউটারের Fa0/0 ইন্টারফেসটিকে VRF ABC এর সাথে Bonding করা হলো। অতঃপর এর মধ্যে আই.পি এ্যাসাইন করা হলো। একইভাবে Fa1/0 ইন্টারফেসটিকেও কনফিগার করতে হবে।

R1#conf t
R1(config)#interface fastEthernet 1/0
R1(config-if)#vrf forwarding XYZ
R1(config-if)#ip address 10.0.0.1 255.255.255.252
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#exit

R1 রাউটারের যদি আমরা #show ip interface brief কমান্ড দিই তাহলে নিচের আউটপুট দেখতে পাবো।

R1#show ip interface brief
Interface              IP-Address      OK? Method Status                Protocol
FastEthernet0/0        10.0.0.1        YES manual up                    up
FastEthernet0/1        20.0.0.2        YES NVRAM  up                    up
FastEthernet1/0        10.0.0.1        YES manual up                    up
FastEthernet1/1        unassigned      YES NVRAM  administratively down down
Loopback0              1.1.1.1         YES NVRAM  up                    up

এখানে একটি মজার ব্যাপার হলো যে, Fa0/0 এবং Fa1/0 ইন্টারফেস দুইটিতে কিন্তু একই আই.পি বসানো হয়েছে। আর এটা সম্ভব হয়েছে ইন্টারফেস দুইটিকে দুইটি আলাদা VRF এর সাথে Bonding করার কারণে। সাধারণ ক্ষেত্রে একটি রাউটারের দুইটি ইন্টারফেসে কখনোই একই আই.পি বা একই সাবনেটের ভিন্ন আই.পি বসানো যায় না, সেক্ষেত্রে আই.পি Overlap জনিত Error Message দেখায়।

আরো একটি মজার ব্যাপার হলো, আমরা যদি R1 এ #show ip route connected কমান্ড দিই তাহলে যে আউটপুট পাবো সেখানে Directly Connected রাউট হিসেবে 10.0.0.0/30 কে দেখতে পাবো না।

R1#show ip route connected
Gateway of last resort is not set
      1.0.0.0/32 is subnetted, 1 subnets
C        1.1.1.1 is directly connected, Loopback0
      20.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        20.0.0.0/30 is directly connected, FastEthernet0/1
L        20.0.0.2/32 is directly connected, FastEthernet0/1

কারণ Directly Connected এই 10.0.0.0/30 রাউট R1 এর Global রাউটিং টেবিলে এ নেই। VRF কনফিগার করার কারণে তা সংশ্লিষ্ট VRF এর রাউটিং টেবিলে চলে গেছে। আমরা যদি R1 এর কনফিগার করা দুইটি VRF এর রাউটিং টেবিল দেখতে চাই তাহলে নিচের কমান্ড দিতে হবে।

R1#show ip route vrf ABC
Routing Table: ABC
Gateway of last resort is not set
      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        10.0.0.0/30 is directly connected, FastEthernet0/0
L        10.0.0.1/32 is directly connected, FastEthernet0/0
R1#show ip route vrf XYZ
Routing Table: XYZ
Gateway of last resort is not set
      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        10.0.0.0/30 is directly connected, FastEthernet1/0
L        10.0.0.1/32 is directly connected, FastEthernet1/0

ঠিক একইভাবে আমরা R4 এর ক্লায়েন্ট ইন্টারফেস দুইটিও কনফিগার করবো।

R4#conf t
R4(config)#interface fastEthernet 0/1
R4(config-if)#vrf forwarding ABC
R4(config-if)#ip address 50.0.0.1 255.255.255.252
R4(config-if)#no shutdown
R4(config-if)#exit
R4(config)#interface fastEthernet 1/0
R4(config-if)#vrf forwarding XYZ
R4(config-if)#ip address 50.0.0.1 255.255.255.252
R4(config-if)#no shutdown
R4(config-if)#exit
R4(config)#exit
R4#show ip route connected
Gateway of last resort is not set
      4.0.0.0/32 is subnetted, 1 subnets
C        4.4.4.4 is directly connected, Loopback0
      40.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        40.0.0.0/30 is directly connected, FastEthernet0/0
L        40.0.0.2/32 is directly connected, FastEthernet0/0
R4#show ip route vrf ABC
Routing Table: ABC
Gateway of last resort is not set
      50.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        50.0.0.0/30 is directly connected, FastEthernet0/1
L        50.0.0.1/32 is directly connected, FastEthernet0/1
R4#show ip route vrf XYZ
Routing Table: XYZ
Gateway of last resort is not set
      50.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        50.0.0.0/30 is directly connected, FastEthernet1/0
L        50.0.0.1/32 is directly connected, FastEthernet1/0

ধাপ-৩: PE ও CE রাউটারসমূহের মধ্যে ডাইনামিক রাউটিং কনফিগার করা।

এখন আমরা আই.এস.পি এর PE রাউটার ও ক্লায়েন্ট এর CE রাউটারসমূহের মধ্যে ডাইনামিক রাউটিং কনফিগার করবো। অর্থাৎ, R1 এর সাথে ABC-1 এবং XYZ-1 এর। এবং অন্যদিকে R4 এর সাথে ABC-2 এবং XYZ-2 এর।

আই.এস.পি যখন তার কোন ক্লায়েন্টের সাথে ডাইনামিক রাউটিং কনফিগার করবে তখন ঠিক কোন রাউটিং প্রটোকল কনফিগার করবে সেটি একটি গুরুতত্বপূর্ণ বিষয়। ডাইনামিক রাউটিং প্রটোকলগুলোর মধ্যে রয়েছে, RIP, EIGRP, OSPF/IS-IS এবং BGP । প্রতিটি রাউটিং প্রটোকলকে আলাদাভাবে চিন্তা করলে,

RIP: RIP রাউটিং প্রটোকলের বেশ কিছু সীমাবদ্ধতা রয়েছে যেমনঃ Slow Convergence, Full and Periodic Update, Hop Count ইত্যাদি। আর এসব কারণে RIP কেউ ব্যবহার করে না।

EIGRP: EIGRP একটি চমৎকার রাউটিং প্রটোকল। এটি একটি Advance Distance Vector রাউটিং প্রটোকল, যা আলাদা টপোলজি টেবিল মেইনটেইন করে ফলে Convergence খুব দ্রুত হয়, Unequal Cost লোড ব্যালান্স করতে পারে। কিন্তু EIGRP এর সবচেয়ে বড় অসুবিধা হলো এটি Cisco এর নিজস্ব প্রটোকল যা শুধু Cisco রাউটারসমূহেই কাজ করে। কিন্তু একটি সার্ভিস প্রোভাইডার নেটওয়ার্কে সবগুলো রাউটারই Cisco এর হয় না, বিভিন্ন ব্র্যান্ডের রাউটার ব্যবহৃত হয়। আবার Cisco এর রাউটারের দাম অনেক বেশি হওয়ায় বেশিরভাগ ক্লায়েন্টই অন্য ব্র্যান্ডের তুলনামূলক কম দামী রাউটার ব্যবহার করেন। তাই এসব কিছু বিবেচনায় প্রোডাকশন লেভেলে EIGRP এর ব্যবহার হয় না বললেই চলে।

OSPF/IS-IS: OSPF ও IS-IS উভয়ই Link State রাউটিং প্রটোকল। এরা Fast Convergence প্রটোকল এবং সব ব্র্যান্ডের রাউটারেই এগুলো সাপোর্ট করে। কিন্তু ক্লায়েন্টের সাথে রাউটিং আদান-প্রদানে OSPF/IS-IS ব্যবহারে কিছু সমস্যা আছে। একটি বড় আকারের আই.এস.পি নেটওয়ার্কে ক্লায়েন্টদের হাজার-হাজার প্রিফিক্স/রাউট থাকতে পারে, কিন্তু OSPF/IS-IS দিয়ে এতসংখ্যক রাউট হ্যান্ডল করতে গেলে আই.এস.পি রাউটারসমূহের CPU/Memory Usages অনেক বেড়ে যায়। তাই আই.এস.পি নেটওয়ার্কে শুধুমাত্র ইন্টার্নাল (POP সমূহের) রাউটগুলোই OSPF/IS-IS দ্বারা হ্যান্ডল করা হয় এবং সকল ক্লায়েন্টের রাউটসমূহ হ্যান্ডল করার জন্য eBGP ব্যবহৃত হয়।

আমরা বুঝার সুবিধার্থে আমাদের এই ল্যাবটি তে সব ধরণের রাউটিং প্রটোকল ব্যবহার করবো। যেমনঃ R1 ও ABC-1 এর মধ্যে RIPv2, R1 ও XYZ-1 এর মধ্যে EIGRP (AS 10), R4 ও ABC-2 এর মধ্যে OSPF (AS 10, Area 0) এবং R4 ও XYZ-2 (AS 200) এর মধ্যে eBGP ।

তো কনফিগারেশন শুরু করা যাক, প্রথমেই আমরা R1 রাউটারে ABC-1 এর সাথে RIPv2 কনফিগার করবো।

R1#conf t
R1(config)#router rip
R1(config-router)#version 2
R1(config-router)#address-family ipv4 vrf ABC
R1(config-router-af)#network 10.0.0.0
R1(config-router-af)#no auto-summary
R1(config-router-af)#exit
R1(config-router)#exit

ABC-1 এর সাথে RIPv2 কনফিগার করার সময় R1 রাউটারে VRF ABC কে ডিফাইন করা হয়েছে, কারণ ABC-1 এর রাউটগলো R1 এর গ্লোবাল রাউটিং টেবিলে নেই, এগুলো আছে R1 এর ভার্চুয়াল রাউটিং টেবিল অর্থাৎ VRF ABC তে যা শুধুমাত্র ABC-1 এর জন্যই ডেডিকেটেড।

এখন আমরা ABC-1 এ R1 এর সাথে RIPv2 কনফিগার করবো।

ABC-1#conf t
ABC-1(config)#interface fastEthernet 0/0
ABC-1(config-if)#ip address 10.0.0.2 255.255.255.252
ABC-1(config-if)#no shutdown
ABC-1(config-if)#description ISP
ABC-1(config-if)#exit
ABC-1(config)#interface loopback 0
ABC-1(config-if)#ip address 192.168.10.1 255.255.255.0
ABC-1(config-if)#description LAN
ABC-1(config-if)#exit
ABC-1(config)#router rip
ABC-1(config-router)#version 2
ABC-1(config-router)#network 10.0.0.0
ABC-1(config-router)#network 192.168.10.0
ABC-1(config-router)#no auto-summary
ABC-1(config-router)#exit

প্রথমেই আমরা টপোলজি অনুযায়ী ABC-1 এর আই.পি এ্যাড্রেসসমূহ কনফিগার করলাম এবং তারপর RIPv2 কনফিগার করলাম। এখানে কোন CE রাউটারে (ক্লায়েন্ট রাউটারে) রাউটিং কনফিগার করার সময় VRF ডিফাইন করার দরকার নেই। VRF সম্পর্কিত কনফিগারেশন শুধুমাত্র PE রাউটারসমূহে করতে হয়।

R1 ও ABC-1 এর মধ্যে RIPv2 কনফিগার করা শেষ হলে আমরা R1 এর ABC VRF এ ABC-1 এর ল্যান এর রাউটটি দেখতে পাবো।

R1#show ip route vrf ABC
Routing Table: ABC
Gateway of last resort is not set
      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        10.0.0.0/30 is directly connected, FastEthernet0/0
L        10.0.0.1/32 is directly connected, FastEthernet0/0
R     192.168.10.0/24 [120/1] via 10.0.0.2, 00:00:04, FastEthernet0/0

এখন আমরা R1 ও XYZ-1 এর মধ্যে EIGRP (AS 10) কনফিগার করবো।

R1#conf t
R1(config)#router eigrp 1
R1(config-router)#address-family ipv4 vrf XYZ autonomous-system 10
R1(config-router-af)#network 10.0.0.0 0.0.0.3
R1(config-router-af)#exit
R1(config-router)#exit
XYZ-1#conf t
XYZ-1(config)#interface fastEthernet 0/0
XYZ-1(config-if)#ip address 10.0.0.2 255.255.255.252
XYZ-1(config-if)#no shutdown
XYZ-1(config-if)#description ISP
XYZ-1(config-if)#exit
XYZ-1(config)#interface loopback 0
XYZ-1(config-if)#ip address 192.168.10.1 255.255.255.0
XYZ-1(config-if)#description LAN
XYZ-1(config-if)#exit
XYZ-1(config)#router eigrp 10
XYZ-1(config-router)#network 10.0.0.0 0.0.0.3
XYZ-1(config-router)#network 192.168.10.0 0.0.0.255
XYZ-1(config-router)#exit

R1 ও XYZ-1 এর মধ্যে EIGRP (AS 10) কনফিগার করা শেষ হলে আমরা R1 রাউটারের XYZ VRF এ XYZ-1 এর ল্যান এর রাউটটি দেখতে পাবো।

R1#show ip route vrf XYZ
Routing Table: XYZ
Gateway of last resort is not set
      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        10.0.0.0/30 is directly connected, FastEthernet1/0
L        10.0.0.1/32 is directly connected, FastEthernet1/0
D     192.168.10.0/24 [90/156160] via 10.0.0.2, 00:00:48, FastEthernet1/0

এই পর্যায়ে আমরা R4 ও ABC-2 এর মধ্যে রাউটিং প্রটোকল হিসেবে OSPF (AS 10, Area 0) কনফিগার করবো।

R4#conf t
R4(config)#router ospf 10 vrf ABC
R4(config-router)#network 50.0.0.0 0.0.0.3 area 0
R4(config-router)#exit
ABC-2#conf t
ABC-2(config)#interface fastEthernet 0/0
ABC-2(config-if)#ip address 50.0.0.2 255.255.255.252
ABC-2(config-if)#no shutdown
ABC-2(config-if)#description ISP
ABC-2(config-if)#exit
ABC-2(config)#interface loopback 0
ABC-2(config-if)#ip address 172.16.10.1 255.255.255.0
ABC-2(config-if)#description LAN
ABC-2(config-if)#exit
ABC-2(config)#router ospf 1
ABC-2(config-router)#network 50.0.0.0 0.0.0.3 area 0
ABC-2(config-router)#network 172.16.10.0 0.0.0.3 area 0
ABC-2(config-router)#exit

R4 ও ABC-2 এর মধ্যে OSPF কনফিগার করা শেষ হলে আমরা R4 রাউটারের ABC VRF এ ABC-2 এর ল্যান এর রাউটটি দেখতে পাবো।

R4#show ip route vrf ABC
Routing Table: ABC
Gateway of last resort is not set
      50.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        50.0.0.0/30 is directly connected, FastEthernet0/1
L        50.0.0.1/32 is directly connected, FastEthernet0/1
      172.16.0.0/32 is subnetted, 1 subnets
O        172.16.10.1 [110/2] via 50.0.0.2, 00:01:34, FastEthernet0/1

এবং সবশেষে আমরা R4 এর সাথে XYZ-2 (AS 200) এর eBGP কনফিগার করবো।

R4#conf t
R4(config)#router bgp 100
R4(config-router)#address-family ipv4 vrf XYZ
R4(config-router-af)#neighbor 50.0.0.2 remote-as 200
R4(config-router-af)#exit
R4(config-router)#address-family vpnv4
R4(config-router-af)#neighbor 1.1.1.1 next-hop-self
R4(config-router-af)#exit
R4(config-router)#exit

এখানে R4 রাউটারে XYZ-2 এর সাথে eBGP কনফিগার করা হয়েছে। এবং R4 এর সাথে R1 এর যে MBGP আছে তাতে next-hop-self কমান্ড দেওয়া হয়েছে। next-hop-self কমান্ড না দিলে R4 রাউটার XYZ-2 এর কাছ থেকে eBGP এর মাধ্যমে যে রাউট রিসিভ করবে তা আবার MBGP এর মাধ্যমে R1 এর কাছে Advertise করার সময় প্রাপ্ত Next-hop পরিবর্তন করবে না, ফলে রাউটিং ব্ল্যাকহোল তৈরী হতে পারে।

XYZ-2#conf t
XYZ-2(config)#interface fastEthernet 0/0
XYZ-2(config-if)#ip address 50.0.0.2 255.255.255.252
XYZ-2(config-if)#no shutdown
XYZ-2(config-if)#description ISP
XYZ-2(config-if)#exit
XYZ-2(config)#interface loopback 0
XYZ-2(config-if)#ip address 172.16.10.1 255.255.255.0
XYZ-2(config-if)#description LAN
XYZ-2(config-if)#exit
XYZ-2(config)#router bgp 200
XYZ-2(config-router)#neighbor 50.0.0.1 remote-as 100
XYZ-2(config-router)#network 172.16.10.0 mask 255.255.255.0
XYZ-2(config-router)#exit

R4 ও XYZ-2 এর মধ্যে eBGP কনফিগার করা শেষ হলে আমরা R4 রাউটারের XYZ VRF এ XYZ-2 এর ল্যান এর রাউটটি দেখতে পাবো।

R4#show ip route vrf XYZ
Routing Table: XYZ
Gateway of last resort is not set
      50.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        50.0.0.0/30 is directly connected, FastEthernet1/0
L        50.0.0.1/32 is directly connected, FastEthernet1/0
      172.16.0.0/24 is subnetted, 1 subnets
B        172.16.10.0 [20/0] via 50.0.0.2, 00:02:03

ধাপ-৪: VRF ও MBGP এর মধ্যে রাউটসমূহ Export ও Import করা

এখন আমরা দেখবো PE রাউটারের VRF এর রাউটসমূহ কিভাবে MBGP তে Export করতে হয় এবং MBGP থেকে রাউটসমূহ কিভাবে VRF এ Import করতে হয়। এখানে রাউট Export/Import করার জন্য #redistribute কমান্ড ব্যবহার করতে হবে।

আমাদের ল্যাব টপোলজি অনুযায়ী আমরা নিম্নোক্ত কাজগুলো করবো।

i) R1 এর ABC VRF থেকে RIPv2 এর রাউট MBGP তে Export করা এবং MBGP এর VPNv4 রাউট R1 এর ABC VRF এ Import করা।

R1#conf t
R1(config)#router bgp 100
R1(config-router)#address-family ipv4 vrf ABC
R1(config-router-af)#redistribute rip
R1(config-router-af)#exit
R1(config-router)#exit

R1(config)#router rip
R1(config-router)#address-family ipv4 vrf ABC
R1(config-router-af)#redistribute bgp 100 metric 5
R1(config-router-af)#exit
R1(config-router)#exit

ii) R1 এর XYZ VRF থেকে EIGRP এর রাউট MBGP তে Export করা এবং MBGP এর VPNv4 রাউট R1 এর XYZ VRF এ Import করা।

R1#conf t
R1(config)#router bgp 100
R1(config-router)#address-family ipv4 vrf XYZ
R1(config-router-af)#redistribute eigrp 10
R1(config-router-af)#exit
R1(config-router)#exit

R1(config)#router eigrp 1
R1(config-router)#address-family ipv4 vrf XYZ autonomous-system 10
R1(config-router-af)#redistribute bgp 100 metric 1 1 1 1 1
R1(config-router-af)#exit
R1(config-router)#exit

iii) R4 এর ABC VRF থেকে OSPF এর রাউট MBGP তে Export করা এবং MBGP এর VPNv4 রাউট R4 এর ABC VRF এ Import করা।

R4#conf t
R4(config)#router bgp 100
R4(config-router)#address-family ipv4 vrf ABC
R4(config-router-af)#redistribute ospf 10 vrf ABC
R4(config-router-af)#exit
R4(config-router)#exit
R4(config)#router ospf 10 vrf ABC
R4(config-router)#redistribute bgp 100 subnets
R4(config-router)#exit

iv) এখানে যেহেতু R4 এর সাথে XYZ-2 এর eBGP করা আছে তাই এক্ষেত্রে ম্যানুয়ালী Export/Import করতে হবে না। eBGP থেকে প্রাপ্ত রাউটসমূহ R4 এমনিতেই MBGP এর মাধ্যমে R1 এর কাছে পাঠাবে।

এখানে একটি কথা বিশেষভাবে উল্লেখ্য যে, Export/Import সংক্রান্ত কোন কনফিগারেশন CE রাউটারসমূহে কখনোই করার দরকার নেই।

এখন আমরা ABC-1 থেকে ABC-2 তে (192.168.10.1 থেকে 172.16.10.1 এ) কিভাবে ট্রাফিক যাবে তা একটু বিস্তারিত পর্যালোচনা করবো।

প্রথমে আমরা #show ip route কমান্ডের মাধ্যমে ABC-1 এর রাউটিং টেবিলে দেখে নিই।

ABC-1#show ip route
Gateway of last resort is not set
     50.0.0.0/30 is subnetted, 1 subnets
R       50.0.0.0 [120/5] via 10.0.0.1, 00:00:20, FastEthernet0/0
C    192.168.10.0/24 is directly connected, Loopback0
     172.16.0.0/32 is subnetted, 1 subnets
R       172.16.10.1 [120/5] via 10.0.0.1, 00:00:20, FastEthernet0/0
     10.0.0.0/30 is subnetted, 1 subnets
C       10.0.0.0 is directly connected, FastEthernet0/0

এখানে ABC-1 এর রাউটিং টেবিলে তার রিমোট লোকেশন ABC-2 এর রাউট আছে যার Nexthop হলো 10.0.0.1 অর্থাৎ R1 । সুতরাং ABC-1 প্যাকেটটি R1 এর কাছে পাঠাবে। R1 যখন প্যাকেটটি রিসিভ করবে তখন ইহা প্যাকেটটির ডেষ্টিনেশন নিজের vpnv4 Routing Table এর সাথে চেক করে দেখবে।

R1#show bgp vpnv4 unicast vrf ABC labels
   Network          Next Hop      In label/Out label
Route Distinguisher: 1.1.1.1:1 (ABC)
   10.0.0.0/30      0.0.0.0         107/nolabel(ABC)
   50.0.0.0/30      4.4.4.4         nolabel/410
   172.16.10.1/32   4.4.4.4         nolabel/402
   192.168.10.0     10.0.0.2        101/nolabel

R1 এর VPNv4 Routing Table এ 172.16.10.1/32 এর রাউট আছে, যার Nexthop হলো 4.4.4.4 (R4)। এছাড়াও এখানে আরও দেখা যাচ্ছে যে, 172.16.10.1/32 ডেষ্টিনেশনের জন্য R1 এর Outgoing MPLS Label হলো 402 । অর্থাৎ, R1 রাউটার যখন প্যাকেটটি R4 এর কাছে পাঠাবে তখন Outgoing Label হিসেবে 402 ট্যাগ করে দিবে। কিন্তু সমস্যা হলো R1 এর সাথে R4 এর সরাসরি কোন সংযোগ নেই, R1 যদি R4 এর কাছে যেতে চায় তাহলে তাকে আগে R2 এর কাছে প্যাকেট পাঠাতে হবে।

এখন যদি আমরা 4.4.4.4 ডেষ্টিনেশনের জন্য R1 এর MPLS Forwarding Table চেক করি তাহলে দেখতে পাবো যে,

R1#show mpls forwarding-table 4.4.4.4
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
Label      Label      or Tunnel Id     Switched      interface
106        204        4.4.4.4/32       0             Fa0/1      20.0.0.1

4.4.4.4 ডেষ্টিনেশনের জন্য R1 এর Outgoing MPLS Label হলো 204 । অর্থাৎ R1 রাউটার প্যাকেটটি R2 এর কাছে পাঠানোর জন্য 402 লেবেল এর উপর অতিরিক্ত আরো একটি Outgoing Label 204 ট্যাগ করে দিবে। এখানে 402 হলো Bottom Label এবং 204 হলো Top Label ।

R1#show ip cef vrf ABC 172.16.10.1
172.16.10.1/32
  nexthop 20.0.0.1 FastEthernet0/1 label 204 402

R2 রাউটার যখন প্যাকেটটি রিসিভ করবে তখন এটি দেখবে যে, প্যাকেটটির ডেষ্টিনেশন হলো 4.4.4.4 এবং 4.4.4.4 ডেষ্টিনিশেনের জন্য তার নিজের Outgoing Label হলো 305 ।

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

এ অবস্থায় R2 রাউটার প্যাকেটের Top Label 204 মুছে ফেলে নতুন Top Label 305 যোগ করে প্যাকেটটি R3 এর কাছে পাঠাবে। এক্ষেত্রে R2 রাউটার কখনোই প্যাকেটের Bottom Label 402 এ কোন হাত দিবে না।

R3 রাউটার যখন প্যাকেটটি রিসিভ করবে তখন এটি দেখবে যে, প্যাকেটটির ডেষ্টিনেশন হলো 4.4.4.4 এবং 4.4.4.4 ডেষ্টিনিশেনের জন্য তার নিজের Outgoing Label হলো POP Label । অর্থাৎ R4 রাউটার Penaltimate Hop Popping (PHP) এর মাধ্যমে প্যাকেটটির Top Label 305 মুছে ফেলে নতুন কোন Top Label না লাগিয়েই তা IP Packet আকারে R4 এর কাছে পৌছে দেবে। এখানেও R3 রাউটার কখনোই প্যাকেটের Bottom Label 402 এ কোন হাত দিবে না।

R3#show mpls forwarding-table 4.4.4.4
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
Label      Label      or Tunnel Id     Switched      interface
305        Pop Label  4.4.4.4/32       10663         Fa0/1      40.0.0.2

R4 রাউটার যখন প্যাকেটটি রিসিভ করবে তখন এটি নিজের VPNv4 রাউটিং টেবিল চেক করে প্যাকেটটির Bottom Label 402 মুছে ফেলে তা IP Packet আকারে 50.0.0.2 অর্থাৎ ABC-2 এর কাছে পাঠাবে।

R4#show bgp vpnv4 unicast vrf ABC labels
   Network          Next Hop      In label/Out label
Route Distinguisher: 4.4.4.4:1 (ABC)
   10.0.0.0/30      1.1.1.1         nolabel/107
   50.0.0.0/30      0.0.0.0         410/nolabel(ABC)
   172.16.10.1/32   50.0.0.2        402/nolabel
   192.168.10.0     1.1.1.1         nolabel/101

সবশেষে ABC-2 দেখবে যে, প্যাকেটটির মূল ডেষ্টিনেশন 172.16.10.1 তার নিজের Loopback 0 ইন্টারফেস এবং এটি সংশ্লিষ্ট ইন্টারফেসে প্যাকেটটি ডেলিভারী দিবে।

C1-B#show ip route
Gateway of last resort is not set
     50.0.0.0/30 is subnetted, 1 subnets
C       50.0.0.0 is directly connected, FastEthernet0/0
O E2 192.168.10.0/24 [110/1] via 50.0.0.1, 01:21:02, FastEthernet0/0
     172.16.0.0/24 is subnetted, 1 subnets
C       172.16.10.0 is directly connected, Loopback0
     10.0.0.0/30 is subnetted, 1 subnets
O E2    10.0.0.0 [110/1] via 50.0.0.1, 01:21:02, FastEthernet0/0

উপরিউক্ত পদ্ধতিতে কোন ক্লায়েন্টের ডাটা MPLS L3 VPN এর মাধ্যমে এক লোকেশন থেকে আরেক লোকেশনে পৌছায়। এখানে আই.এস.পি এর কোন কোর রাউটারে (P Router) ক্লায়েন্টদের কোন রাউটের তথ্য থাকে না বা থাকার প্রয়োজন হয় না। এজন্য কোর রাউটারসমূহের উপর বাড়তি চাপ পড়ে না বলে নেটওয়ার্কের পারফরম্যান্স অনেক ভালো হয়।

ধাপ-৫: সবশেষে End-to-End কানেক্টিভিটি চেক করা

আমাদের সম্পূর্ণ কনফিগারেশনটি ধাপে ধাপে শেষ করার পর সবশেষে এখন আমরা End-to-End (ক্লায়েন্ট-টু-ক্লায়েন্ট) কানেক্টিভিটি চেক করে দেখবো।

প্রথমেই আমরা ABC-1 রাউটার থেকে ABC-2 কে Ping করে দেখবো

ABC-1#ping 172.16.10.1 source 192.168.10.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.10.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.10.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 48/72/100 ms

ABC-1 থেকে আমরা ABC-2 কে Ping করে পাচ্ছি। এছাড়া আমরা Traceroute করেও দেথতে পারি।

ABC-1#traceroute 172.16.10.1 source 192.168.10.1
Type escape sequence to abort.
Tracing the route to 172.16.10.1
  1 10.0.0.1 36 msec 80 msec 20 msec
  2 20.0.0.1 [MPLS: Labels 204/402 Exp 0] 56 msec 60 msec 88 msec
  3 30.0.0.2 [MPLS: Labels 305/402 Exp 0] 48 msec 72 msec 64 msec
  4 50.0.0.1 [MPLS: Label 402 Exp 0] 60 msec 112 msec 68 msec
  5 50.0.0.2 88 msec 92 msec 60 msec

ঠিক একইভাবে আমরা XYZ-1 থেকে XYZ-2 কে Ping ও Traceroute করে কানেক্টিভিটি চেক করতে পারি।

XYZ-1#ping 172.16.10.1 source 192.168.10.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.10.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.10.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 120/128/140 ms
XYZ-1#traceroute 172.16.10.1 source 192.168.10.1
Type escape sequence to abort.
Tracing the route to 172.16.10.1
VRF info: (vrf in name/id, vrf out name/id)
  1 10.0.0.1 60 msec 52 msec 68 msec
  2 20.0.0.1 [MPLS: Labels 204/401 Exp 0] 124 msec 136 msec 188 msec
  3 30.0.0.2 [MPLS: Labels 305/401 Exp 0] 136 msec 116 msec 132 msec
  4 50.0.0.1 [MPLS: Label 401 Exp 0] 104 msec 144 msec 160 msec
  5 50.0.0.2 136 msec 156 msec 96 msec

এখানে অনেকের সংশয় থাকতে পারে যে, ABC ও XYZ কায়েন্টের উভয় পাশে তো আই.পি ব্লক একই, তো একজনের Ping প্যাকেট যে আরেকজনের কাছে যাচ্ছে না তার বিশ্বাস কি? আর এজন্যই আমরা কানেক্টিভিটি চেকিং টি একটু ভিন্নভাবে করবো। প্রথমে আমরা ABC-2 ও XYZ-2 রাউটারদ্বয়ে Telnet এনাবল করবো এবং তারপর ABC-1 ও ABC-2 থেকে যথাক্রমে XYZ-1 ও XYZ-2 তে Telnet করে দেখবো যে, ABC-1 থেকে Telnet রিকোয়েষ্ট ABC-2 তে যায় নাকি অন্য কোথাও যায়।

ABC-2#conf t
ABC-2(config)#enable secret ABC
ABC-2(config)#line vty 0 4
ABC-2(config-line)#password ABC
ABC-2(config-line)#login
ABC-2(config-line)#exit
XYZ-2#conf t
XYZ-2(config)#enable secret XYZ
XYZ-2(config)#line vty 0 4
XYZ-2(config-line)#password XYZ
XYZ-2(config-line)#login
XYZ-2(config-line)#exit

এখন আলাদা আলাদাভাবে Telnet করে দেখা যাক.....

ABC-1#telnet 172.16.10.1
Trying 172.16.10.1 ... Open
User Access Verification
Password:
ABC-2>enable
Password:
ABC-2#
XYZ-1#telnet 172.16.10.1
Trying 172.16.10.1 ... Open
User Access Verification
Password:
XYZ-2>enable
Password:
XYZ-2#

Okay... তাহলে প্রমান হয়ে গেল যে, MPLS L3 VPN কনফিগার করার পর উভয় ক্লায়েন্টের রাউটিং ইনফরমেশন একটি থেকে আরেকটি সম্পূর্ণ আলাদা আছে, যা MPLS L3 VPN এর একটি প্রধান উদ্দেশ্য।

অনেক সময় এমন হতে পারে, কোন PE রাউটার থেকে ক্লায়েন্টদের Ping করে লিঙ্ক চেক করার দরকার হতে পারে। যেমন: আই.এস.পি চাচ্ছে যে, তার R1 রাউটার থেকে ABC-1 ও XYZ-1 কে Ping করে দেখবে যে লিঙ্কে কোন প্যাকেট লস বা অন্য কোন সমস্যা আছে কি না। যেহেতু উভয় ক্লায়েন্টের WAN IP একই অর্থাৎ 10.0.0.2 তাই R1 সাধারণ Ping কমান্ডের মাধ্যমে ক্লায়েন্টের আই.পি কে Ping করে পাবে না।

R1#ping 10.0.0.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.2, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)

এর কারণ হলো, 10.0.0.0/30 রাউটটি R1 এর Global Routing Table এ নেই। R1 এ যেহেতু দুইটি ক্লায়েন্টের জন্য দুইটি আলাদা VRF তৈরী করা হয়েছে, তাই প্রতিটি ক্লায়েন্টের রাউটিং ইনফরমেশন তার সংশ্লিষ্ট VRF এর মধ্যে রয়েছে। তাই R1 থেকে ক্লায়েন্টদের Ping করার সময় সংশ্লিষ্ট VRF টি উল্লেখ করতে হবে। এখানে কমান্ডটি হবে নিম্নরূপঃ

R1#ping vrf ABC 10.0.0.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/46/76 ms
R1#ping vrf XYZ 10.0.0.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 24/51/72 ms

এছাড়া R1 থেকে যদি কোন ক্লায়েন্টের আই.পি কে Tracroute করতে হয় সেক্ষেত্রেও সংশ্লিষ্ট VRF টি উল্লেখ করতে হবে।

R1#traceroute vrf ABC 172.16.10.1
Type escape sequence to abort.
Tracing the route to 172.16.10.1
VRF info: (vrf in name/id, vrf out name/id)
  1 20.0.0.1 [MPLS: Labels 204/402 Exp 0] 76 msec 120 msec 120 msec
  2 30.0.0.2 [MPLS: Labels 305/402 Exp 0] 104 msec 120 msec 76 msec
  3 50.0.0.1 [MPLS: Label 402 Exp 0] 88 msec 132 msec 96 msec
  4 50.0.0.2 156 msec 84 msec 132 msec
R1#traceroute vrf XYZ 172.16.10.1
Type escape sequence to abort.
Tracing the route to 172.16.10.1
VRF info: (vrf in name/id, vrf out name/id)
  1 20.0.0.1 [MPLS: Labels 204/401 Exp 0] 108 msec 164 msec 120 msec
  2 30.0.0.2 [MPLS: Labels 305/401 Exp 0] 80 msec 144 msec 92 msec
  3 50.0.0.1 [MPLS: Label 401 Exp 0] 120 msec 136 msec 104 msec
  4 50.0.0.2 100 msec 140 msec 124 msec

কিন্তু কোন ক্লায়েন্ট যদি তার Gateway IP কে Ping করতে চায় তাহলে সাধারণ Ping কমান্ডের মাধ্যমেই তা করা সম্ভব।

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

MPLS Layer-3 VPN এর জটিল ও সুক্ষ্ণ বিষয়গুলো লিখে প্রকাশ করা আসলেই খুব কঠিন কাজ। তারপরও এখানে সমগ্র টিউটোরিয়ালটিতে আমি বিষয়গুলো বাংলায় সহজভাবে বর্ণনা করার চেষ্টা করেছি। কতটুকু সফল হয়েছি তা জানি না। তবে আশাকরি এই টিউটোরিয়ালটি দেখে আপনারা MPLS Layer-3 VPN সম্পর্কে কিছুটা হলেও ধারণা পাবেন এবং সঠিকভাবে তা কনফিগার করতে পারবেন। বেশি বেশি পড়া-শুনা ও প্র্যাকটিস করবেন, এছাড়া ইন্ডাষ্ট্রিতে যারা এক্সপার্ট আছেন তাদের কাছ থেকেও সহযোগীতা ও Tips নিতে পারেন। সবাই ভাল থাকবেন এবং আমার জন্য দোয়া করবেন..... আল্লাহ হাফেজ।