আস-সালামু-আলাইকুম। আশা করি আপনারা সবাই ভাল আছেন। আজ আমরা একটি খুবই সহজ কিন্তু বহুল ব্যবহৃত BGP ফিচার নিয়ে আলোচনা করবো। আর এটি হলো BGP Soft Reset । BGP Soft Reset এমন একটি ফিচার যাকে একটি গুরুত্বপূর্ণ BGP Scaling Technique হিসেবে বিবেচনা করা হয়।
ধরি চিত্রে (Fig-1) প্রদত্ত টপোলজি অনুসারে Upstream এবং Downstream রাউটারদ্বয়ের মধ্যে BGP Peering করা আছে এবং Downstream রাউটারটি Upstream রাউটারের কাছ থেকে কিছু প্রিফিক্স রিসিভ করছে।
UPSTREAM#conf t UPSTREAM(config)#interface fastEthernet 0/0 UPSTREAM(config-if)#ip address 192.168.1.1 255.255.255.252 UPSTREAM(config-if)#no shutdown UPSTREAM(config-if)#description To-Downstream UPSTREAM(config-if)#duplex full UPSTREAM(config-if)#speed 100 UPSTREAM(config-if)#exit UPSTREAM(config)#ip route 1.0.0.0 255.255.255.0 null 0 UPSTREAM(config)#ip route 2.0.0.0 255.255.255.0 null 0 UPSTREAM(config)#ip route 3.0.0.0 255.255.255.0 null 0 UPSTREAM(config)#ip route 4.0.0.0 255.255.255.0 null 0 UPSTREAM(config)#ip route 5.0.0.0 255.255.255.0 null 0 UPSTREAM(config)#ip route 6.0.0.0 255.255.255.0 null 0 UPSTREAM(config)#router bgp 100 UPSTREAM(config-router)#neighbor 192.168.1.2 remote-as 200 UPSTREAM(config-router)#network 1.0.0.0 mask 255.255.255.0 UPSTREAM(config-router)#network 2.0.0.0 mask 255.255.255.0 UPSTREAM(config-router)#network 3.0.0.0 mask 255.255.255.0 UPSTREAM(config-router)#network 4.0.0.0 mask 255.255.255.0 UPSTREAM(config-router)#network 5.0.0.0 mask 255.255.255.0 UPSTREAM(config-router)#network 6.0.0.0 mask 255.255.255.0 UPSTREAM(config-router)#exit
DOWNSTREAM#conf t DOWNSTREAM(config)#interface fastEthernet 0/0 DOWNSTREAM(config-if)#ip address 192.168.1.2 255.255.255.252 DOWNSTREAM(config-if)#no shutdown DOWNSTREAM(config-if)#description To-Upstream DOWNSTREAM(config-if)#duplex full DOWNSTREAM(config-if)#speed 100 DOWNSTREAM(config-if)#exit DOWNSTREAM(config)#router bgp 200 DOWNSTREAM(config-router)#neighbor 192.168.1.1 remote-as 100 DOWNSTREAM(config-router)#exit
DOWNSTREAM#show ip bgp Network Next Hop Metric LocPrf Weight Path *> 1.0.0.0/24 192.168.1.1 0 0 100 i *> 2.0.0.0/24 192.168.1.1 0 0 100 i *> 3.0.0.0/24 192.168.1.1 0 0 100 i *> 4.0.0.0/24 192.168.1.1 0 0 100 i *> 5.0.0.0/24 192.168.1.1 0 0 100 i *> 6.0.0.0/24 192.168.1.1 0 0 100 i
আমাদের এই টপোলজিতে Downstream রাউটার মাত্র ৬টি প্রিফিক্স পাচ্ছে। কিন্তু প্র্যাকটিক্যাল ক্ষেত্রে এই প্রিফিক্সের সংখ্যা কম-বেশি হতে পারে। যেমনঃ প্র্যাকটিক্যাল ক্ষেত্রে অনেকে Upstream থেকে শুধুমাত্র Default Route রিসিভ করে, অনেকে ইন্টারনেটের Full Route রিসিভ করে যা বর্তমানে প্রায় ৬ লাখ এর মতো, আবার অনেকে Full Route রিসিভ না করে কিছু Partial Route রিসিভ করে সাথে একটি Default Route থাকে। এটি একজন নেটওয়ার্ক এ্যাডমিন তার ইচ্ছে মতো এবং রাউটারের ক্যাপাসিটি অনুযায়ী করে থাকেন।
যদি কোন কারণে কোন Downstream রাউটার তার Upstream এর কাছ থেকে রিসিভ করা প্রিফিক্সগুলোকে ফিল্টার করতে চায় বা রিসিভ করা প্রিফিক্সগুলোর সাথে কোন পলিসি যোগ করতে চায় (যেমনঃ Weight, Local Pref ইত্যাদি) তাহলে প্রিফিক্স ফিল্টারিং বা নতুন পলিসিগুলো কার্যকর করার জন্য Downstream রাউটারকে তার Upstream রাউটারের সাথে BGP Peering টিকে রিসেট করতে হয়। BGP Peering রিসেট করা ছাড়াও আরো কিছু টেকনিক আছে যার মাধ্যমে এই কাজটি করা যায়। সেগুলো নিয়ে আমরা একটু পর আলোচনা করবো। কিন্তু প্রথমেই আমাদের বুঝতে হবে এই প্রিফিক্স ফিল্টারিং বা নতুন পলিসিগুলো ঠিক কি কিভাবে কার্যকর হয়।
চিত্রে (Fig-2) প্রদত্ত টপোলজি অনুযায়ী, Upstream রাউটার যখন Downstream রাউটারের কাছে ৬টি প্রিফিক্স পাঠালো তখন এই ৬টি প্রিফিক্স প্রথমেই Downstream রাউটারের BGP Table এ আসবে। এই BGP Table থেকে শুধুমাত্র Best Route গুলোই রাউটারের Routing Table এ যাবে। এখানে BGP Table এ থাকা ৬টি প্রিফিক্সই Best Route হিসেবে বিবেচিত হয়েছে বলে Downstream রাউটারের Routing Table এ এই ৬টি রাউট গিয়েছে।
যদি কোন কারণে Downstream রাউটার তার ইনকামিং প্রিফিক্সগুলোর মধ্যে শুধুমাত্র 1.0.0.0/24 প্রিফিক্সটিকে রেখে বাকি প্রিফিক্সগুলোকে ফিল্টার করতে চায় নিচের কমান্ডগুলো দিতে হবে।
DOWNSTREAM#conf t DOWNSTREAM(config)#ip prefix-list UPSTREAM-IN permit 1.0.0.0/24 DOWNSTREAM(config)#exit DOWNSTREAM(config)#router bgp 200 DOWNSTREAM(config-router)#neighbor 192.168.1.1 prefix-list UPSTREAM-IN in DOWNSTREAM(config-router)#exit
DOWNSTREAM#show ip bgp Network Next Hop Metric LocPrf Weight Path *> 1.0.0.0/24 192.168.1.1 0 0 100 i *> 2.0.0.0/24 192.168.1.1 0 0 100 i *> 3.0.0.0/24 192.168.1.1 0 0 100 i *> 4.0.0.0/24 192.168.1.1 0 0 100 i *> 5.0.0.0/24 192.168.1.1 0 0 100 i *> 6.0.0.0/24 192.168.1.1 0 0 100 i
এখানে Downstream রাউটারে ইনকামিং প্রিফিক্সগুলো ফিল্টার করা হলো।
কিন্তু রাউটারের BGP Table এ এখনও সবগুলো প্রিফিক্সই আছে। অর্থাৎ আমাদের প্রিফিক্স ফিল্টারিং এখনো কার্যকর হয় নি।
এখন আমরা একটু বুঝার চেষ্টা করি, ঠিক কি করলে আমাদের এই প্রিফিক্স ফিল্টারিং কার্যকর হবে। আমরা আগেই জেনেছি যে, Upstream রাউটারের পাঠানো ৬টি প্রিফিক্স প্রথমে Downstream রাউটারের BGP Table এ আসবে এবং BGP Table থেকে Routing Table এ যাবে। যখন Downstream রাউটারে ইনকামিং প্রিফিক্স ফিল্টার করার জন্য আমরা প্রয়োজনীয় কমান্ড দিলাম তখন Downstream রাউটারের BGP Table এর আগে একটি Filter বা ছাকনি যুক্ত হলো। এখন এই Filter বা ছাকনি দিয়ে যতক্ষন পর্যন্ত প্রিফিক্সগুলো পুনরায় না আসবে ততক্ষন পর্যন্ত এই ফিল্টারিং কার্যকর হবে না। কারণ আমাদের Downstream রাউটারে কোন ফিল্টারিং বা পলিসি পরিবর্তন করলেই Upstream রাউটার আমাদেরকে নতুন করে আপডেট পাঠাবে না। তাহলে এখন কি করা যেতে পারে? এক্ষেত্রে আমরা রাউটারদ্বয়ের মধ্যে BGP Peering টিকে রিসেট করতে পারি।
clear ip bgp *
BGP Peering রিসেট করলে রাউটারদ্বয়ের মধ্যে পুনরায় নতুন করে BGP Neighbor Adjacency হবে এবং পরবর্তীতে Upstream রাউটার নতুন করে তার ৬টি প্রিফিক্সকে আবার Downstream রাউটারের কাছ পাঠাবে। কিন্তু এখন যেহেতু Downstream রাউটারে একটি ফিল্টার আছে তাই এই ফিল্টারের মধ্য দিয়ে প্রিফিক্সগুলো ফিল্টার হয়ে রাউটারের BGP Table এ যাবে। এবং পরবর্তীকে BGP Table থেকে Routing Table এ যাবে। (Fig-3)
Downstream রাউটারের সাথে যদি একাধিক রাউটারের BGP Peering থাকে তাহলে Clear ip bgp * কমান্ডটি দিলে সবগুলো রাউটারের সাথে BGP Peering রিসেট হবে। আমরা চাইলে শুধুমাত্র একটি Neighbor এর সাথে BGP Peering রিসেট করতে পারি। এজন্য আমাদেরকে নিচের কমান্ড দিতে হবে।
clear ip bgp neighbor 192.168.1.1
কিন্তু প্র্যাকটিক্যাল ক্ষেত্রে আমাদেরকে ট্রাফিক ইঞ্জিনিয়ারিং এর জন্য প্রায় সময়ই বিভিন্ন ফিল্টারিং বা পলিসি পরিবর্তন করতে হয়। আর এ পরিবর্তনকে কার্যকর করার জন্য আমরা যদি প্রতিবারই BGP Peering রিসেট করি তাহলে নতুন করে Neighbor Adjacency তৈরী করাকালীন সময়টুকুতে আমাদের ট্রাফিক Black Hole এ পড়ে যাবে। আর BGP যেহেতু একটি Slow Convergence প্রটোকল তাই প্রতিবারই আমাদেরকে এক-দুই মিনিটের মতো Downtime ফেস করতে হবে। এই সমস্যা থেকে পরিত্রানের জন্য এবং প্রোডাকশন নেটওয়ার্কে BGP কে Scalable করার জন্য Soft Reconfiguration/Soft Reset নামে BGP এর একটি চমৎকার ফিচার রয়েছে।
Dynamic Soft Reset with Route Refresh CapabilityDynamic Soft Reset হলো BGP এর এমন একটি ফিচার যার মাধ্যমে BGP Peering টি Hard Reset না করেই Neighbor এর কাছে একটি রিকোয়েষ্ট পাঠানো হয়, আর সেই রিকোয়েষ্ট এর জবাবে Neighbor তার BGP Prefix গুলো পুনরায় পাঠায়। তবে এজন্য রাউটারদ্বয়ের মধ্যে অবশ্যই একটি বিশেষ অপশন থাকতে হয় যাকে Route Refresh Capability বলে। এই Route Refresh Capability ফিচারটি RFC 2918 এ ডিফাইন করা হয়েছে। 2000 সালের পর থেকে এখন পর্যন্ত প্রায় সব Cisco রাউটারেই এই Route Refresh Capability ফিচারটি আছে। কোন BGP Neighbor এর Route Refresh Capability আছে কিনা তা আমরা নিচের কমান্ডের মাধ্যমে দেখতে পারি।
DOWNSTREAM#show ip bgp neighbors 192.168.1.1 | begin capabilities Neighbor capabilities: Route refresh: advertised and received(new)
এখানে আউটপুটের “(new)” দ্বারা বুঝানো হয়েছে এটি Route Refresh এর RFC 2918 ভার্সন সাপোর্ট করে। IOS 15.x এ এটি দেখা যায়। পুরাতন IOS ভার্সনগুলোতে “(old & new)” উভয়ই থাকে, এর অর্থ হলো এটি Route Refresh এর RFC 2918 ভার্সন এবং RFC 2918 এর আগের Cisco এর নিজস্ব ইম্প্লিমেন্টেশন উভয়ই সাপোর্ট করে।
Route Refresh Capability আছে এমন Neighbor এর কাছ থেকে নতুন করে প্রিফিক্স পাওয়ার জন্য নিচের কমান্ডটি দিতে হবে।
DOWNSTREAM#clear ip bgp 192.168.1.1 soft in
Downstream রাউটারে এই কমান্ড দিলে এটি Upstream রাউটারের কাছে একটি Refresh Request পাঠাবে আর এই Refresh Request এর জবাবে Upstream রাউটার তার BGP Prefix গুলো পুনরায় পাঠাবে। এভাবে আমরা কোন রকম BGP Hard Reset ও Downtime ছাড়াই আমাদের প্রয়োজনানুসারে Neighbor এর কাছ থেকে নতুন করে প্রিফিক্স পেতে পারি। আর এটিই হলো এখনো পর্যন্ত সবচেয়ে ভাল পদ্ধতি।
Soft Reconfiguration (with Pre-stored Information)এখন ধরুন আমাদের কোন একটি BGP Neighbor রাউটারের Route Refresh Capability নেই। তাহলে কি আমরা কোন Inbound Policy পরিবর্তন করে BGP Hard Reset দিবো? অবশ্যই না। এখানে আমরা একটি বিকল্প পদ্ধতি ব্যবহার করতে পারি যাকে Soft Reconfiguration (with Pre-stored Information) বলা হয়ে থাকে।
যেহেতু আমাদের BGP Neighbor এর Route Refresh Capability নেই আবার অন্যদিকে BGP Hard Reset দেয়াটাও ঠিক হবে না, এই ধরণের ক্ষেত্রে আমরা Neighbor এর কাছ থেকে প্রাপ্ত সব প্রিফিক্সগুলোকে প্রথমে একটি আলাদা টেবিলে সংরক্ষন করতে পারি। এই টেবিলটিকে Adj-RIB-In টেবিল বলা হয়। একটি BGP Inbound প্রসেসে Adj-RIB-In টেবিলের অবস্থান হলো Filter চেকলিষ্টের আগে। অর্থাৎ BGP Neighbor এর কাছ থেকে পাওয়া সবগুলো প্রিফিক্স কোন ধরণের পরিবর্তন ছাড়া প্রথমে এই Adj-RIB-In টেবিলে থাকবে। যদি কোন সময় Inbound Policy পরিবর্তন করার কারণে আমাদেরকে নতুন করে প্রিফিক্স পেতে হয় তাহলে আমরা Neighbor কে কোন রিকোয়েষ্ট না করেই আমাদের নিজেদের Adj-RIB-In টেবিল থেকে প্রিফিক্সগুলো কল করতে পারি।
Route Refresh Capability নেই এমন BGP Neighbor এর জন্য Adj-RIB-In টেবিল তৈরী করতে আমরা নিচের কমান্ড দিতে পারি।
DOWNSTREAM#conf t DOWNSTREAM(config)#router bgp 200 DOWNSTREAM(config-router)#neighbor 192.168.1.1 soft-reconfiguration inbound DOWNSTREAM(config-router)#exit
উক্ত কমান্ড দেওয়ার সাথে সাথে রাউটার তার Neighbor 192.168.1.1 এর জন্য একটি Adj-RIB-In টেবিল তৈরী করবে। এটি দেখার জন্য আমরা নিচের কমান্ডটি দিতে পারি।
DOWNSTREAM#show ip bgp neighbor 192.168.1.1 received-routes Network Next Hop Metric LocPrf Weight Path *> 1.0.0.0/24 192.168.1.1 0 0 100 i * 2.0.0.0/24 192.168.1.1 0 0 100 i * 3.0.0.0/24 192.168.1.1 0 0 100 i * 4.0.0.0/24 192.168.1.1 0 0 100 i * 5.0.0.0/24 192.168.1.1 0 0 100 i * 6.0.0.0/24 192.168.1.1 0 0 100 i Total number of prefixes 6
এখানে দেখা যাচ্ছে, Downstream রাউটার Upstream রাউটারের কাছ থেকে পাওয়া সবগুলো প্রিফিক্স তার Adj-RIB-In টেবিলে সংরক্ষন করছে। Downstream রাউটারে যখন কোন Inbound Policy পরিবর্তন করার কারণে নতুন করে প্রিফিক্স পাওয়ার দরকার হবে সেক্ষেত্রে রাউটার Upstream রাউটারের কাছে রিকোয়েষ্ট না করে (ধরি Upstream রাউটারের Route Refresh Capability নেই) নিজের Adj-RIB-In টেবিল থেকে প্রিফিক্সগুলোকে কল করে Filter চেকলিষ্টের মধ্য দিয়ে পুনরায় ফিল্টার করে তারপরে BGP Table এ নিবে। এরজন্যও কিন্তু আমাদেরকে clear ip bgp 192.168.1.1 soft in কমান্ডটি দিতে হবে।
কিন্তু আলাদা করে এই Adj-RIB-In টেবিল সংরক্ষন করার জন্য রাউটারের বাড়তি মেমোরীর প্রয়োজন হয় এবং কম দামী রাউটারের জন্য এটি অনেকটা বাড়তি Overhead যোগ করে। এবং এতে করে রাউটারের এফিসিয়েন্সীর উপর প্রভাব পড়ে। কিন্তু আশার কথা হলো বর্তমানে প্রায় সব Cisco রাউটারেই Route Refresh Capability আছে, তাই অপ্রয়োজনীয়ভাবে এই Adj-RIB-In টেবিল তৈরী করার দরকার হয় না। আর যদি কেউ এটা করে তাহলে সেটা আসলেই একটি Bad Practice ।
আশা করি এই টিউটোরিয়ালটি আপনাদের ভাল লাগবে এবং টিউটোরিয়ালটি দেখে আপনারা BGP Soft Reset সম্পর্কে কিছুটা ধারণা পাবেন। ভাল থাকবেন সবাই, আল্লাহ হাফেজ।