পাঠ ১২ · ৫৭-এর মধ্যে · মডিউল ৩
Home / Courses / Computer Networks / সুইচ ও ফ্রেম ফরওয়ার্ডিং

সুইচ ও ব্রিজ — ফ্রেম ফরওয়ার্ডিং

Switches & bridges — frame forwarding
৮ মিনিট পড়া শুরু · Beginner Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • হাব ও সুইচের মধ্যে মৌলিক পার্থক্য
  • MAC লার্নিং প্রক্রিয়া ও ফরওয়ার্ডিং টেবিল কীভাবে গড়ে ওঠে
  • ফ্লাডিং — কখন ও কেন এটি ঘটে
  • Python দিয়ে একটি ছোট MAC-লার্নিং সুইচ সিমুলেশন

১ · হাব বনাম সুইচ

পুরনো হাবHubএকটি সাধারণ ফিজিক্যাল-লেয়ার ডিভাইস যা এক পোর্টে আসা সিগন্যাল অন্ধভাবে সব পোর্টে পাঠিয়ে দেয়, কোনো ঠিকানা বিবেচনা না করেই। কোনো বুদ্ধিমত্তা ছাড়াই কাজ করত — এক পোর্টে যা আসে, বাকি সব পোর্টে তা পাঠিয়ে দেয়, ঠিকানা বিবেচনা না করেই। ফলে প্রতিটি ডিভাইস প্রতিটি ফ্রেম দেখতে পেত (নিরাপত্তা ও দক্ষতা দুটোই খারাপ), আর যেহেতু সব ডিভাইস একই কলিশন ডোমেইনCollision Domainনেটওয়ার্কের যে অংশে দুটি ডিভাইস একসাথে সিগন্যাল পাঠালে সংঘর্ষ (collision) ঘটতে পারে।-এ থাকত, একাধিক ডিভাইস একসাথে পাঠালে সংঘর্ষ হতো।

একটি সুইচSwitchডেটা লিংক লেয়ারে কাজ করা একটি ডিভাইস, যা গন্তব্য MAC ঠিকানা দেখে ফ্রেম শুধু সঠিক পোর্টে পাঠায়, বাকি সব পোর্টে নয়। অনেক বেশি বুদ্ধিমান — এটি প্রতিটি পোর্টে কোন MAC ঠিকানা আছে তা শেখে, এবং শুধু সঠিক পোর্টে ফ্রেম পাঠায়।

হাব
ফিজিক্যাল লেয়ার · কোনো লার্নিং নেই · সব পোর্টে ব্রডকাস্ট · একক কলিশন ডোমেইন।
সুইচ
ডেটা লিংক লেয়ার · MAC লার্নিং · টার্গেটেড ফরওয়ার্ডিং · প্রতিটি পোর্ট নিজস্ব কলিশন ডোমেইন।

২ · MAC লার্নিং ও ফরওয়ার্ডিং টেবিল

সুইচের কেন্দ্রীয় কৌশলটি সহজ — প্রতিটি ফ্রেম যখন কোনো পোর্টে আসে, সুইচ সেই ফ্রেমের সোর্স MAC ঠিকানা লক্ষ্য করে এবং একটি ফরওয়ার্ডিং টেবিলForwarding Table (MAC Address Table)MAC ঠিকানা → পোর্ট নম্বরের একটি ম্যাপিং, যা সুইচ প্রতিটি আগত ফ্রেমের সোর্স MAC পর্যবেক্ষণ করে গতিশীলভাবে তৈরি করে।-এ সেই ম্যাপিং (MAC → পোর্ট) সংরক্ষণ করে। এটি সময়ের সাথে সাথে গড়ে ওঠে — সুইচ চালু হওয়ার সময় টেবিল খালি থাকে, প্রতিটি নতুন ডিভাইস প্রথমবার কিছু পাঠালেই তার MAC শেখা হয়ে যায়।

মূল অন্তর্দৃষ্টি

লক্ষ্য করুন — সুইচ MAC ঠিকানা শেখে সোর্স থেকে, কিন্তু ব্যবহার করে গন্তব্যের জন্য। একটি ডিভাইস যদি কখনো কিছু না পাঠায় (শুধু গ্রহণ করে), সুইচ তার MAC কখনো শিখবে না — সেই ডিভাইসের উদ্দেশ্যে পাঠানো প্রতিটি ফ্রেম ফ্লাড হতে থাকবে, যতক্ষণ না সে নিজে কিছু পাঠায়।

৩ · ফ্লাডিং — যখন গন্তব্য অজানা

যদি গন্তব্য MAC ঠিকানা এখনো ফরওয়ার্ডিং টেবিলে না থাকে, সুইচ জানে না কোন পোর্টে পাঠাতে হবে — তাই এটি ফ্লাডFloodingগন্তব্য MAC ফরওয়ার্ডিং টেবিলে না থাকলে সুইচের fallback আচরণ — ফ্রেমটি আগত পোর্ট বাদে বাকি সব পোর্টে পাঠানো হয়, ঠিক হাবের মতো। করে — ফ্রেমটি আগত পোর্ট বাদে বাকি সব পোর্টে পাঠায়, ঠিক হাবের মতো আচরণ করে, কিন্তু শুধু এই ব্যতিক্রম পরিস্থিতিতে। প্রকৃত গন্তব্য যখন উত্তর পাঠায়, সুইচ তার MAC শিখে ফেলে, আর পরবর্তী ফ্রেমগুলো সরাসরি সঠিক পোর্টে যায় — ফ্লাডিং থেকে টার্গেটেড ফরওয়ার্ডিং-এ রূপান্তর।

Python
# একটি সরলীকৃত MAC-লার্নিং সুইচ সিমুলেশন
forwarding_table = {}  # mac -> port

def handle_frame(src_mac, dst_mac, in_port, table):
    # ১. সোর্স MAC থেকে শিখুন / আপডেট করুন
    table[src_mac] = in_port
    # ২. গন্তব্য MAC টেবিলে আছে কিনা দেখুন
    if dst_mac in table:
        return table[dst_mac]
    return "FLOOD"

# চারটি ফ্রেমের একটি ছোট সিকোয়েন্স
frames = [
    ("AA:11", "BB:22", 1),  # AA:11 পোর্ট ১-এ, BB:22 এখনও অজানা
    ("BB:22", "AA:11", 2),  # BB:22 পোর্ট ২-এ, AA:11 এখন পরিচিত
    ("CC:33", "AA:11", 3),  # CC:33 পোর্ট ৩-এ, AA:11 পরিচিত
    ("AA:11", "CC:33", 1),  # CC:33 এখন পরিচিত -> সরাসরি ফরওয়ার্ড
]

for src, dst, in_port in frames:
    out = handle_frame(src, dst, in_port, forwarding_table)
    print(f"ফ্রেম: {src} -> {dst}  (in_port={in_port})   =>   সিদ্ধান্ত: {out}")
    print("   বর্তমান ফরওয়ার্ডিং টেবিল:", forwarding_table)
    print()

    
ফ্রেম আসে (in_port) সোর্স MAC শিখুন (table[src]=in_port) গন্তব্য MAC কি টেবিলে আছে? হ্যাঁ নির্দিষ্ট পোর্টে ফরওয়ার্ড করুন না ফ্লাড করুন (in_port বাদে সব পোর্টে)
প্রতিটি ফ্রেমে সুইচ প্রথমে শেখে, তারপর গন্তব্য পরিচিত কিনা অনুযায়ী ফরওয়ার্ড বা ফ্লাড করে।
উপরের কোডে লক্ষ্য করুন — প্রথম ফ্রেমে BB:22 এখনো অজানা থাকায় ফলাফল FLOOD, কিন্তু দ্বিতীয় ফ্রেমের পর থেকে AA:11 পরিচিত হয়ে যাওয়ায় সরাসরি সঠিক পোর্ট নম্বর ফেরত আসে — এটিই MAC লার্নিং-এর মূল আচরণ।

৪ · কলিশন ডোমেইন ও সুইচিং-এর সুবিধা

যেহেতু সুইচ প্রতিটি ফ্রেম নির্দিষ্ট পোর্টে পাঠায় (ফ্লাডিং বাদে), দুটি ভিন্ন কথোপকথন একই সাথে ভিন্ন পোর্টে ঘটতে পারে কোনো সংঘর্ষ ছাড়াই — প্রতিটি পোর্ট কার্যত তার নিজস্ব কলিশন ডোমেইন। আধুনিক সুইচগুলো ফুল-ডুপ্লেক্স মোডে চলে (একই সাথে পাঠানো ও গ্রহণ করা সম্ভব), যা L11-এর CSMA/CD-ভিত্তিক পুরনো শেয়ার্ড-মিডিয়াম Ethernet-এর তুলনায় কলিশনকে প্রায় সম্পূর্ণভাবে দূর করে দেয়।

মূল কথা · Key takeaway

একটি সুইচ কোনো জাদু নয় — এটি শুধু একটি সাধারণ কিন্তু কার্যকর নিয়ম অনুসরণ করে: সোর্স থেকে শিখুন, গন্তব্যের জন্য ব্যবহার করুন, আর অজানা হলে ফ্লাড করুন। এই একটি নিয়মই আধুনিক LAN-কে হাব-ভিত্তিক নেটওয়ার্কের চেয়ে অনেক বেশি দক্ষ ও স্কেলেবল করে তোলে।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ একটি সুইচকে কেন "শেখা" (learning) ডিভাইস বলা হয়, অথচ হাবকে নয়?

হাব কোনো তথ্য মনে রাখে না — এটি প্রতিটি সিগন্যাল অন্ধভাবে সব পোর্টে পাঠিয়ে দেয়, বারবার একই আচরণ করে। সুইচ প্রতিটি আগত ফ্রেমের সোর্স MAC পর্যবেক্ষণ করে একটি ফরওয়ার্ডিং টেবিল তৈরি ও আপডেট করে — সময়ের সাথে সাথে নেটওয়ার্ক সম্পর্কে তার জ্ঞান বাড়ে, যা "শেখা"-র সংজ্ঞার সাথে মেলে।

প্র ০২ একটি ডিভাইস যদি কখনো কিছু না পাঠায়, শুধু গ্রহণ করে, তাহলে সুইচ কি কখনো তার MAC শিখবে?

না — সুইচ শুধু সোর্স MAC থেকে শেখে। যে ডিভাইস কখনো নিজে ফ্রেম পাঠায়নি, তার MAC ফরওয়ার্ডিং টেবিলে কখনো যোগ হবে না। ফলে তার উদ্দেশ্যে পাঠানো প্রতিটি ফ্রেম বারবার ফ্লাড হতে থাকবে, যতক্ষণ না সেই ডিভাইস নিজে অন্তত একটি ফ্রেম পাঠায় (যেমন কোনো অনুরোধের উত্তর দেওয়ার সময়)।

প্র ০৩ একটি সুইচের ফরওয়ার্ডিং টেবিলের আকার সীমিত হলে (মেমরি সীমা), এতে কী সমস্যা হতে পারে?

টেবিল পূর্ণ হয়ে গেলে সুইচ নতুন MAC ঠিকানা শিখতে পারে না, ফলে অনেক গন্তব্যের জন্য ফ্লাডিং বাড়তে থাকে — কার্যত সুইচ আংশিকভাবে হাবের মতো আচরণ শুরু করে (কর্মক্ষমতা কমে যায়)। বাস্তব আক্রমণেও (MAC flooding attack) ইচ্ছাকৃতভাবে ভুয়া MAC দিয়ে টেবিল পূর্ণ করে দেওয়া হয় — এই আক্রমণের বিস্তারিত cybersecurity কোর্সের নেটওয়ার্ক অ্যাটাক পাঠে (Cybersecurity/L09) দেখানো হয়েছে।

অনুশীলন

  1. চিন্তা করুন: একটি অফিসের ৫টি ডিভাইস একটি সুইচের সাথে সংযুক্ত। সুইচ সবে চালু হয়েছে (টেবিল খালি)। প্রথম ফ্রেমটি কেন প্রায় নিশ্চিতভাবেই ফ্লাড হবে, তা ব্যাখ্যা করুন।

    টেবিল খালি থাকায় সুইচ এখনো কোনো MAC-এর পোর্ট জানে না — তাই যেকোনো প্রথম ফ্রেমের গন্তব্য টেবিলে খুঁজে পাওয়া যাবে না, ফলে সিদ্ধান্ত হবে FLOOD। শুধু সেই ফ্রেমের সোর্স MAC-টিই শেখা হবে; গন্তব্য তখনও অজানা থেকে যাবে যতক্ষণ না সে নিজে কিছু পাঠায়।

  2. পরীক্ষা করুন: উপরের কোড সেলে frames তালিকায় নতুন একটি ফ্রেম যোগ করুন যেখানে সোর্স ও গন্তব্য উভয়ই আগে থেকে টেবিলে পরিচিত — নিশ্চিত করুন ফলাফল সরাসরি সঠিক পোর্ট নম্বর দেখায়, FLOOD নয়।

    যেমন ("BB:22", "CC:33", 2) যোগ করলে — যেহেতু আগের ফ্রেমগুলো থেকে CC:33 পোর্ট ৩-এ পরিচিত হয়ে গেছে, ফলাফল হবে 3, FLOOD নয়। এটি নিশ্চিত করে যে একবার কোনো MAC শেখা হয়ে গেলে, ভবিষ্যতের সব ফ্রেম সরাসরি টার্গেটেড ফরওয়ার্ডিং পায়।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

পাঠ ১১
MAC অ্যাড্রেস ও Ethernet