Sunday, July 7, 2019

Spanning Tree Protocol কি ? Spanning Tree Protocol সম্পর্কে বিস্তারিত জানুন

যেকোন ধরনের নেটওয়ার্কের ক্ষেত্রে Redundant Connection একটি গুরুত্বপূর্ন বিষয়। একটি নেটওয়ার্কের কোন একটি লিংক যদি কোন কারণে ডাউন হয়ে যায় তাহলে ঐ লিংকের সাথে যুক্ত সকল ডিভাইসসমূহ নেটওয়ার্ক থেকে বিচ্ছিন্ন হয়ে যায়। Redundancy বলতে এখানে একই ডেস্টিনেশন এ যাওয়ার জন্য একটি মূল পাথ এর পাশাপাশি একটি ব্যাকআপ/অল্টারনেট পাথকে বুঝায়, যাতে করে কোন কারণে মূল পাথটি ডাউন হয়ে গেলে ব্যাকআপ পাথের মাধ্যমে অনায়াসে ডাটা আদান-প্রদান করা যায়।

উদাহরণ সরুপ যদি আমরা উপরের চিত্রের দিকে লক্ষ করি, তাহলে এখানে মোট তিনটি Swtich রয়েছে। যরা পরস্পর পরস্পর এর সাথে যুক্ত। এখন যদি PC0 PC1 এর সাথে কানেক্ট হতে চায় তাহলে মোট দুটি পথে PC1 এর কাছে পেীছাতে পারে। প্রথম পথটি হলে PC0>Switch 0>Switch 1>PC1 এবং আর একটি পথ আছে তা হল PC0>Switch 0>Switch 2>Switch 1>PC1। এখানে এই দ্বিতীয় পাথটি হলে ব্যাকআপ পাথ। এই রকমের কানেকশনকেই বলা হয় Redundant Connection.

Redundant Connection Hierarchical নেটওয়ার্ক ডিজাইনের জন্য একটি গুরুত্বপূর্ণ অংশ। Redundancy এর ফলে নেটওয়ার্কে অনাকাঙ্খিত ডাউনটাইম হ্রাস পায়। আবার Redundant Connection যদি সঠিকভাবে কনফিগার করা না তাহলে ঐ নেটওয়ার্কে Layer 2 Loop তৈরী হয়ে নেটওয়ার্কটিকে অকার্যকর করে দিতে পারে।

চলুন দেখি কিভাবে নেটওয়ার্কে Layer 2 loop তৈরি হয়। মনে করি PC0 একটি ব্রডকাষ্ট ফ্রেম ডেলিভার করল SW0 এর কাছে। ব্রডকাষ্ট ফ্রেম কাকে বলে? যখন কোন ফ্রেম এ ডেস্টিনেশন ম্যাক অ্যাড্রেস ff:ff:ff:ff:ff:ff থাকে তখন তাবে বলা হয় ব্রডকাষ্ট ফ্রেম। যখন কোন সুইচ এর কাছে এই রকম কোন ব্রডকাষ্ট ফ্রেম আসে তখন সে তার সমস্থ অ্যাকটিভ ইন্টারফেস দিয়ে (শুধু মাত্র যেই  ইন্টারফেস ‍দিয়ে ফ্রেমটিকে রিসিভ করে সেই ইন্টারফেস ছাড়া) ফ্রেমটিকে ট্রান্সমিট করে দেয়। SW0 এই ব্রডকাষ্ট ফ্রেমটিকে একই সাথে তার Fa 0/1 ও Fa 0/2 ইন্টারফেসদিয়ে ডেলিভারি করে দিবে । যখন SW0 যখন ফ্রেমটিকে SW1 এর কাছে পাঠায় SW1 আবার সেই ফ্রেমটিকে তার অন্য দুটি পোর্ট দিয়ে ট্রান্সমিট করে দেয় এবং ফ্রেমটি ‍SW1 এর Fa 0/2 ইন্টারফেস দিয়ে SW2 এর কাছে পাঠায়। SW 2 যখন ‍SW1 এর কাছে থেকে ফ্রেমটিকে রিসিভ করে তখন সে আবার এই ফ্রেমটিকে তার Fa 0/2 ইন্টারফেস দিয়ে SW0 এর কাছে ট্রান্সমিট করে দেয়। একই সময়ে ‍SW0 আবার যখন তার Fa0/2 ইন্টারফেস দিয়ে SW2 এর কাছে ফ্রেমটিকে ট্রান্সমিট করেছিল SW2 আবার সেই ফ্রেমটিকে তার Fa 0/1 পোর্টদিয়ে SW1 এর কাছে ট্রান্সমিট করে দিবে । SW1 আবার সেই একই ফ্রেমটিকে তার Fa 0/1 পোর্টদিয়ে SW0 এর কাছে পাঠাবে ।

এখানে মূল যে ঘটনা ঘটতেছে তা হল ফ্রেমটি SW0 এর Fa 0/1 ইন্টারফেস দিয়ে SW1>SW2>SW0 এর কছে চলে আসে । একই সাথে ফ্রেমটি SW0 এর Fa 0/2 ইন্টারফেস দিয়ে SW2>SW1>SW0 তে আসে । এভাবে ফ্রেমটি নেটওয়ার্কে ব্রডকাষ্ট হতে থাকে  ফলে যা হবে তা হল সুইচের প্রসেসর ও মেমোরির উপর অতিরিক্ত লোড পরে যার ফলে নেটওয়ার্ক এর পারফরমেন্স কমে যায়। এই ধরণের নেটওয়ার্কে সংযুক্ত ডিভাইসের সংখ্যা যত বেশি হয় Broadcast ফ্রেইমের পরিমাণও তত বেশি হয়। যার ফলে নেটওয়ার্কে Broadcast Storm তৈরী হয় এবং নেটওয়ার্কে ব্যান্ডউইথ সংকট দেখা দেয়। Layer 2 Loop তৈরী হওয়ার ফলে নেটওয়ার্কে যে কেবল Broadcast Storm তৈরী হয় তা নয়। এর ফলে নেটওয়ার্কে Duplicate Unicast Frame ও তৈরী হয়।

Spanning Tree Protocol (STP): Layer 2 Loop এর ফলে সৃষ্ট এই ধরণের সমস্যা থেকে পরিত্রান পাওয়ার জন্য এবং একটি Scalable ও Redundant নেটওয়ার্ক গড়ে তোলার জন্য নেটওয়ার্ক সুইচসমূহে এক ধরণের বিশেষ মেকানিজম ব্যবহৃত হয় যার নাম হলো Spanning Tree Protocol বা সংক্ষেপে STP । STP হলো এমন এক ধরণের প্রটোকল যার মাধ্যমে কোন ডেষ্টিনেশন ডিভাইসে পৌছানোর জন্য একাধিক ফিজিক্যাল পাথের মধ্য থেকে একটি পাথকে এ্যাকটিভ রাখা হয় এবং অন্যান্য সকল পাথসমূহকে ব্লকড রাখা হয় যেগুলো ব্যাকআপ পাথ হিসেবে ব্যবহৃত হয়। ডাটা ট্রাফিকসমূহ শুধুমাত্র এ্যাকটিভ পাথ দিয়ে চলাচল করে (তবে ব্লবড পাথের মধ্য দিয়ে STP প্রসেসে ব্যবহৃত BPDU ম্যাসেজসমূহ বিনিময় হয়)। যদি কোন কারণে এ্যাকটিভ পাথ ডাউন হয়ে যায় তাহলে ব্যাকআপ পাথটি আনব্লকড হয় এবং ব্যাকআপ পাথ ব্যবহার করে ট্রাফিক চলাচল করে। আবার যখন মূল পাথটি সচল হয় তখন ব্যাকআপ পাথটি আগের মতো ব্লকড রাখা হয় এবং ট্রাফিক মূল পাথ দিয়ে চলাচল করে। এতে নেটওয়ার্কের ডাউন টাইম হ্রাস পায়। একটি নেটওয়ার্কের কোন পাথটি এ্যাক্টিভ এবং কোন পাথটি ব্লকড অবস্থায় থাকবে তা Spanning Tree Algorithm (STA) এর মাধ্যমে ডায়নামিকভাবে ক্যালকুলেট করা হয়ে থাকে।

Spanning Tree Algorithm (STA): STP তার Spanning Tree Algorithm (STA) এর মাধ্যমে নেটওয়ার্কের সবগুলো সুইচের মধ্য থেকে একটি সুইচকে Root Bridge হিসেবে নির্বাচন করে। Root Bridge হলো এমন একটি সুইচ যা নেটওয়ার্কের সমস্ত পাথ ক্যালকুলেশনের ক্ষেত্রে রেফারেন্স পয়েন্ট হিসেবে ব্যবহৃত হয়। এই Root Bridge কে কেন্দ্রবিন্দু হিসেবে বিবেচনা করে নেটওয়ার্কের বিভিন্ন ডেষ্টিনেশনে পৌছানোর জন্য Shortest/Best পাথ ক্যালকুলেশন করা হয়ে থাকে। Cisco সুইচসমূহে বাই ডিফল্ট STP ফিচারটি এনাবল করা থাকে।

Root Bridge Election: STP প্রসেসে একটি LAN বা Broadcast ডোমেইনের মধ্য থাকা সুইচসমূহের মধ্য থেকে একটি সুইচ Root Bridge হিসেবে নির্বাচিত হয়। LAN বা Broadcast ডোমেইনের সকল সুইচসমূহ এই Root Bridge নির্বাচন প্রক্রিয়ায় অংশগ্রহণ করে। এরা একে অপরের সাথে Bridge Protocol Data Unit (BPDU) ম্যাসেজ আদান-প্রদান করে। BPDU ম্যাসেজের মধ্যে সুইচসমূহের Bridge ID থাকে এবং Lowest Bridge ID এর উপর ভিত্তি করে Root Bridge নির্বাচন করা হয়।

Bridge ID: একটি নেটওয়ার্কে Root Bridge নির্বাচনের সময় Bridge ID ব্যবহৃত হয়। এই Bridge ID এর তিনটি ফিল্ড রয়েছে। যথা:
  1. Bridge Priority
  2. Extended System ID
  3. MAC Address
Bridge Priority: Lowest Bridge ID নির্ধারণের সময় সর্বপ্রথম Bridge Priority বিবেচনায় নেওয়া হয়। যে সুইচের Bridge Priority ভ্যালু সবচেয়ে কম সে সুইচের Bridge ID ও সবচেয়ে কম। আর যে সুইচের Bridge ID সবচেয়ে কম সে সুইচটিই হবে Root Bridge । Cisco সুইচসমূহের ডিফল্ট Bridge Priority ভ্যালু হলো 32768 । আমরা যদি কোন একটি নির্দিষ্ট সুইচকে Root Bridge (ফোর্সলি) হিসেবে নির্বাচন করতে চাই তাহলে এই Bridge Priority ভ্যালুটি কমাতে হবে। এই ভ্যালুটি প্রয়োজন অনুসারে 1 থেকে 65536 এর মধ্যে কনফিগার করা যায়। ভ্যালুটি যত কম হবে Priority তত বেশি হবে।

Extended System ID: STP এর প্রয়োগের শুরুর দিকে এটি কেবল Non-VLAN নেটওয়ার্কে ব্যবহৃত হতো। কিন্তু যখন VLAN বেজড নেটওয়ার্কের প্রচলন শুরু হয় তখন STP এর মধ্যে আলাদা আলাদা ভাবে VLAN চিহ্নিত করার জন্য একটি অতিরিক্ত Extended System ID ব্যবহৃত হয়। Extended System ID এর মধ্যে সংশ্লিষ্ট VLAN এর VLAN ID থাকে।

যখন কোন Extended System ID ব্যবহৃত হয় না তখন Bridge Priority ভ্যালুটি হয় 16 বিটের। কিন্তু Extended System ID ব্যবহৃত হলে ভ্যালুটি হয় 4 বিটের বাকী 12 বিট হয় Extended System ID । এসময় Bridge Priority ভ্যালুটির ইনক্রিমেন্ট 1 করে হয় না, এর ইনক্রিমেন্ট হয় 4096 করে। অর্থাৎ 4096, 8192, 12288, 16384, …………, 65536 । একটি BPDU ম্যাসেজের Priority ও VLAN চিহ্নিত করার জন্য এই Extended System ID যোগ করা হয়। Per VLAN Spanning Tree (PVST) এর ক্ষেত্রে ইহা কাজে লাগে।

MAC Address: যখন সবগুলো সুইচে একই Bridge Priority ভ্যালু ও Extended System ID কনফিগার করা থাকে তখন Lowest Bridge ID নির্ধারণের জন্য টাই-ব্রেকার হিসেবে সুইচসমূহের MAC Address ব্যবহৃত হয়। এক্ষেত্রে যে সুইচের MAC Address এর হেক্সাডেসিমাল ভ্যালু সবচেয়ে কম সে সুইচটিই হবে Root Bridge ।

একটি নেটওয়ার্কের সবগুলো সুইচ যদি ডিফল্ট কনফিগারেশনে থাকে তাহলে কোন সুইচটি Root Bridge হিসেবে নির্বাচিত হবে তা আগে থেকে আনুমান করা যায় না। তাই এক্ষেত্রে নির্দিষ্ট কোন সুইচের Bridge Priority ভ্যালু কমিয়ে সুইচটিকে Root Bridge হিসেবে নির্বাচন করানো যায়। এক্ষেত্রে পরবর্তীতে নেটওয়ার্কে কোন Lower MAC Address বিশিষ্ট সুইচ যুক্ত করলে নতুন করে Root Bridge নির্বাচন করার ঝামেলা হয় না এবং নেটওয়ার্কের স্বাভাবিক কাজও বিঘ্নিত হওয়ার আশংকা থাকে না।


BPDU Process: BPDU ম্যাসেজ আদান-প্রদানের মাধ্যমে Root Bridge নির্বাচনের ক্ষেত্রে সমগ্র BPDU প্রসেসটি নিম্নে বর্ণনা করা হল।

STEP 1: প্রতিটি সুইচ যখন বুট হয় তখন প্রথমে এরা নিজেরা নিজেদের Root Bridge হিসেবে বিবেচনা করে। সুইচসমূহ প্রতি দুই সেকেন্ড পর পর নিজেদের মধ্যে Bridge Protocol Data Unit (BPDU) ম্যাসেজ আদান-প্রদান করে। BPDU ম্যাসেজের মধ্যে সুইচসমূহের Bridge ID ও Root ID থাকে। Bridge ID হলো একটি সুইচের নিজের Bridge Priority ভ্যালু এবং Root ID হলো এমন একটি Priority ভ্যালু যে ভ্যালুযুক্ত সুইচকে উক্ত সুইচ Root Bridge হিসেবে বিবেচনা করে। যেহেতু প্রতিটি সুইচ যখন বুট হয় তখন প্রথমে এরা নিজেরা নিজেদের Root Bridge হিসেবে বিবেচনা করে, তাই চিত্রে প্রদত্ত সুইচগুলোর Bridge ID ও Root ID হবে নিম্নরূপঃ

Switch     Bridge ID                Root ID
------        ---------                    -------
SW0        4097                       4097
SW1       8192                       8192
SW2       32769                    32769

চিত্রে SW0 এর Bridge Priority ভ্যালু সবচেয়ে কম তাই এটি একটি Root Bridge । (Priority ভ্যালু যত কম হবে, Priority তত বেশি হবে)

STEP 2: যখন সুইচ SW0 সুইচ SW 1 এর নিকট থেকে BPDU ম্যাসেজ পায় তখন এটি SW1 এর Root ID 8192 এর সাথে নিজের Root ID 4097 মিলিয়ে দেখে। যেহেতু SW 0 এর Root ID টি অপেক্ষাকৃত কম তাই সুইচ S0 তার Root ID টি আপডেট করে নেয় এবং নিজেকে Root Bridge হিসেবে বিবেচনা করে।

STEP 3: যখন সুইচ SW1 সুইচ SW0 এর নিকট থেকে BPDU ম্যাসেজ পায় তখন এটি SW0 এর Root ID 4097 এর সাথে নিজের Root ID 8192 মিলিয়ে দেখে। যেহেতু SW1 এর Root ID টি অপেক্ষাকৃত বেশি তাই সুইচ SW1 সুইচ SW0 থেকে প্রাপ্ত BPDU ম্যাসেজটি Accept করে এবং নিজের পারিবর্তে ‍SW0 কে Root Bridge হিসেবে বিবেচনা করে।

STEP 4: যখন সুইচ SW2 সুইচ SW0 এর নিকট থেকে BPDU ম্যাসেজ পায় তখন এটি SW0 এর Root ID 4097এর সাথে নিজের Root ID 8192 মিলিয়ে দেখে। যেহেতু SW0 এর Root ID টি অপেক্ষাকৃত কম তাই সুইচ SW2 তার Root ID টি আপডেট করে নেয় এবং নিজের পরিবর্তে সুইচ SW0 কে Root Bridge হিসেবে বিবেচনা করে।

STEP 5: সুইচ SW2 ও সুইচ SW1 নিজেদের মধ্যে BPDU ম্যাসেজ আদান-প্রদান করে। যেহেতু উভয়েরই Root ID এখন 4097 তাই উভয় সুইচই একে অপরের কাছ থেকে প্রাপ্ত BPDU ম্যাসেজ Discard করে দেয়। (কোন সুইচ শুধুমাত্র তখনই BPDU ম্যাসেজ গ্রহণ করবে যখন প্রাপ্ত BPDU ম্যাসেজের Root ID নিজের Root ID এর ছোট হবে।)

ধাপ-৬: সবশেষে সমগ্র ক্যালকুলেশনটি হবে নিম্নরূপঃ
Switch     Bridge ID                Root ID
------        ---------                    -------
SW0        4097                       4097
SW1       8192                       4097
SW2       32769                    4097

অর্থাৎ সবগুলো সুইচই সুইচ SW0  কে Root Bridge হিসেবে বিবেচনা করে।
                      
Root Bridge: কোন সুইচকে ফোর্সলি Root Bridge হিসেবে কাজ করানোর জন্য এর ডিফল্ট Bridge Priority ভ্যালু দুইভাবে কমানো যায়।

Method-1: ধরি আমরা সুইচ S1 কে Root Bridge হিসেবে নির্বাচন করতে চাচ্ছি, এজন্য আমরা সুইচ S1 এ নিচের কমান্ড দিব।

S1#configure terminal
S1(config)#spanning-tree vlan 1 root primary
S1(config)#

আমরা যদি নেটওয়ার্কের অন্য কোন সুইচকে ব্যাকআপ Root Bridge হিসেবে নির্বাচন করতে চাই তাহলে ঐ সুইচে নিচের কমান্ড দিতে হবে।

S2#configure terminal
S2(config)#spanning-tree vlan 1 root secondary
S2(config)#

Method-2: সরাসরি Bridge Priority ভ্যালু সেট করার মাধ্যমেও সুইচের Priority ভ্যালু কমানো যায়।

S1#configure terminal
S1(config)#spanning-tree vlan 1 priority 4096
S1(config)#


এই প্রাওরিটি ভালুটি প্রতিবার 4096 করে বাড়াতে বা কমাতে পারব । প্রতিবার আমরা যতই বাড়াই বা কমাই না কেন তা অবশ্যই 4096 দ্বারা নিঃশেষে বিভাজ্য হতে হবে।

কোন সুইচের Bridge Priority ভ্যালু দেখার জন্যঃ sh spanning-tree এই কমান্ডটি প্রয়োজ করতে হয়


No comments:

Post a Comment