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

Spanning Tree Protocol (STP)

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

উদাহরণস্বরূপ, চিত্রে প্রদত্ত টপোলজিতে PC1 থেকে PC2 তে পৌছানোর জন্য সুইচ S2 সবসময় প্যাকেটটিকে সুইচ S4 এর কাছে পাঠায়। যদি কোন কারণে সুইচ S2 ও সুইচ S4 এর মধ্যবর্তী লিংকটি ডাউন হয় তাহলে সুইচ S2 প্যাকেটটিকে সুইচ S1 ও সুইচ S3 এর মাধ্যমে সুইচ S4 এর কাছে পাঠায়। এখানে PC1 থেকে PC2 তে পৌছানোর জন্য মূল পাথ হলো S2 ---> S4 এবং ব্যাকআপ পাথ হলো S2 ---> S1 ---> S3 ---> S4 । একেই বলে Redundancy ।

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

উদাহরণস্বরূপ, ধরি PC1 সুইচ S2 এর কাছে কোন Broadcast ফ্রেইম পাঠায়। এখন সুইচ S2 এই Broadcast ফ্রেইমটি তার অন্যান্য দুইটি ইন্টারফেস দিয়ে সুইচ S1 ও সুইচ S4 এর কাছে Flooding করে।

এই Broadcast ফ্রেইমটি যখন সুইচ S1 এর কাছে পৌছায় তখন S1 তা সুইচ S3 এর কাছে পাঠায়। সুইচ S3 তা সুইচ S4 এর কাছে পাঠায়। এবং সুইচ S4 তা আবার S2 এর কাছে পাঠায়। অর্থাৎ, S2 ---> S1 ---> S3 ---> S4---> S2

অন্যদিকে Broadcast ফ্রেইমটি যখন সুইচ S4 এর কাছে পৌছায় তখন S4 তা সুইচ S3 এর কাছে পাঠায়। সুইচ S3 তা সুইচ S1 এর কাছে পাঠায়। এবং সুইচ S1 তা আবার S2 এর কাছে পাঠায়। অর্থাৎ, S2 ---> S4 ---> S3 ---> S1 ---> S2

যেহেতু Ethernet ফ্রেইমের কোন Time to Live (TTL) ভ্যালু নেই তাই Broadcast ফ্রেইমটি এইভাবে নেটওয়ার্কের মধ্যে অনবরত ঘুরতে থাকে। এর ফলে সুইচসমূহের CPU ও Memory এর উপর অতিরিক্ত লোড পড়ে এবং নেটওয়ার্কের পারফরম্যান্স উল্লেখযোগ্য হারে হ্রাস পায়। এই ধরণের নেটওয়ার্কে সংযুক্ত ডিভাইসের সংখ্যা যত বেশি হয় Broadcast ফ্রেইমের পরিমাণও তত বেশি হয়। যার ফলে নেটওয়ার্কে Broadcast Storm তৈরী হয় এবং নেটওয়ার্কে ব্যান্ডউইথ সংকট দেখা দেয়।

Layer 2 Loop তৈরী হওয়ার ফলে নেটওয়ার্কে যে কেবল Broadcast Storm তৈরী হয় তা নয়। এর ফলে নেটওয়ার্কে Duplicate Unicast Frame ও তৈরী হয়।

উদাহরণস্বরূপ, ধরি PC1 PC2 এর কাছে কোন Unicast ফ্রেইম পাঠায়। এসময় ফ্রেইমটি প্রথমে সুইচ S2 এর কাছে আসে। সুইচ S2 এর MAC Address Table এ যদি PC2 এর কোন ARP এন্ট্রি না থাকে তাহলে সুইচ S2 এই Unicast ফ্রেইমটি তার অন্যান্য দুইটি ইন্টারফেস দিয়ে সুইচ S1 ও সুইচ S4 এর কাছে Flooding করে।

ফ্রেইমটি যখন সুইচ S4 এর কাছে আসে তখন S4 তা সরাসরি PC2 এর কাছে পাঠিয়ে দেয়।

অন্যদিকে ফ্রেইমটি যখন সুইচ S1 এর কাছে আসে S1 তা সুইচ S3 এর কাছে পাঠায়। সুইচ S3 তা সুইচ S4 এর কাছে পাঠায়। এবং সুইচ S4 একই Unicast ফ্রেইমটি পুনরায় PC2 এর কাছে পাঠিয়ে দেয়। এতে করে PC2 একই Unicast ফ্রেইমটি দুইবার পায়। যেহেতু বেশিরভাগ আপার লেয়ার প্রটোকলসমূহ এই ধরণের Duplicate Unicast Frame ধরতে পারে না তাই Ordered Delivery এর জন্য Transport লেয়ারে ব্যবহৃত Sequence Number এ Mismatch হয়। এতে পাঠানো Unicast Frame সমূহ Discard হয়ে যায়।

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 (BID)

একটি নেটওয়ার্কে Root Bridge নির্বাচনের সময় BID ব্যবহৃত হয়। এই BID এর তিনটি ফিল্ড রয়েছে।

i. 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 তত বেশি হবে।

ii. 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) এর ক্ষেত্রে ইহা কাজে লাগে।

iii. 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 নির্বাচন করার ঝামেলা হয় না এবং নেটওয়ার্কের স্বাভাবিক কাজও বিঘ্নিত হওয়ার আশংকা থাকে না।

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

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

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

এই কমান্ড প্রয়োগের ফলে সুইচ S1 এর Bridge Priority ভ্যালু তার ডিফল্ট ভ্যালু থেকে কমে 24576 এ পরিণত হয়। যেহেতু নেটওয়ার্কের অন্যান্য সুইচসমূহের Bridge Priority ভ্যালু তার ডিফল্ট ভ্যালুতে আছে তাই এই নেটওয়ার্কে সুইচ S1 হবে Root Bridge ।

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

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

এই কমান্ড প্রয়োগের ফলে সুইচ S2 এর Bridge Priority ভ্যালু তার ডিফল্ট ভ্যালু থেকে কমে 28672 এ পরিণত হয়। যদি কোন কারণে মূল Root Bridge সুইচ S1 ফেইল করে তাহলে ব্যাকআপ Root Bridge সুইচ S2 Root Bridge হিসেবে কাজ করবে।

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

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

এখানে 24576 এর জায়গায় যে ভ্যালু ব্যবহার করা হোক না কেন তার রেঞ্জ হতে হবে 0 হবে 65536 এর মধ্যে এবং ভ্যালুটিকে অবশ্যই 4096 দ্বারা নিঃশেষে বিভাজ্য হতে হবে।

কোন সুইচের Bridge Priority ভ্যালু দেখার জন্যঃ

S1#show spanning-tree 
VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    24577
             Address     0007.EC13.061A
             This bridge is the root
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    24577  (priority 24576 sys-id-ext 1)
             Address     0007.EC13.061A
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  20

Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1            Desg FWD 19        128.1    P2p
Fa0/2            Desg FWD 19        128.2    P2p

এখানে সুইচ S1 এর Bridge Priority ভ্যালু হলো 24577। (Priority ভ্যালু 24576 + VLAN ID 1 = 24577)

BPDU Process

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

ধাপ-১: প্রতিটি সুইচ যখন বুট হয় তখন প্রথমে এরা নিজেরা নিজেদের 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 হবে নিম্নরূপঃ

সুইচ	Bridge ID	Root ID
------	---------	-------
সুইচ S1  24577		24577
সুইচ S2  28673		28673
সুইচ S3  32769		32769
সুইচ S4  32769		32769

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

ধাপ-২: যখন সুইচ S2 সুইচ S1 এর নিকট থেকে BPDU ম্যাসেজ পায় তখন এটি S1 এর Root ID 24577 এর সাথে নিজের Root ID 28673 মিলিয়ে দেখে। যেহেতু S1 এর Root ID টি অপেক্ষাকৃত কম তাই সুইচ S2 তার Root ID টি আপডেট করে নেয় এবং নিজের পরিবর্তে সুইচ S1 কে Root Bridge হিসেবে বিবেচনা করে।

ধাপ-৩: যখন সুইচ S1 সুইচ S2 এর নিকট থেকে BPDU ম্যাসেজ পায় তখন এটি S2 এর Root ID 28673 এর সাথে নিজের Root ID 24577 মিলিয়ে দেখে। যেহেতু S2 এর Root ID টি অপেক্ষাকৃত বেশি তাই সুইচ S1 সুইচ S2 থেকে প্রাপ্ত BPDU ম্যাসেজটি Discard করে দেয় এবং নিজেকেই Root Bridge হিসেবে বিবেচনা করে।

ধাপ-৪: যখন সুইচ S3 সুইচ S1 এর নিকট থেকে BPDU ম্যাসেজ পায় তখন এটি S1 এর Root ID 24577 এর সাথে নিজের Root ID 32769 মিলিয়ে দেখে। যেহেতু S1 এর Root ID টি অপেক্ষাকৃত কম তাই সুইচ S3 তার Root ID টি আপডেট করে নেয় এবং নিজের পরিবর্তে সুইচ S1 কে Root Bridge হিসেবে বিবেচনা করে।

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

ধাপ-৬: সবশেষে সমগ্র ক্যালকুলেশনটি হবে নিম্নরূপঃ

সুইচ	Bridge ID	Root ID
------	---------	-------
সুইচ S1  24577		24577
সুইচ S2  28673		24577
সুইচ S3  32769		24577
সুইচ S4  32769		24577

অর্থাৎ সবগুলো সুইচই সুইচ S1 কে Root Bridge হিসেবে বিবেচনা করে।


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