ডেটা সেন্টার নেটওয়ার্কিং বেসিকস
এই পাঠে যা শিখবেন
- east-west বনাম north-south ট্রাফিক প্যাটার্নের পার্থক্য ও কেন ডেটা সেন্টারে east-west প্রাধান্য পায়
- ঐতিহ্যবাহী থ্রি-টিয়ার ট্রি টপোলজি ও এর bottleneck সমস্যা
- লিফ-স্পাইন (Clos) টপোলজির গঠন ও এর হপ-কাউন্ট গ্যারান্টি
- Python দিয়ে একটি ছোট্ট লিফ-স্পাইন টপোলজি মডেল করে হপ কাউন্ট যাচাই
১ · east-west বনাম north-south ট্রাফিক
সাধারণ ইন্টারনেট-ফেসিং ট্রাফিক north-southNorth-South Trafficক্লায়েন্ট থেকে ডেটা সেন্টারে (বা উল্টো) আসা-যাওয়া ট্রাফিক — যেমন একজন ব্যবহারকারী একটি ওয়েবসাইটে রিকোয়েস্ট পাঠাচ্ছেন। — একজন ব্যবহারকারী ব্রাউজার থেকে একটি রিকোয়েস্ট পাঠান, ডেটা সেন্টার একটি রেসপন্স ফেরত পাঠায়। কিন্তু আধুনিক ডেটা সেন্টারের ভেতরে সবচেয়ে ভারী ট্রাফিক আসলে east-westEast-West Trafficডেটা সেন্টারের ভেতরে সার্ভার থেকে সার্ভারে যাওয়া ট্রাফিক — যেমন একটি ওয়েব রিকোয়েস্ট অনেকগুলো ব্যাকএন্ড মাইক্রোসার্ভিসে fan out হওয়া। — একটি একক ইউজার রিকোয়েস্ট ডেটা সেন্টারের ভেতরে অনেকগুলো ব্যাকএন্ড মাইক্রোসার্ভিসে fan out হয় (উদাহরণ: একটি ই-কমার্স পেজ লোড হতে ইনভেন্টরি, প্রাইসিং, রিকমেন্ডেশন, ইউজার-প্রোফাইল — এরকম বহু সার্ভিস একে অপরের সাথে কথা বলে), এবং এই সার্ভার-টু-সার্ভার যোগাযোগই নেটওয়ার্কের বেশিরভাগ ট্রাফিক তৈরি করে।
একটি নেটওয়ার্ক যা শুধু north-south ট্রাফিকের জন্য ডিজাইন করা (যেমন একটি সাধারণ অফিস নেটওয়ার্ক) ডেটা সেন্টারের ভারী east-west ট্রাফিকের জন্য উপযুক্ত নয় — তাই ডেটা সেন্টার নেটওয়ার্ক টপোলজি সম্পূর্ণ ভিন্নভাবে ডিজাইন করা হয়।
২ · ঐতিহ্যবাহী থ্রি-টিয়ার (Tree) টপোলজি ও এর সীমাবদ্ধতা
পুরনো ডেটা সেন্টার ডিজাইন সাধারণত তিন স্তরের একটি গাছের মতো (tree) কাঠামো ব্যবহার করত — core স্তর (সবচেয়ে উপরে, সবকিছুর কেন্দ্রীয় সংযোগ), aggregation স্তর (মাঝখানে, একাধিক access সুইচকে একত্র করে), এবং access স্তর (সবচেয়ে নিচে, সরাসরি সার্ভারের সাথে সংযুক্ত)। এই কাঠামোর দুটি বড় সমস্যা —
- Bandwidth bottleneck — গাছের উপরের দিকে যত উঠবেন, লিংকের সংখ্যা কমতে থাকে, তাই সব নিচের ট্রাফিককে অল্প কিছু উপরের লিংক দিয়ে চাপতে হয়।
- কম fault tolerance — core বা aggregation স্তরের একটি ডিভাইস নষ্ট হলে অনেকগুলো সার্ভার একসাথে বিচ্ছিন্ন হয়ে যেতে পারে।
৩ · লিফ-স্পাইন (Clos) টপোলজি
আধুনিক ডেটা সেন্টার তাই লিফ-স্পাইন (Clos) টপোলজিLeaf-Spine (Clos) Topologyপ্রতিটি leaf সুইচ (সার্ভারের সাথে সংযুক্ত) প্রতিটি spine সুইচের সাথে সংযুক্ত থাকে, কিন্তু কোনো leaf সরাসরি অন্য কোনো leaf-এর সাথে সংযুক্ত থাকে না। ব্যবহার করে — প্রতিটি leaf সুইচ (যেটার সাথে সার্ভার সরাসরি সংযুক্ত) প্রতিটি spine সুইচের সাথে সংযুক্ত থাকে, আর কোনো leaf সুইচ সরাসরি অন্য কোনো leaf-এর সাথে সংযুক্ত থাকে না। এর ফলাফল — যেকোনো দুইটি ভিন্ন leaf-এর মধ্যে পথ সবসময় ঠিক একই সংখ্যক হপের — leaf → spine → leaf, মানে সবসময় ঠিক ২ হপ, কোন জোড়া বেছে নেওয়া হচ্ছে তার উপর নির্ভর করে না।
যেহেতু একাধিক spine একসাথে সব leaf-কে সংযুক্ত করে, দুই leaf-এর মধ্যে একাধিক সমান-খরচের (equal-cost) পথ থাকে — এই একাধিক পথে ট্রাফিক ছড়িয়ে দেওয়ার কৌশলকে বলা হয় ECMP (Equal-Cost Multi-Path) রাউটিং। এতে একটি single bottleneck ছাড়াই মোট bandwidth অনেক বেশি হয়, এবং একটি spine নষ্ট হলেও বাকি spine-গুলো দিয়ে যোগাযোগ চালু থাকে — থ্রি-টিয়ার ট্রি-এর তুলনায় অনেক বেশি fault-tolerant।
import itertools
# একটি ছোট্ট লিফ-স্পাইন (Clos) টপোলজি — প্রতিটি leaf প্রতিটি spine-এর সাথে সংযুক্ত
spines = ["spine-1", "spine-2", "spine-3", "spine-4"]
leaves = {
"leaf-1": list(spines),
"leaf-2": list(spines),
"leaf-3": list(spines),
"leaf-4": list(spines),
"leaf-5": list(spines),
"leaf-6": list(spines),
}
def hop_count(leaf_a, leaf_b, leaves):
"""leaf_a -> spine -> leaf_b: দুই ভিন্ন leaf-এর মধ্যে হপ কাউন্ট গণনা করে।"""
if leaf_a == leaf_b:
return 0
shared_spines = set(leaves[leaf_a]) & set(leaves[leaf_b])
if not shared_spines:
return None # কোনো সাধারণ spine নেই -> সংযুক্ত নয়
return 2 # leaf -> spine -> leaf, ঠিক ২ হপ
print("লিফ-স্পাইন টপোলজি — কয়েকটি leaf-জোড়ার মধ্যে হপ কাউন্ট:\n")
all_exactly_two = True
for leaf_a, leaf_b in itertools.combinations(leaves, 2):
hops = hop_count(leaf_a, leaf_b, leaves)
print(f" {leaf_a} -> {leaf_b}: {hops} হপ")
if hops != 2:
all_exactly_two = False
print(f"\nমোট {len(list(itertools.combinations(leaves, 2)))} টি leaf-জোড়া পরীক্ষা করা হলো।")
print("সব জোড়ার হপ কাউন্ট ঠিক ২?", all_exactly_two)
ডেটা সেন্টার নেটওয়ার্কিং সাধারণ ইন্টারনেট নেটওয়ার্কিং থেকে আলাদা কারণ এর ট্রাফিক প্যাটার্ন আলাদা — ভারী east-west সার্ভার-টু-সার্ভার যোগাযোগের জন্য লিফ-স্পাইন (Clos) টপোলজি প্রতিটি সার্ভার-জোড়ার মধ্যে সমান, অনুমানযোগ্য ও উচ্চ-bandwidth পথ নিশ্চিত করে — এটিই এই মডিউলের (M11) আধুনিক নেটওয়ার্কিং কৌশলগুলোর (SDN, NFV, CDN) সাথে মিলে বড় স্কেলের নেটওয়ার্ক পরিচালনার ভিত্তি তৈরি করে।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ একটি ই-কমার্স ওয়েবসাইটের একটিমাত্র পেজ লোড কেন ডেটা সেন্টারের ভেতরে অনেক east-west ট্রাফিক তৈরি করতে পারে?
একটি পেজ লোডের পেছনে সাধারণত একাধিক মাইক্রোসার্ভিস জড়িত থাকে — ইনভেন্টরি চেক, প্রাইসিং ক্যালকুলেশন, ইউজার প্রোফাইল, রিকমেন্ডেশন ইঞ্জিন ইত্যাদি। ইউজারের একটিমাত্র রিকোয়েস্ট ডেটা সেন্টারের ভেতরে এই সব সার্ভিসের মধ্যে বহু সার্ভার-টু-সার্ভার কল-এ পরিণত হয় — এবং এই সব কলই east-west ট্রাফিক।
প্র ০২ থ্রি-টিয়ার ট্রি টপোলজিতে core স্তরের একটি সুইচ নষ্ট হলে কী সমস্যা হতে পারে, যা লিফ-স্পাইনে হয় না?
থ্রি-টিয়ার ট্রিতে core স্তরের ডিভাইস সংখ্যা কম, তাই একটি core সুইচ নষ্ট হলে তার নিচের পুরো শাখার aggregation ও access সুইচ একসাথে বিচ্ছিন্ন হয়ে যেতে পারে — একটি single point of failure। লিফ-স্পাইনে একাধিক spine একসাথে সব leaf-কে সংযুক্ত করে, তাই একটি spine নষ্ট হলেও বাকি spine-গুলো দিয়ে সব leaf একে অপরের সাথে সংযুক্ত থাকতে পারে।
প্র ০৩ ECMP-এর সুবিধা শুধু bandwidth বাড়ানো, নাকি এর সাথে fault tolerance-এরও সম্পর্ক আছে?
দুটোই। একাধিক সমান-খরচের পথে ট্রাফিক ছড়িয়ে দেওয়ার ফলে মোট bandwidth বাড়ে, কিন্তু একই সাথে — একটি পথ (যেমন একটি spine) ব্যর্থ হলে ট্রাফিক স্বয়ংক্রিয়ভাবে বাকি সুস্থ পথে সরে যেতে পারে, তাই ECMP fault tolerance-ও বাড়ায়, শুধু bandwidth অপ্টিমাইজেশন নয়।
অনুশীলন
-
চিন্তা করুন: কোড সেলে
spinesলিস্টে আরও একটি spine ("spine-5") যোগ করুন এবং Run চেপে দেখুন হপ কাউন্টের ফলাফল বদলায় কি না।হপ কাউন্ট (২) বদলাবে না — কারণ লিফ-স্পাইন টপোলজিতে যত spine-ই থাকুক না কেন, প্রতিটি leaf প্রতিটি spine-এর সাথে সংযুক্ত থাকলে যেকোনো দুই leaf-এর মধ্যে পথ সবসময় leaf → spine → leaf, অর্থাৎ ঠিক ২ হপ-ই থাকবে। বেশি spine যোগ করলে শুধু মোট bandwidth ও redundancy বাড়ে, হপ কাউন্ট নয়।
-
পরীক্ষা করুন:
hop_countফাংশনে এমন একটি leaf বানান যারleavesডিকশনারিতে কোনো spine যুক্ত নেই (খালি লিস্ট) এবং দেখুন ফলাফল কী আসে।সেই leaf-এর সাথে অন্য কোনো leaf-এর কোনো সাধারণ (shared) spine না থাকায়
shared_spinesখালি সেট হবে, এবং ফাংশনটিNoneফেরত দেবে — অর্থাৎ এই leaf বাকি টপোলজি থেকে সম্পূর্ণ বিচ্ছিন্ন, যা বাস্তবে একটি ভুল কনফিগারেশন নির্দেশ করে।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ পরের পাঠ থেকে শুরু হচ্ছে M12 — বাস্তব কেস স্টাডি যেখানে এই কোর্সের সব ধারণা একত্রিত হবে।
- Cloud Computing & DevOps কোর্স সঙ্গী কোর্স ক্লাউড প্রোভাইডাররা কীভাবে এই একই ধরনের ডেটা সেন্টার নেটওয়ার্ক অপারেট করে তা শিখতে দেখুন।
- Cybersecurity & Ethical Hacking কোর্স সঙ্গী কোর্স ডেটা সেন্টার নেটওয়ার্ক সেগমেন্টেশন কীভাবে নিরাপত্তার ভিত্তি তৈরি করে তা শিখতে দেখুন।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design, Cybersecurity, Cloud Computing & DevOps ও Computer Networks — সব এক জায়গায়।