Configuring Policy Based Routing (PBR)

 

Configuring Policy Based Routing (PBR)

আস-সালামু আলাইকুম। আশা করি আপনারা সবাই ভালো আছেন। আজ আমরা Policy Based Routing (PBR) নিয়ে আলোচনা করবো।

Policy Based Routing (PBR) নিয়ে আলোচনা করার আগে আমরা সাধারণ রাউটিং নিয়ে কিছু কথা জেনে নিই। আমরা যারা রাউটিং নিয়ে কাজ করি বা রাউটিং কনফিগার করেছি তারা জানি যে, সাধারণ রাউটিং এর ক্ষেত্রে যখন রাউটারের কাছে কোন আই.পি প্যাকেট আসে (প্যাকেটের হেডারের মধ্যে সোর্স আই.পি ও ডেষ্টিনেশন আই.পি থাকে) তখন রাউটার প্যাকেটের ডেষ্টিনেশন আই.পি দেখে নিজের রাউটিং ডিসিশন নেয়। ব্যাপারটি অনেকটা এরকম, আমরা যখন ডাকযোগে কোন চিঠি পাঠাই তখন খামের উপর প্রেরক এ প্রাপক উভয়েরই ঠিকানা লেখা থাকে। কিন্তু একজন পিয়ন যখন চিঠিটি ডেলিভারী দেয় সে কিন্তু তখন প্রেরকের ঠিকানা দেখে না, সে শুধূ প্রাপকের ঠিকানা দেখেই চিঠি ডেলিভারী দেয়।

উদাহরণস্বরূপ, চিত্রে প্রদত্ত টপোলজিতে, R1 রাউটারের দুইটি ল্যান আছে, একটি LAN-1 যার আই.পি ব্লক 192.168.0.0/24 এবং দ্বিতীয়টি LAN-2 যার আই.পি ব্লক 192.168.1.0/24 । R1 থেকে R4 এর 172.168.0.0/24 নেটওয়ার্কে যাওয়ার জন্য দুইটি পাথ আছে। একটি হলো R1 > R2 > R4 এবং অন্যটি হলো R1 > R3 > R4 । ধরি, R1 > R2 > R4 হলো Primary পাথ এবং R1 > R3 > R4 হলো Backup পাথ । প্রথমে আমরা নিম্নোক্তভাবে রাউটারসমূহের আই.পি কনফিগার করবো।

R1#conf t
R1(config)#interface fastEthernet 0/0
R1(config-if)#ip address 10.0.10.2 255.255.255.252
R1(config-if)#no shutdown
R1(config-if)#description To-R2
R1(config-if)#exit
R1(config)#interface fastEthernet 0/1
R1(config-if)#ip address 10.0.30.2 255.255.255.252
R1(config-if)#no shutdown
R1(config-if)#description To-R3
R1(config-if)#exit
R1(config)#interface fastEthernet 1/0
R1(config-if)#ip address 192.168.0.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#description LAN-1
R1(config-if)#exit
R1(config)#interface fastEthernet 1/1
R1(config-if)#ip address 192.168.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#description LAN-2
R1(config-if)#exit
R2#conf t
R2(config)#interface fastEthernet 0/0
R2(config-if)#ip address 10.0.10.1 255.255.255.252
R2(config-if)#no shutdown
R2(config-if)#description To-R1
R2(config-if)#exit
R2(config)#interface fastEthernet 0/1
R2(config-if)#ip address 10.0.20.2 255.255.255.252
R2(config-if)#no shutdown
R2(config-if)#description To-R4
R2(config-if)#exit
R3#conf t
R3(config)#interface fastEthernet 0/0
R3(config-if)#ip address 10.0.30.1 255.255.255.252
R3(config-if)#no shutdown
R3(config-if)#description To-R1
R3(config-if)#exit
R3(config)#interface fastEthernet 0/1
R3(config-if)#ip address 10.0.40.2 255.255.255.252
R3(config-if)#no shutdown
R3(config-if)#description To-R4
R3(config-if)#exit
R4#conf t
R4(config)#interface fastEthernet 0/0
R4(config-if)#ip address 10.0.20.1 255.255.255.252
R4(config-if)#no shutdown
R4(config-if)#description To-R2
R4(config-if)#exit
R4(config)#interface fastEthernet 0/1
R4(config-if)#ip address 10.0.40.1 255.255.255.252
R4(config-if)#no shutdown
R4(config-if)#description To-R3
R4(config-if)#exit
R4(config)#interface fastEthernet 1/0
R4(config-if)#ip address 172.16.0.1 255.255.255.0
R4(config-if)#no shutdown
R4(config-if)#description LAN
R4(config-if)#exit

অতঃপর আমরা এখানে ডাইনামিক রাউটিং প্রটোকল হিসেবে OSPF কনফিগার করবো।

R1#conf t
R1(config)#router ospf 1
R1(config-router)#network 10.0.10.0 0.0.0.3 area 0
R1(config-router)#network 10.0.30.0 0.0.0.3 area 0
R1(config-router)#network 192.168.0.0 0.0.0.255 area 0
R1(config-router)#network 192.168.1.0 0.0.0.255 area 0
R1(config-router)#exit
R2#conf t
R2(config)#router ospf 1
R2(config-router)#network 10.0.10.0 0.0.0.3 area 0
R2(config-router)#network 10.0.20.0 0.0.0.3 area 0
R2(config-router)#exit
R3#conf t
R3(config)#router ospf 1
R3(config-router)#network 10.0.30.0 0.0.0.3 area 0
R3(config-router)#network 10.0.40.0 0.0.0.3 area 0
R3(config-router)#exit
R4#conf t
R4(config)#router ospf 1
R4(config-router)#network 10.0.20.0 0.0.0.3 area 0
R4(config-router)#network 10.0.40.0 0.0.0.3 area 0
R4(config-router)#network 172.16.0.0 0.0.0.255 area 0
R4(config-router)#exit

এখন যদি আমরা R1 এর রাউটিং টেবিল দেখি তাহলে, 172.16.0.0/24 নেটওয়ার্কে যাওয়ার জন্য দুইটি পাথ পাবো, কারণ পাথদ্বয়ের Cost সমান।

R1#show ip route
     172.16.0.0/32 is subnetted, 1 subnets
O       172.16.0.1 [110/3] via 10.0.30.1, 00:01:09, FastEthernet0/1
                   [110/3] via 10.0.10.1, 00:01:09, FastEthernet0/0
     10.0.0.0/30 is subnetted, 4 subnets
C       10.0.10.0 is directly connected, FastEthernet0/0
C       10.0.30.0 is directly connected, FastEthernet0/1
O       10.0.20.0 [110/20] via 10.0.10.1, 00:01:09, FastEthernet0/0
O       10.0.40.0 [110/20] via 10.0.30.1, 00:01:09, FastEthernet0/1
C    192.168.0.0/24 is directly connected, Loopback1
C    192.168.1.0/24 is directly connected, Loopback2

কিন্তু Primary ও Backup Path নির্বাচনের জন্য OSPF কনফিগার করার সময় আমরা নিম্নোক্তভাবে R1 এর Fa0/0 ইন্টারফেসের Cost পরিবর্তন করে 10 করবো এবং Fa0/1 ইন্টারফেসের Cost পরিবর্তন করে 20 করবো।

R1#conf t
R1(config)#interface fastEthernet 0/0
R1(config-if)#ip ospf cost 10
R1(config-if)#exit
R1(config)#interface fastEthernet 0/1
R1(config-if)#ip ospf cost 20
R1(config-if)#exit

এখন যদি আমরা R1 এর রাউটিং টেবিল দেখি তাহলে 172.16.0.0/24 নেটওয়ার্কে যাওয়ার একটি পাথ পাবো।

R1#show ip route
     172.16.0.0/32 is subnetted, 1 subnets
O       172.16.0.1 [110/12] via 10.0.10.1, 00:00:21, FastEthernet0/0
     10.0.0.0/30 is subnetted, 4 subnets
C       10.0.10.0 is directly connected, FastEthernet0/0
C       10.0.30.0 is directly connected, FastEthernet0/1
O       10.0.20.0 [110/20] via 10.0.10.1, 00:00:21, FastEthernet0/0
O       10.0.40.0 [110/30] via 10.0.30.1, 00:00:21, FastEthernet0/1
                  [110/30] via 10.0.10.1, 00:00:21, FastEthernet0/0
C    192.168.0.0/24 is directly connected, Loopback1
C    192.168.1.0/24 is directly connected, Loopback2

তাই এখন LAN-1 ও LAN-2 থেকে 172.16.0.0/24 নেটওয়ার্কে যাওয়ার জন্য যে প্যাকেটই আসুক না কেন R1 রাউটার তা 10.0.10.1 এর কাছে পাঠাবে। অর্থাৎ, Primary ও Backup উভয় পাথ UP থাকলে রাউটার R1 সাধারণত Primary পাথ দিয়েই প্যাকেট ফরোয়ার্ড করবে।

PC1#tracert 172.16.0.1
Tracing route to 172.16.0.1 over a maximum of 30 hops
1   42 ms   27 ms   41 ms  192.168.0.1
2   25 ms   22 ms   29 ms  10.0.10.1
3   10 ms   17 ms   32 ms  10.0.20.1
PC2#tracert 172.16.0.1
Tracing route to 172.16.0.1 over a maximum of 30 hops
1   42 ms   27 ms   41 ms  192.168.1.1
2   25 ms   22 ms   29 ms  10.0.10.1
3   10 ms   17 ms   32 ms  10.0.20.1

এক্ষেত্রে Backup পাথটি সব সময় অব্যবহৃত অবস্থায় পড়ে থাকবে যা সার্ভিস প্রোভাইডার নেটওয়ার্কের ক্ষেত্রে অনেক সময় Cost Effective নাও হতে পারে। এখানে অনেকে বলতে পারেন যে, OSPF এর Cost সমান করে পাথ দুইটিকে Equal Cost Path বানিয়ে আমরা Primary ও Backup দুইটি পাথকেই সমানভাবে ব্যবহার করতে পারি। হ্যাঁ… আমরা তা করতে পারি কিন্তু সার্ভিস প্রোভাইডার বা অন্য কোন প্রোডাকশন নেটওয়ার্কে এভাবে Round Robin Load Balancing করলে অনেক সময় অনাকাঙ্খিত Latency ও Packet Loss বেড়ে যেতে পারে।

এক্ষেত্রে সমস্যা সমাধানের উপায় হিসেবে আমরা Policy Based Routing (PBR) কনফিগার করতে পারি। ধরি, LAN-1 এর PC-1 থেকে একটি প্যাকেট 172.16.0.2 (PC-3) এর কাছে যাবে। PC-1 প্রথমে প্যাকেটটি R1 এর কাছে পাঠাবে। অতঃপর R1 ডেষ্টিনেশন আই.পি দেখে প্যাকটটিকে 10.0.10.1 এর কাছে পাঠাবে। অনুরূপভাবে ধরি, LAN-2 এর PC-2 থেকে একটি প্যাকেট 172.16.0.2 (PC-3) এর কাছে যাবে। PC-2 প্রথমে প্যাকেটটি R1 এর কাছে পাঠাবে। অতঃপর R1 ডেষ্টিনেশন আই.পি দেখে প্যাকটটিকে 10.0.10.1 এর কাছে পাঠাবে। অর্থাৎ সব প্যাকেটই Primary পাথ দিয়ে যাবে। এখানে আমরা R1 এর মধ্যে বিশেষভাবে বলে দিতে পারি যে, এটি যদি LAN-2 অর্থাৎ 192.168.1.0/24 নেটওয়ার্ক থেকে 172.16.0.0/24 নেটওয়ার্কে যাওয়ার জন্য কোন প্যাকেট পায়, তাহলে এটি যেন তা 10.0.10.1 এর কাছে ফরোয়ার্ড না করে 10.0.30.1 এর কাছে ফরোয়ার্ড করে। R1 এর মধ্যে এই বিশেষ নির্দেশনা প্রদান করাকেই Policy Based Routing (PBR) বলে। Policy Based Routing (PBR) এর ক্ষেত্রে রাউটার শুধুমাত্র ডেষ্টিনেশন আই.পি দেখেই ট্রাফিক ফরোয়ার্ড করে না, এটি একই সাথে সোর্স আই.পি কেও আমলে নেয়।

Configuring Policy Based Routing (PBR)

 কনফিগারেশন অবজেক্টিভঃ

১. চিত্রে প্রদত্ত টপোলজি অনুযায়ী, PC-1 যদি PC-3 এর কাছে কোন ট্রাফিক পাঠায় তাহলে তা Primary পাথ দিয়ে যাবে, যদি কোন কারণে Primary পাথ Down থাকে তাহলে Backup পাথ দিয়ে ট্রাফিক যাবে।

২. PC-2 যদি PC-3 এর কাছে কোন ট্রাফিক পাঠায় তাহলে তা Backup পাথ দিয়ে যাবে, যদি কোন কারণে Backup পাথ Down থাকে তাহলে Primary পাথ দিয়ে ট্রাফিক যাবে।

সমাধানঃ

১. চিত্রে প্রদত্ত টপোলজিতে যেহেতু আমরা OSPF কনফিগার করেছি, এবং OSPF এর Cost Manipulation এর মাধ্যমে Primary ও Backup পাথ ডিফাইন করেছি তাই PC-1 থেকে PC-3 তে ট্রাফিক সবসময় Primary পাথ দিয়ে যাবে, যদি কোন কারণে Primary পাথ Down থাকে তাহলে Backup পাথ দিয়ে ট্রাফিক যাবে। এক্ষেত্রে নতুন করে কনফিগার করার কিছু নেই।

২. চিত্রে প্রদত্ত টপোলজিতে কনফিগারকৃত OSPF এর ক্যালকুলেশন অনুযায়ী, PC-2 থেকে PC-3 তে ট্রাফিক সাধারণত Primary পাথ দিয়ে যাবে। কিন্তু যেহেতু আমরা PC-2 থেকে PC-3 তে ট্রাফিক Backup পাথ দিয়ে পাঠাতে চাচ্ছি, তাই এক্ষেত্রে PBR কনফিগার করতে হবে।

PBR কনফিগারেশনের শুরুতে আমরা একটি ACL কনফিগার করবো।

R1#conf t
R1(config)#access-list 100 permit ip 192.168.1.0 0.0.0.255 any

এই ACL এর মধ্যে বলে দেওয়া হলো যে, 192.168.1.0/24 ব্লকের আই.পি সমূহ যদি সোর্স আই.পি হয় তাহলে তা PBR এর আওতাভূক্ত হবে। PBR হলো একটি বিশেষ ধরণের Static Route, তাই এই Static Route টি কে সঠিকভাবে কাজ করানোর জন্য আমরা একটি IPSLA কনফিগার করবো। (IPSLA সম্পর্কে বিস্তারিত জানার জন্য আপনারা IPSLA টিউটোরিয়ালটি দেখতে পারেন।)

R1#conf t
R1(config)#ip sla responder
R1(config)#ip sla 10
R1(config-ip-sla)#icmp-echo 10.0.30.1 source-interface fastEthernet 0/1
R1(config-ip-sla-echo)#threshold 100
R1(config-ip-sla-echo)#timeout 1000
R1(config-ip-sla-echo)#frequency 3
R1(config-ip-sla-echo)#exit
R1(config-ip-sla)#exit
R1(config)#ip sla schedule 10 life forever start-time now

অতঃপর IPSLA এর Tracking Object তৈরী করবো।

R1#conf t
R1(config)#track 10 ip sla 10 reachability
R1(config-track)#delay down 1 up 1

এখন আমরা ACL ও IPSLA Tracking Object এর সমন্বয়ে একটি Route-map তৈরী করবো।

R1#conf t
R1(config)#route-map PBR permit 10
R1(config-route-map)#match ip address 100
R1(config-route-map)#set ip next-hop verify-availability 10.0.30.1 1 track 10
R1(config-route-map)#exit

এখানে, Route-map টির নাম দেওয়া হয়েছে PBR, এটি যেকোন নাম দেওয়া যেতে পারে। এই Route-map এ বলে দেওয়া হলো, যদি ACL নম্বর 100 তে উল্লেখিত 192.168.1.0/24 থেকে কোন ট্রাফিক আসে তাহলে তার Next-hop হবে 10.0.30.1, অর্থাৎ Backup পাথ দিয়ে ট্রাফিক যাবে। তবে এক্ষেত্রে R1 থেকে 10.0.30.1 আই.পি টি অবশ্যই Reachable হতে হবে, যদি R1 থেকে 10.0.30.1 আই.পি Reachable না হয় (অর্থাৎ যদি R1 ও R3 এর মধ্যবর্তী লিঙ্ক Down থাকে) তাহলে Route-map টি কাজ করবে না, সেক্ষেত্রে ট্রাফিক Primary পাথ দিয়ে যাবে।

সবশেষে, Route-map টি কে R1 রাউটারের Fa1/1 ইন্টারফেসের সাথে ট্যাগ করে দিতে হবে, কারণ PC-2 বা 192.168.1.0/24 আই.পি ব্লক থেকে ট্রাফিক সব সময় R1 রাউটারের Fa1/1 ইন্টারফেস দিয়েই ঢুকবে।

R1#conf t
R1(config)#interface fastEthernet 1/1
R1(config-if)#ip policy route-map PBR
R1(config-if)#exit

সমগ্র কনফিগারেশন সঠিকভাবে শেষ করার পর, আমরা যদি PC-1 ও PC-2 থেকে PC-3 তে traceroute দিই তাহলে দেখতে পাবো যে, PC-1 থেকে PC-3 তে ট্রাফিক Primary পাথ দিয়ে যাচ্ছে। এবং PC-2 থেকে PC-3 তে ট্রাফিক Backup পাথ দিয়ে যাচ্ছে।

PC1#tracert 172.16.0.1
Tracing route to 172.16.0.1 over a maximum of 30 hops
1   42 ms   27 ms   41 ms  192.168.0.1
2   25 ms   22 ms   29 ms  10.0.10.1
3   10 ms   17 ms   32 ms  10.0.20.1
PC2#tracert 172.16.0.1
Tracing route to 172.16.0.1 over a maximum of 30 hops
1   42 ms   27 ms   41 ms  192.168.1.1
2   25 ms   22 ms   29 ms  10.0.30.1
3   10 ms   17 ms   32 ms  10.0.40.1

যদি কোন কারণে কোন একটি পাথ Down হয়, তাহলে বিকল্প পাথ দিয়ে ট্রাফিক যাবে।

আশা করি এই টিউটোরিয়ালটি আপনাদের ভাল লাগবে এবং টিউটোরিয়ালটি দেখে আপনারা PBR এর বেসিক কনফিগারেশন সম্পর্কে কিছুটা ধারণা পাবেন। ভাল থাকবেন সবাই, আল্লাহ হাফেজ।

Comments