পাঠ ৪১ · ৫৭-এর মধ্যে · মডিউল ৮
Home / Courses / Computer Networks / মোবাইল IP ও হ্যান্ডঅফ

মোবাইল IP ও হ্যান্ডঅফ

Mobile IP & handoff
৭ মিনিট পড়া মধ্যবর্তী · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

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

  • কেন সাধারণ IP অ্যাড্রেসিং মোবাইল ডিভাইসের জন্য একটি সমস্যা তৈরি করে
  • Mobile IP-এর হোম এজেন্ট ও হোম অ্যাড্রেসের মূল ধারণা
  • হ্যান্ডঅফ কী এবং কেন এটি একটি genuinely কঠিন ইঞ্জিনিয়ারিং সমস্যা
  • Hysteresis margin কীভাবে ping-pong হ্যান্ডঅফ প্রতিরোধ করে — Python সিমুলেশনসহ

১ · সমস্যা — IP অ্যাড্রেসিং ও মোবিলিটি

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

২ · Mobile IP — হোম এজেন্টের ধারণা

Mobile IPMobile IPএকটি ডিভাইস তার স্থায়ী "হোম অ্যাড্রেস" ধরে রাখে, আর তার বর্তমান অবস্থান একটি "হোম এজেন্ট"-এর কাছে নিবন্ধন করে, যে চলমান ট্রাফিক সেখানে ফরওয়ার্ড/টানেল করে দেয় — এভাবে সংযোগ ডিভাইসের ভৌত অবস্থান পরিবর্তনের পরেও টিকে থাকে। (ধারণাগতভাবে, প্রোটোকল-নির্দিষ্ট গভীরতা ছাড়া) এই সমস্যার সমাধান করে — ডিভাইসটি একটি স্থায়ী হোম অ্যাড্রেস ধরে রাখে, আর একটি হোম এজেন্ট-এর কাছে তার বর্তমান অবস্থান নিবন্ধন করে। হোম এজেন্ট তখন আগত ট্রাফিক ফরওয়ার্ড/টানেল করে দেয় ডিভাইস যেখানেই বর্তমানে আছে সেখানে — এভাবে চলমান সংযোগগুলো ডিভাইস ভৌতভাবে নেটওয়ার্কের মধ্যে সরে গেলেও টিকে থাকে।

৩ · হ্যান্ডঅফ — সিমলেস স্থানান্তরের চ্যালেঞ্জ

হ্যান্ডঅফHandoff / Handoverএকটি চলমান সক্রিয় সংযোগকে এক বেস স্টেশন/অ্যাক্সেস পয়েন্ট থেকে অন্যটিতে স্থানান্তরের প্রক্রিয়া, আদর্শভাবে ব্যবহারকারী কোনো বিঘ্ন টের না পেয়েই। হলো একটি ডিভাইস চলাফেরা করার সময় তার সক্রিয় সংযোগকে এক বেস স্টেশন/AP থেকে পরবর্তীটিতে স্থানান্তরের প্রক্রিয়া — লক্ষ্য থাকে ব্যবহারকারী যেন কোনো বিঘ্ন টেরই না পায় ("সিমলেস হ্যান্ডঅফ")। এটি একটি সত্যিকারের কঠিন ইঞ্জিনিয়ারিং সমস্যা, কারণ পুরনো সংযোগ ছাড়া এবং নতুন সংযোগ স্থাপনের সময় নির্ভুলভাবে সমন্বয় করতে হয়।

Ping-pong সমস্যা

একটি ডিভাইস যদি দুটি টাওয়ারের সীমানার ঠিক মাঝামাঝি থাকে (যেখানে উভয়ের সিগন্যাল প্রায় সমান শক্তির), সরল "শক্তিশালী সিগন্যালে স্যুইচ করো" লজিক বারবার এদিক-ওদিক স্যুইচ করতে পারে যতটুকু ওঠানামা সিগন্যালে হয় — একে ping-pong হ্যান্ডঅফ বলা হয়, যা অপ্রয়োজনীয় ওভারহেড ও সম্ভাব্য সংযোগ বিঘ্ন তৈরি করে। সমাধান — একটি hysteresis margin ব্যবহার করা: নতুন টাওয়ারে তখনই স্যুইচ করো যখন তার সিগন্যাল বর্তমান টাওয়ারের চেয়ে একটি নির্দিষ্ট মার্জিনের বেশি শক্তিশালী, শুধু সামান্য বেশি হলেই নয়।

Python
# হ্যান্ডঅফ সিদ্ধান্ত — hysteresis margin দিয়ে ping-pong এড়ানো
def select_best_tower(towers, current_tower, hysteresis_margin):
    """towers: {tower_name: signal_strength_dbm} — dBm মান যত বেশি (কম ঋণাত্মক),
    সিগন্যাল তত শক্তিশালী। শুধুমাত্র margin-এর বেশি ব্যবধানে স্যুইচ করা হয়।"""
    current_strength = towers[current_tower]
    best_tower = current_tower
    best_strength = current_strength
    for name, strength in towers.items():
        if strength > best_strength:
            best_tower = name
            best_strength = strength

    if best_tower != current_tower and (best_strength - current_strength) > hysteresis_margin:
        return best_tower
    return current_tower

# পরিস্থিতি ১: সামান্য পার্থক্য -> স্যুইচ করা উচিত নয় (ping-pong এড়ানো)
towers_1 = {"Tower-A": -70, "Tower-B": -68}
result_1 = select_best_tower(towers_1, current_tower="Tower-A", hysteresis_margin=5)
print("পরিস্থিতি ১ — সামান্য পার্থক্য (Tower-A=-70dBm, Tower-B=-68dBm, margin=5):")
print("  সিদ্ধান্ত:", result_1, "-- Tower-A ধরে রাখা হলো, সামান্য পার্থক্যে স্যুইচ করা হয়নি" if result_1 == "Tower-A" else "")

# পরিস্থিতি ২: স্পষ্টভাবে শক্তিশালী টাওয়ার -> হ্যান্ডঅফ হওয়া উচিত
towers_2 = {"Tower-A": -85, "Tower-B": -60}
result_2 = select_best_tower(towers_2, current_tower="Tower-A", hysteresis_margin=5)
print("\nপরিস্থিতি ২ — স্পষ্ট পার্থক্য (Tower-A=-85dBm, Tower-B=-60dBm, margin=5):")
print("  সিদ্ধান্ত:", result_2, "-- হ্যান্ডঅফ সম্পন্ন হলো Tower-B-তে" if result_2 == "Tower-B" else "")

    
নতুন টাওয়ারের সিগন্যাল মাপা হলো পার্থক্য > hysteresis margin? হ্যাঁ -> হ্যান্ডঅফ সম্পন্ন করো না -> বর্তমান টাওয়ারেই থাকো
শুধু hysteresis margin অতিক্রম করলেই হ্যান্ডঅফ ঘটে — সামান্য ওঠানামায় বারবার স্যুইচিং (ping-pong) এড়ানো যায়।
লক্ষ্য করুন — dBm স্কেলে সিগন্যাল স্ট্রেংথ সাধারণত ঋণাত্মক সংখ্যায় প্রকাশ করা হয়, আর শূন্যের যত কাছে, সিগন্যাল তত শক্তিশালী (যেমন -60dBm, -85dBm-এর চেয়ে শক্তিশালী)। কোডে strength > best_strength তুলনাটি তাই সঠিকভাবেই কাজ করে, কারণ Python-এ -60 সত্যিই -85-এর চেয়ে বড়।
মূল কথা · Key takeaway

Mobile IP-এর হোম এজেন্ট মডেল একটি চলমান ডিভাইসকে তার স্থায়ী পরিচয় ধরে রাখতে দেয় ভৌত অবস্থান বদলানোর পরেও, আর hysteresis margin হ্যান্ডঅফ সিদ্ধান্তকে স্থিতিশীল রাখে অপ্রয়োজনীয় ping-pong ছাড়াই। এভাবেই M8 ওয়্যারলেস ও মোবাইল নেটওয়ার্কিং শেষ হলো — পরের মডিউল M9-এ আমরা নেটওয়ার্ক পারফরম্যান্স পরিমাপের দিকে যাব: লেটেন্সি, ব্যান্ডউইথ, থ্রুপুট ও জিটার।

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

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

প্র ০১ Mobile IP-তে "হোম অ্যাড্রেস" ও "বর্তমান অবস্থান" আলাদা রাখার দরকার কেন — একটিই কেন যথেষ্ট নয়?

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

প্র ০২ hysteresis margin ছাড়া একটি সরল "সবসময় সবচেয়ে শক্তিশালী টাওয়ারে থাকো" নিয়ম ব্যবহারিকভাবে কী সমস্যা তৈরি করতে পারে?

দুটি টাওয়ারের সীমানার কাছাকাছি থাকা একটি ডিভাইসের ক্ষেত্রে, সিগন্যাল স্ট্রেংথে সামান্য স্বাভাবিক ওঠানামা (পরিবেশগত হস্তক্ষেপ, ডিভাইসের সামান্য নড়াচড়া) দুটি টাওয়ারের মধ্যে "কে বেশি শক্তিশালী" এই সিদ্ধান্ত বারবার উল্টে দিতে পারে — ফলে ডিভাইসটি বারবার এক টাওয়ার থেকে অন্যটিতে হ্যান্ডঅফ করতেই থাকবে (ping-pong), প্রতিটি হ্যান্ডঅফের নিজস্ব ওভারহেড ও সম্ভাব্য ছোট বিঘ্নসহ — margin ছাড়া এই অস্থিরতা রোধ করার কোনো উপায় থাকে না।

প্র ০৩ hysteresis margin খুব বড় করে ফেললে (যেমন 20dB) কী নেতিবাচক প্রভাব পড়তে পারে?

margin খুব বড় হলে ডিভাইসটি একটি দুর্বল টাওয়ারের সাথে অনেকক্ষণ আটকে থাকবে, এমনকি কাছেই একটি অনেক শক্তিশালী টাওয়ার থাকলেও — কারণ পার্থক্য সেই বড় থ্রেশহোল্ড অতিক্রম না করা পর্যন্ত হ্যান্ডঅফ ঘটবে না। এর ফলে দুর্বল সিগন্যালে দীর্ঘ সময় থাকতে হতে পারে (কল ড্রপ বা ধীর ডেটার ঝুঁকি বেড়ে যাওয়া), যদিও ping-pong সমস্যা কমবে। এটি একটি সরাসরি ট্রেড-অফ — margin যত বড়, ping-pong তত কম কিন্তু হ্যান্ডঅফের প্রতিক্রিয়া তত ধীর।

অনুশীলন

  1. পরীক্ষা করুন: উপরের কোড সেলে পরিস্থিতি ১-এর hysteresis_margin ৫ থেকে কমিয়ে ১ করুন এবং আবার চালান। সিদ্ধান্ত কি বদলায়?

    হ্যাঁ। Tower-A ও Tower-B-এর পার্থক্য মাত্র ২dB (-70 বনাম -68) — margin=5 হলে এই পার্থক্য মার্জিন অতিক্রম করে না, তাই বর্তমান টাওয়ারই থাকে। কিন্তু margin=1 করলে ২dB পার্থক্যই যথেষ্ট হয়ে যায় স্যুইচ করার জন্য, ফলে সিদ্ধান্ত পাল্টে Tower-B-তে হ্যান্ডঅফ হয়ে যাবে — এটি দেখায় ছোট margin ping-pong-এর ঝুঁকি বাড়ায়।

  2. চিন্তা করুন: Mobile IP-এর হোম এজেন্ট ধারণাটি ইমেইল ফরওয়ার্ডিংয়ের সাথে কীভাবে তুলনীয়? (আপনি স্থায়ীভাবে ঠিকানা পরিবর্তন করলে পুরনো পোস্ট অফিস আপনার চিঠি নতুন ঠিকানায় ফরওয়ার্ড করে দেয়।)

    দুটোই একই মূল ধারণা ব্যবহার করে — একটি স্থায়ী, পরিচিত "ঠিকানা" (হোম অ্যাড্রেস / পুরনো ঠিকানা) বজায় রাখা, আর একটি মধ্যস্থতাকারী (হোম এজেন্ট / পোস্ট অফিসের ফরওয়ার্ডিং সার্ভিস) প্রকৃত বর্তমান অবস্থান জেনে সেখানে ট্রাফিক/চিঠি পুনঃনির্দেশ করে দেয়। প্রেরকের (যে আপনাকে চিঠি/প্যাকেট পাঠাচ্ছে) কখনোই জানার দরকার হয় না আপনি ঠিক কোথায় আছেন — শুধু স্থায়ী ঠিকানাটুকু জানলেই চলে।

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

আগের পাঠ
ব্লুটুথ ও শর্ট-রেঞ্জ ওয়্যারলেস