1.7
Routing, Internet-এর পথ ও NAT
Hop-by-hop Forwarding, Default Gateway, ISP ও BGP, এবং NAT কীভাবে পুরো বাসাকে একটি IP ভাগ করতে দেয়।
42 মিনিট পড়া + Animation
টিপস: ডটেড-আন্ডারলাইন করা যেকোনো শব্দে ট্যাপ বা Hover করলে তার অর্থ দেখবে।
এই Lesson শেষে তুমি পারবে
- Routing (পরের Hop বেছে নেওয়া) আর NAT (Address বদলানো)-এর পার্থক্য ব্যাখ্যা করতে।
- একটি Routing Table পড়তে, এবং Longest-prefix Match ও Default Route দিয়ে যেকোনো গন্তব্যের Route বেছে নিতে।
- প্রতিটি Hop-এ ঠিক কোন Header Field বদলায় তা বলতে: MAC Address, TTL, আর IP Address শুধু NAT-এ।
- Router কীভাবে Route শেখে তা বর্ণনা করতে: Static Route, Network-এর ভেতরে OSPF, Network-গুলোর মধ্যে BGP, এবং কী ভুল হয় (Loop, Hijack, Leak)।
- BGP কীভাবে একটা সেরা পথ বাছে (Local Preference, AS Path-এর দৈর্ঘ্য, MED আর টাই ভাঙার নিয়ম), আর কোনো Route তুলে নিলে কী হয়, ধাপে ধাপে বলতে।
- Unicast, Broadcast, Multicast আর Anycast আলাদা করে চিনতে, আর কোনটা বাস্তবে কোথায় চলে তা বলতে।
- একটি Connection-কে NAT পেরিয়ে যাওয়া-আসা পর্যন্ত অনুসরণ করতে, এবং Port Forwarding, Mapping Timeout, CGNAT, Hairpinning ও Peer-to-peer কেন কঠিন তা ব্যাখ্যা করতে।
- System Design-এ এই ধারণাগুলো কাজে লাগাতে: NAT Gateway, Egress IP, Port Exhaustion, Anycast ও Asymmetric পথ।
#দুটি আলাদা কাজ: Routing আর NAT
তোমার Browser যখন পৃথিবীর অন্য প্রান্তের একটি Server-এ Packet পাঠায়, পথে তার সঙ্গে দুটি আলাদা ঘটনা ঘটে। অনেকে এ দুটো গুলিয়ে ফেলে, তাই শুরু থেকেই আলাদা করে রাখো:
- Routing ঠিক করে Packet এরপর কোথায় যাবে। প্রতিটি Router Destination IP Address দেখে পরের Hop বেছে নেয়। সে Address বদলায় না।
- NAT (Network Address Translation) Address বদলায় (প্রায়ই Port-ও)। তোমার Home Router এটি ব্যবহার করে যাতে Private Address-ওয়ালা অনেক ডিভাইস একটি Public IP Address ভাগ করে নিতে পারে। Port-ও বদলালে একে বলে NAPT (Network Address and Port Translation) বা PAT।
এই Lesson-এ আরও তিনজন খেলোয়াড় আছে:
| Term | পূর্ণরূপ | কাজ |
|---|---|---|
| ISP | Internet Service Provider | ব্যবহারকারীকে Internet-এর মূল Backbone-এ সংযোগ দেয় (Link3, Grameenphone, Banglalink…) |
| AS | Autonomous System | নিজস্ব Routing Policy-সহ একটি প্রতিষ্ঠানের Network, একটি নম্বর (ASN) দিয়ে চেনা যায় |
| BGP | Border Gateway Protocol | Autonomous System-গুলো একে অপরকে জানায় কোন Address-এ তারা পৌঁছাতে পারে, যাতে প্রত্যেকে সেরা পথ বেছে নিতে পারে |
তোমার Laptop থেকে Packet-এর যাত্রা এরকম:
- Local Network (Router + NAT)। তোমার Computer-এর একটি Private IP আছে। Local Network-এর বাইরের সবকিছু সে পাঠায় তার Default Gateway-তে, অর্থাৎ Home Router-এ। Router সেটিকে ISP-এর দিকে Route করে এবং IPv4-এ একটি NAT Mapping প্রয়োগ করে।
- ISP ও Internet-এর Router। প্রতিটি Router নিজের Routing Table দেখে Packet-কে গন্তব্যের দিকে এক Hop এগিয়ে দেয়।
- গন্তব্যের Network (যেমন Google-এর Edge) Request গ্রহণ করে, সঠিক Service-এ পাঠায় এবং Response তৈরি করে।
- Response ফিরে আসে, হয়তো ভিন্ন পথে, আর Home Router তার NAT Mapping দেখে সেটি সঠিক ডিভাইসে পৌঁছে দেয়।
#তোমার Computer কীভাবে ঠিক করে Packet কোথায় পাঠাবে
কোনো Router জড়িত হওয়ার আগেই তোমার নিজের Computer প্রথম Routing সিদ্ধান্তটি নেয়। সে তার IP Address ও Subnet জানে, যেমন 192.168.1.10/24, যার মানে “192.168.1 দিয়ে শুরু হওয়া সব Address আমার Local Network-এ”।
- গন্তব্য Local Network-এ (ধরো
192.168.1.11, তোমার ফোন): সরাসরি পাঠাও। Computer ARP দিয়ে ফোনের MAC Address খুঁজে নিজেই Frame পৌঁছে দেয়। - গন্তব্য বাইরে (ধরো
198.51.100.20, একটি Web Server): Default Gateway-তে পাঠাও, অর্থাৎ192.168.1.1-এর Router-এ। Computer ARP দিয়ে Router-এর MAC Address খুঁজে Frame-এ বসায়, অথচ IP Header-এ তখনো লেখা থাকে198.51.100.20।
Default Gateway-এর মূল কথা এটুকুই: “Local না হলে Router-কে দাও”। তোমার Computer-এর নিজেরও একটি ছোট Routing Table আছে, যাতে ঠিক এই দুটি Row থাকে (সঙ্গে কয়েকটি বিশেষ Row), আর Gateway সাধারণত DHCP দিয়ে স্বয়ংক্রিয়ভাবে আসে।
#Routing Table
প্রতিটি Router (এবং প্রতিটি Computer) একটি Routing Table রাখে: গন্তব্য Network-এর তালিকা, আর প্রতিটির Packet কোথায় পাঠাতে হবে।
| Column | মানে | উদাহরণ |
|---|---|---|
| Destination / Prefix | CIDR Notation-এ লেখা একটি Network: Address এবং শুরুর কত Bit মিলতে হবে | 10.20.30.0/24 |
| Next Hop | পরের Router-এর IP Address, অথবা গন্তব্য যুক্ত Network-এ থাকলে “সরাসরি যুক্ত” | 172.16.1.2 |
| Interface | Packet কোন Port দিয়ে বের হবে | eth2 |
| Metric | এই Route-এর খরচ; দুটি Route সমান নির্দিষ্ট হলে কমটি পছন্দ করা হয় | 20 |
Linux-এ ip route তোমার Computer-এর Table দেখায়:
$ ip route
default via 192.168.1.1 dev wlan0 proto dhcp metric 600
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.10 metric 600
প্রথম লাইনটি Default Route (Gateway-এর দিকে); দ্বিতীয়টি বলে পুরো 192.168.1.0/24 Network wlan0-এ সরাসরি যুক্ত।
#Longest-prefix Match
একটি Destination Address প্রায়ই একাধিক Row-এর সঙ্গে মেলে। তখন Router একটি নিয়ম মানে: সবচেয়ে নির্দিষ্ট মিল জেতে, অর্থাৎ যে Row-এর Prefix সবচেয়ে লম্বা (সবচেয়ে বেশি Bit মেলে)। একটি প্রতিষ্ঠানের Router R1-এর এই Table ধরো:
| Destination | Next Hop | Interface | Metric |
|---|---|---|---|
| 192.168.10.0/24 | সরাসরি যুক্ত | eth0 | 0 |
| 10.20.0.0/16 | 172.16.0.2 (R2, Branch Office) | eth1 | 20 |
| 10.20.30.0/24 | 172.16.1.2 (R3, Lab) | eth2 | 20 |
| 0.0.0.0/0 | 203.0.113.1 (ISP) | eth3 | 100 |
10.20.30.7মেলে10.20.0.0/16,10.20.30.0/24ও0.0.0.0/0-এর সঙ্গে। /24 সবচেয়ে লম্বা, তাই এটি যায় R3-তে।10.20.99.4মেলে /16 ও /0-এর সঙ্গে (তৃতীয় সংখ্যা 99, 30 নয়)। /16 জেতে: R2।198.51.100.20শুধু0.0.0.0/0-এর সঙ্গে মেলে, তাই এটি যায় ISP-তে।192.168.10.25সরাসরি যুক্ত Row-এর সঙ্গে মেলে: R1 নিজেই LAN-এ পৌঁছে দেয়।
Metric শুধু একই দৈর্ঘ্যের Prefix-ওয়ালা Route-এর মধ্যে কাজে লাগে, যেমন একই Network-এ যাওয়ার একটি Primary আর একটি Backup পথ।
Router-এর ভেতরে: Routing Table দেখা
R1-এর চারটি Link আছে। প্রতিটি Packet-এর Destination IP সে প্রতিটি Row-এর সঙ্গে মেলায় এবং সবচেয়ে নির্দিষ্ট (Specific) মিলটি বেছে নেয়।
পরিস্থিতি
Destination 10.20.30.7 তিনটি Row-এর সঙ্গে মেলে; /24-ই সবচেয়ে নির্দিষ্ট।
Dst IP
10.20.30.7
TTL
64
R1-এর Routing Table
| Destination | Next Hop | Interface | Metric |
|---|---|---|---|
| 192.168.10.0/24 | সরাসরি যুক্ত | eth0 | 0 |
| 10.20.0.0/16 | 172.16.0.2 | eth1 | 20 |
| 10.20.30.0/24 | 172.16.1.2 | eth2 | 20 |
| 0.0.0.0/0 | 203.0.113.1 | eth3 | 100 |
Office LAN থেকে 10.20.30.7-এর জন্য একটি Packet এল। R1 Source দেখে না; কোথায় যাবে তা ঠিক করে শুধু Destination IP।
#Default Route
0.0.0.0/0-এ (আর IPv6-এ ::/0) কোনো নির্দিষ্ট Bit নেই, তাই এটি সব Address-এর সঙ্গে মেলে, আর সবচেয়ে কম নির্দিষ্ট বলে অন্য কিছু না মিললেই কেবল জেতে। এর মানে “এর চেয়ে ভালো কিছু জানা না থাকলে এখানে পাঠাও”। তোমার Home Router-এর আসলে একটিই আসল Route: ISP-এর দিকে একটি Default Route। Internet-এর কেন্দ্রের Router-গুলোর ঠিক উল্টো: কোনো Default Route নেই, বরং BGP থেকে শেখা প্রায় দশ লক্ষ IPv4 Prefix-এর পূর্ণ Table। কোনো Router-এর মিলে যাওয়া Row আর Default Route দুটোই না থাকলে সে Packet ফেলে দেয় এবং সাধারণত ICMP Destination Unreachable ফেরত পাঠায়।
#Hop by Hop: কী বদলায় আর কী একই থাকে
এখানেই IP Address আর MAC Address-এর ভূমিকা আলাদা হয়ে যায়:
- IP Address: Packet-এর Network-Level Source ও চূড়ান্ত Destination চিহ্নিত করে। NAT না থাকলে শুরু থেকে শেষ পর্যন্ত একই থাকে।
- MAC Address: একটি Local Link-এ Frame পৌঁছে দেয়। শুধু ওই Link-এই এর অর্থ আছে।
তোমার Computer যখন Router-এ পাঠায়, Destination IP থাকে Server-এর, কিন্তু Destination MAC থাকে Router-এর Local Interface-এর। Router পরের Link-এ Packet পাঠানোর সময় একটি নতুন Link-Layer Frame তৈরি করে, তাই প্রতিটি Hop-এ MAC Address বদলায়। প্রতিটি IPv4 Router TTL এক করে কমায়। IPv6-এ একই Field-এর নাম Hop Limit।
| Field | প্রতিটি Router-এ বদলায়? | কেন |
|---|---|---|
| Source / Destination MAC | হ্যাঁ, প্রতিটি Link-এ | একটি Frame শুধু একটি Link পার হয়; প্রতিটি Hop নতুন Frame বানায় |
| TTL (IPv4) / Hop Limit (IPv6) | হ্যাঁ, প্রতি Router-এ ১ কমে | Loop-এ পড়ে Packet-কে চিরকাল ঘুরতে দেয় না |
| Source / Destination IP | না (যদি না NAT বদলায়) | এগুলো আসল দুই প্রান্তের নাম |
| Header Checksum (IPv4) | হ্যাঁ | TTL বদলেছে বলে আবার হিসাব করা হয় |
Hop by Hop: কোন Header Field বদলায়
Map-এর নিচের Packet Header লক্ষ করো। হাইলাইট করা Field ওই Hop-এ বদলানো হয়েছে।
পরিস্থিতি
প্রতিটি Link-এ MAC বদলায়, প্রতি Router-এ TTL এক কমে, IP একই থাকে (NAT ছাড়া)।
Wi-Fi Link-এ
Src MAC
02:00:00:00:00:10
Dst MAC
02:00:00:00:01:01
Src IP
192.168.1.10
Dst IP
198.51.100.20
TTL
64
তোমার Computer 198.51.100.20-কে নিজের Network 192.168.1.0/24-এর সঙ্গে মেলায়। এটি বাইরে, তাই Packet যাবে Default Gateway-তে। Destination IP হলো Server-এর, কিন্তু Destination MAC হলো Router-এর (ARP দিয়ে পাওয়া)।
#TTL ও Routing Loop
TTL (Time To Live) একটি ৮-Bit Field, তাই সর্বোচ্চ ২৫৫ থেকে শুরু হতে পারে; Operating System সাধারণত ৬৪ (Linux, macOS) বা ১২৮ (Windows) দিয়ে শুরু করে। কোনো Router এটি কমিয়ে 0 করলে সে Packet ফেলে দেয় এবং উৎসে ICMP Time Exceeded ফেরত পাঠায়। এর উদ্দেশ্য Routing Loop-এ আটকে পড়া Packet মেরে ফেলা, যেখানে দুটি Router প্রত্যেকে ভাবে অন্যজনই গন্তব্যের পথ। TTL না থাকলে ঘুরতে থাকা Packet জমতে জমতে Link ভেঙে পড়ত। Traceroute Tool ইচ্ছে করে এই আচরণ ব্যবহার করে; সেটি Diagnostics Lesson-এ আছে।
#Router পুরো পথ জানে না
কোনো Router শুরু থেকে শেষ পর্যন্ত পুরো পথ জানে না। প্রত্যেকে শুধু Destination IP দেখে পরের Hop বেছে নেয়। এর দুটি ফল:
- কোনো Link বিকল হলে বা Policy বদলালে এক Packet থেকে পরের Packet-এ পথ বদলে যেতে পারে।
- Request আর Response-এর পথ আলাদা হতে পারে (Asymmetric Routing)। প্রতিটি Network নিজে ঠিক করে তার Traffic কোন দিক দিয়ে বের করবে, আর Network-গুলো প্রায়ই সবচেয়ে কাছের Exit দিয়ে Traffic হস্তান্তর করে (“Hot-potato Routing”)। এটি স্বাভাবিক। মূলত সমস্যা হয় যখন একটি Stateful Firewall একটি Connection-এর শুধু এক দিক দেখে।
কোনো প্রতিষ্ঠান CDN ব্যবহার করলে “গন্তব্য” হতে পারে মূল Server-এর বদলে কাছের শহরের একটি Server, আর নির্দিষ্ট কোনো Resource কীভাবে পৌঁছাবে তা ওই প্রতিষ্ঠানের অবকাঠামোর ওপর নির্ভর করে। Google-এর মতো বড় Content Network সবচেয়ে কাছের Edge Location-এ Traffic নিজেদের Private Network-এ তুলে নেয়।
নিজেকে যাচাই করোপ্রশ্ন
NAT ছাড়া একটি Packet তোমার Laptop থেকে তিনটি Router পেরিয়ে একটি Server-এ যায়। Laptop থেকে বের হওয়া Frame আর Server-এ পৌঁছানো Frame-এ কী একই থাকে?
#Router কীভাবে Route শেখে
Routing Table-এর তথ্য কোথাও থেকে আসতে হয়। উৎস তিনটি:
- Connected Route: যে Network-এ Router সরাসরি যুক্ত। Interface চালু হলেই স্বয়ংক্রিয়ভাবে যোগ হয়।
- Static Route: Administrator হাতে টাইপ করেন। সহজ, অনুমানযোগ্য, কোনো Protocol Traffic নেই, কিন্তু বিকলতায় কখনো সাড়া দেয় না।
- Dynamic Route: প্রতিবেশী Router-এর কাছ থেকে একটি Routing Protocol দিয়ে শেখা, যা Link বিকল হলে বা ফিরে এলে নিজে থেকেই মানিয়ে নেয়।
Routing Protocol মোটামুটি তিন গোত্রের। Distance-vector Protocol (পুরনো RIP, আর Cisco-র EIGRP) প্রতিবেশীকে শুধু বলে “X Network আমার থেকে N Hop দূরে”; ফলে প্রতিটা Router পুরো Network-টা চেনে শোনা কথায়। Link-state Protocol, যেমন OSPF, প্রতিটা Link-এর বিবরণ সবার কাছে ছড়িয়ে দেয়, তাই প্রতিটা Router-এর হাতে থাকে পুরো Map। আর Path-vector BGP সঙ্গে রাখে একটা Route কোন কোন Network পেরিয়ে এসেছে তার পুরো তালিকা। প্রথম দুটো চলে একটা প্রতিষ্ঠানের ভেতরে; Network-এ Network-এ চলে BGP।
#একটি Network-এর ভেতরে: OSPF
একটি প্রতিষ্ঠানের ভেতরে (একটি Autonomous System) Router-গুলো একটি Interior Gateway Protocol (IGP) চালায়, সবচেয়ে বেশি OSPF (Open Shortest Path First)। প্রতিটি Router বাকি সবাইকে নিজের Link ও তাদের Cost জানায়, ফলে প্রত্যেকে Network-এর একই Map তৈরি করে এবং প্রতিটি গন্তব্যের Shortest Path হিসাব করে। কোনো Link বিকল হলে খবর ছড়িয়ে পড়ে আর Router-গুলো আবার হিসাব করে, সাধারণত এক সেকেন্ডের মধ্যে। একাধিক পথের Cost সমান হলে Router তাদের মধ্যে Traffic ভাগ করে দিতে পারে (ECMP)।
Static Route বনাম Routing Protocol (OSPF)
একটি প্রতিষ্ঠানের ভেতরে চারটি Router। Link Cost: A–B 10, B–C 10, A–D 20, D–C 20। A, C-এর পেছনের Server-এ পৌঁছাতে চায়।
পরিস্থিতি
Route মানুষ টাইপ করেছে; Link বিকল হলে কেউ তা আপডেট করে না।
A-এর Routing Table
| Destination | Next Hop | Cost | কীভাবে শেখা |
|---|---|---|---|
| 10.0.3.0/24 | B | — | Static |
একজন Admin A-তে একটি Static Route টাইপ করেছে: “10.0.3.0/24 যাবে B দিয়ে”। সহজ, অনুমানযোগ্য, কোনো Protocol Traffic নেই। ছোট Network এবং Home Router-এর একটিমাত্র Default Route-এর জন্য এটি যথেষ্ট।
#Network-গুলোর মধ্যে: BGP ও Autonomous System
Internet তৈরি ৭০,০০০-এর বেশি Autonomous System দিয়ে: ISP, Cloud Provider, বিশ্ববিদ্যালয়, বড় প্রতিষ্ঠান। প্রত্যেকের একটা নম্বর আছে, তার ASN (Google হলো AS 15169, Cloudflare AS 13335)। এই নম্বর IANA সরাসরি কোনো প্রতিষ্ঠানকে দেয় না। IANA ASN-এর (আর IP Address-এরও) Block দেয় পাঁচটা Regional Internet Registry (RIR)-কে, আর প্রতিটা RIR নিজের অঞ্চলের Network-গুলোকে নম্বর দেয়। বাংলাদেশের কোনো ISP তাই ASN পায় APNIC থেকে, যারা এশিয়া-প্রশান্ত মহাসাগর অঞ্চলের Registry। এখন ASN ৩২-Bit-এর সংখ্যা, তাই নম্বরের টানাটানি নেই; ৬৪৪৯৬ থেকে ৬৪৫১১ রাখা আছে বই-পুস্তক আর উদাহরণের জন্য, তাই এই Lesson-এর উদাহরণে এগুলোই ব্যবহার হয়েছে।
একটি AS-এর ভেতরে Operator যে IGP খুশি চালায়। Autonomous System-গুলোর মধ্যে সবাই BGP বলে। দুটো Router BGP চালায় Port 179-এর একটা সাধারণ TCP Connection-এর ওপর; একে বলে BGP Session। দুটো আলাদা Autonomous System-এর মধ্যে Session হলে তা eBGP; আর একই AS-এর ভেতরে iBGP Session দিয়ে বাইরে থেকে শেখা Route AS-এর সব Border Router-এর কাছে পৌঁছে যায়, যাতে সবাই একমত থাকে। ঠিকঠাক বললে BGP আসলে TCP-র ওপর চলা একটা Application, যে Layer 3-এর পথ ঠিক করে দেয়; উল্টো দিকে OSPF সরাসরি IP-র ওপর চলে।
- একটি AS তার মালিকানার Prefix ঘোষণা (Announce) করে: “198.51.100.0/24-এ আমার মাধ্যমে পৌঁছানো যায়”।
- প্রতিটি প্রতিবেশী AS Path-এর সামনে নিজের AS Number যোগ করে ঘোষণাটি এগিয়ে দেয়। তাই একটি Route তোমার ISP-তে আসতে পারে
64501 64496হিসেবে: AS 64501 হয়ে AS 64496-এ, যে মূল উৎস। - যে Router Path-এ নিজের AS Number আগেই দেখে, সে Route প্রত্যাখ্যান করে। এই সহজ নিয়ম Network-গুলোর মধ্যে Loop ঠেকায়। খেয়াল করো কী বাদ পড়ে: Route-এর ঘোষণাটা, কোনো Data Packet না। BGP ব্যবহারকারীর Traffic ছোঁয়ই না; সে শুধু ঠিক করে কোন Route বসবে।
- BGP প্রতিটি Prefix-এর জন্য একটি সেরা পথ বেছে নেয়। আগে আসে Policy: একটি Network পছন্দ করে Customer-এর কাছ থেকে শেখা Route (যারা তাকে টাকা দেয়), তারপর Peer-এর (বিনা খরচে), তারপর Transit Provider-এর (যাকে সে টাকা দেয়)। এরপরই কেবল ছোট AS Path জেতে। পুরো সিঁড়িটা নিচে আছে।
Network-গুলো দুইভাবে বাণিজ্যিকভাবে যুক্ত হয়:
| সম্পর্ক | মানে | উদাহরণ |
|---|---|---|
| Transit | তুমি একটি বড় Network-কে টাকা দাও যাতে সে তোমার Traffic পুরো Internet-এ পৌঁছে দেয় | একটি বাংলাদেশি ISP আন্তর্জাতিক Bandwidth কেনে |
| Peering | দুটি Network নিজেদের Customer-এর মধ্যকার Traffic বিনা খরচে আদান-প্রদান করে | BDIX-এ ISP-গুলোর দেশীয় Traffic বিনিময়; একটি ISP কোনো CDN-এর সঙ্গে Peering করে যাতে Video দেশেই থাকে |
Peering সাধারণত হয় একটি IXP-তে (Internet Exchange Point), এমন একটি ভবন যেখানে অনেক Network একটি সাধারণ Switch-এ যুক্ত হয়।
BGP: Network-গুলো কীভাবে জানায় তারা কোথায় পৌঁছাতে পারে
প্রতিটি বাক্স একটি Autonomous System (AS)। Content Network AS 64496 198.51.100.0/24-এর মালিক। তোমার ISP হলো AS 64500।
পরিস্থিতি
Content Network তার প্রতিবেশীদের ঘোষণা করে “198.51.100.0/24-এ আমার মাধ্যমে পৌঁছানো যায়”। AS Path শুরু হয় শুধু নিজের নম্বর দিয়ে: 64496।
#BGP কীভাবে সেরা পথ বাছে
একই Prefix-এ যাওয়ার কয়েকটা Route থাকলে BGP Router তাদের Attribute একটা নির্দিষ্ট ক্রমে মেলায়, আর যেখানে প্রথম পার্থক্য পায় সেখানেই থামে। যে Route কাজে লাগানোই যাবে না (Next Hop-এ পৌঁছানো যায় না, Policy-তে Filter হয়েছে, RPKI বাতিল করেছে), সেগুলো দৌড় শুরুর আগেই বাদ।
| ক্রম | Attribute | কোনটা জেতে | কে বসায়, কেন |
|---|---|---|---|
| ১ | Weight | বেশি | শুধু Cisco-তে, এক Router-এর নিজস্ব: সেই Router-এর হাতের Override |
| ২ | Local Preference | বেশি (ডিফল্ট ১০০) | তোমার নিজের Import Policy, পুরো AS জুড়ে সবাই জানে। “Customer > Peer > Transit” নিয়মটা এখানেই থাকে। ঠিক করে Traffic তোমার কাছ থেকে বের হবে কোন দিক দিয়ে |
| ৩ | Locally Originated | নিজের Route | যে Prefix এই Router নিজেই ঘোষণা করে |
| ৪ | AS Path-এর দৈর্ঘ্য | ছোট | ঘোষণা থেকেই গোনা হয়। অন্য Network ইচ্ছে করে এটা লম্বা করে (AS-path Prepending), যাতে কোনো Link থেকে Traffic সরে যায় |
| ৫ | Origin | আগে IGP, তারপর EGP, তারপর Incomplete | Route-টা কীভাবে BGP-তে ঢুকেছে; আজকাল প্রায় কখনো সিদ্ধান্ত নেয় না |
| ৬ | MED (Multi-Exit Discriminator) | কম | যে প্রতিবেশী কয়েক জায়গায় তোমার সঙ্গে যুক্ত, সে বসায়: “এই দরজা দিয়ে ঢোকো”। তুলনা হয় শুধু ওই একই প্রতিবেশীর Route-এর মধ্যে, আর চাইলে তুমি উপেক্ষা করতে পারো |
| ৭ | iBGP-র চেয়ে eBGP | বাইরে থেকে শেখা | সরাসরি বাইরে থেকে শেখা Route ভেতর থেকে পাওয়া Route-কে হারায় |
| ৮ | Next Hop পর্যন্ত সবচেয়ে কম IGP খরচ | সবচেয়ে কাছের Exit | “Hot-potato” Routing: যত তাড়াতাড়ি সম্ভব Traffic অন্য Network-এর হাতে দিয়ে দাও |
| ৯ | টাই ভাঙা | পুরনো Route, তারপর ছোট Router ID | কিছু একটা সিদ্ধান্ত নেবেই, তাই ফল আগে থেকে বলা যায় |
তিনটে কথা মনে রাখো। এক, BGP Latency, Bandwidth বা Load-এর কিছুই জানে না: সে চলে Policy আর Path-এর দৈর্ঘ্য দেখে, তাই “সেরা” পথ মানে পছন্দের পথ, সবচেয়ে দ্রুত পথ না-ও হতে পারে। দুই, তোমার কাছ থেকে বের হওয়া Traffic তুমি ভালোভাবে নিয়ন্ত্রণ করো (Local Preference), কিন্তু তোমার দিকে আসা Traffic নিয়ে অন্যদের শুধু অনুরোধ করতে পারো (Prepending, MED, বা যে Link চাও সেখানে আরও নির্দিষ্ট Prefix ঘোষণা)। তিন, কোনো Session বিকল হলে তার সব Route তুলে নেওয়া হয়, আর বাকিদের মধ্যে আবার দৌড় হয়: এটাই BGP-র Failover।
BGP কীভাবে একটা সেরা পথ বাছে, আর Route তুলে নিলে কী হয়
তোমার Network হলো AS 64500। গন্তব্য AS 64496 হলো 198.51.100.0/24-এর মালিক, আর এর খবর তুমি পাও একজন Customer, একজন Peer আর একজন Transit Provider-এর কাছ থেকে।
পরিস্থিতি
198.51.100.0/24-এ যাওয়ার জন্য AS 64500-এর Route
| কার কাছ থেকে | AS Path | Local Pref | MED | ফল |
|---|---|---|---|---|
| Customer | 64503 64497 64496 | |||
| Peer | 64502 64496 | |||
| Transit | 64501 64496 |
তোমার Network একই Prefix-এর খবর তিনভাবে পায়। BGP বসায় শুধু একটা সেরা পথ: নির্দিষ্ট ক্রমে Attribute মিলিয়ে দেখে, আর যেটাতে প্রথম পার্থক্য পায় সেখানেই থামে।
#Unicast, Broadcast, Multicast আর Anycast
এতক্ষণ যত Packet দেখলাম, সবার একজন প্রেরক, একজন প্রাপক। কিন্তু Destination Address আরও কিছু বলতে পারে: “এখানে যারা আছে সবাই”, “যারা এটা চেয়েছে শুধু তারা”, কিংবা “আমার যে কপিটা সবচেয়ে কাছে সে”। পৌঁছে দেওয়ার এই চার ধরনকে বলে Cast Type।
| ধরন | কার কাছে | Destination Address | কে পায় | বাস্তবে কোথায় চলে |
|---|---|---|---|---|
| Unicast | একজন থেকে একজন | একটা Host-এর Address | শুধু সেই Host | প্রায় সবকিছু: Web, SSH, Email, Video Streaming, Video Call |
| Broadcast | LAN-এর সবার কাছে | 255.255.255.255, Subnet-এর শেষ Address (192.168.1.255), MAC ff:ff:ff:ff:ff:ff | প্রথম Router পর্যন্ত সব ডিভাইস | ARP Request, DHCP Discover। শুধু IPv4-এ |
| Multicast | একজন থেকে একটা দলের কাছে | 224.0.0.0/4 (224.0.0.0–239.255.255.255), IPv6-এ ff00::/8 | শুধু যারা Group-এ যোগ দিয়েছে | ISP-এর ভেতরের IPTV, Stock Exchange-এর Market Data, LAN-এ Routing Protocol |
| Anycast | অনেকের মধ্যে সবচেয়ে কাছেরজনের কাছে | সাধারণ একটা Address, অনেক Site থেকে ঘোষণা করা | একটাই Site: Routing-এর হিসাবে সবচেয়ে কাছেরটা | Public DNS Resolver (1.1.1.1, 8.8.8.8), DNS Root Server, CDN, DDoS সামলানো |
#Unicast আর তার খরচ
Unicast সহজ আর একান্ত: Router একটাই Address-এর দিকে পাঠায়, Data পায় শুধু সেই Host। খরচটা টের পাওয়া যায় যখন অনেকে একই সময়ে একই জিনিস চায়। ১০,০০০ জন Unicast-এ একই Live খেলা দেখলে উৎসকে প্রতিটা Packet-এর ১০,০০০টা কপি পাঠাতে হয়। বড় Service এটা সামলায় CDN দিয়ে: দর্শকের কাছাকাছি Edge Server-এ কপি তৈরি হয়, তবে প্রত্যেক দর্শক তবুও নিজের আলাদা Unicast Stream পায়।
#Broadcast LAN-এর বাইরে যায় না
Broadcast Local Network-এর প্রত্যেক ডিভাইসে পৌঁছায়, আর প্রত্যেককে থেমে সেটা খুলে দেখতে হয়। Router কখনো Broadcast এগিয়ে দেয় না, তাই প্রথম Router-এ গিয়েই Broadcast Domain শেষ। এজন্যই এক Subnet-এর কোনো ডিভাইস DHCP দিয়ে Address চাইলে অন্য Subnet-এর DHCP Server পর্যন্ত পৌঁছাতে পারে না, যদি না Router-এ DHCP Relay চালু থাকে। Broadcast-এর একটা ভয়ংকর বিপদও আছে: Ethernet Frame-এ কোনো TTL নেই। তাই দুটো Switch দুটো Cable দিয়ে জোড়া থাকলে আর Spanning Tree Protocol (STP) না থাকলে একটা Broadcast ঘুরতেই থাকে, কপি বাড়তেই থাকে; একে বলে Broadcast Storm, পুরো LAN বসে যায়। IPv6-এ Broadcast বলে কিছুই নেই; একই কাজে সে Multicast Group ব্যবহার করে, যেমন all-nodes ff02::1।
#Multicast: একটাই Stream, কপি হয় শুধু দরকারি জায়গায়
উৎস একটা Group Address-এ একটাই Stream পাঠায়। যে Host সেটা চায়, সে নিজের Router-কে IGMP Join পাঠায় (IPv6-এ একই কাজ হয় তার নিজস্ব Message দিয়ে)। Router-গুলো PIM দিয়ে একটা বিতরণের গাছ বানায়, Packet কপি করে শুধু যেখানে শাখা ভাগ হয়; আর IGMP Snooping করা Switch শুধু সেই Port-এই পাঠায় যে চেয়েছিল। শেষ সদস্য চলে গেলে শাখাটা ছেঁটে ফেলা হয়। ২টা বাসা দেখুক বা ২০,০০০টা, উৎসের Bandwidth একই থাকে।
সমস্যা একটাই: Public Internet-এ Multicast চলে না, কারণ ISP-রা একে অপরের কাছে Multicast Route করে না। তাই Multicast থাকে সেখানে, যেখানে পুরো Network একজন Operator-এর হাতে: ISP-এর ভেতরের IPTV, একই Data Center-এ বসা Broker-দের কাছে Stock Exchange-এর Market Data, আর LAN-এ Routing Protocol (OSPF Router-গুলো কথা বলে 224.0.0.5-এ)। YouTube Live, Netflix, Zoom, Google Meet সবই Unicast: CDN Server বা একটা Media Server প্রত্যেক দর্শককে আলাদা কপি পাঠায়।
#Anycast: একটা Address, অনেক Site
কয়েকটা Site একই IP Address ব্যবহার করে, আর সবাই BGP দিয়ে তার Prefix ঘোষণা করে। প্রতিটা Router শুধু নিজের সেরা BGP পথ ধরে চলে, তাই প্রত্যেক ব্যবহারকারী পৌঁছায় Routing-এর হিসাবে সবচেয়ে কাছের Site-এ। কোনো Site বিকল হলে সে ঘোষণা তুলে নেয়, আর একই Address তখন নিয়ে যায় পরের Site-এ। এজন্যই Public DNS Resolver, Root Server, CDN আর DDoS সুরক্ষার মেরুদণ্ড হলো Anycast (আক্রমণের ঢল একটা Site-এ না পড়ে সব Site-এ ভাগ হয়ে যায়)।
বাস্তবে তিনটে খুঁটিনাটি জরুরি:
- “কাছে” মানে BGP যেটা পছন্দ করে। BGP দেখে Policy আর AS Path-এর দৈর্ঘ্য, মাপা Latency না। তাই কখনো কখনো ব্যবহারকারী দূরের Site-এ গিয়ে পড়ে।
- অসুস্থ Site-কে Route তুলে নিতেই হবে। Server মরে গেছে অথচ Router ঘোষণা চালিয়ে যাচ্ছে, তাহলে ওখানে যার Traffic যায় সে-ই গর্তে পড়ে (Black Hole)। তাই Anycast Site তাদের ঘোষণা Health Check-এর সঙ্গে বেঁধে রাখে।
- Route বদলালে লম্বা Connection ভাঙতে পারে। Connection চলার মাঝে Routing বদলে গেলে Packet এমন Site-এ পৌঁছায় যে TCP Handshake দেখেইনি, সে Connection Reset করে দেয়। তাই Anycast সবচেয়ে মানায় UDP-র ছোট আদান-প্রদানে, যেমন DNS; TCP-তেও কাজ করাতে CDN-গুলো তাদের Route খুব স্থির রাখে।
Unicast, Broadcast, Multicast আর Anycast
একটা বাসার Network (Laptop, Set-top Box, Phone), তার Router, ISP-এর IPTV Server আর দূরের দুটো Anycast Site। কে Packet পাবে, তা ঠিক করে Destination Address।
পরিস্থিতি
Destination IP
192.168.1.12
Destination MAC
aa:bb:cc:00:00:12
Unicast মানে একজন পাঠায়, একজনই পায়। Laptop Packet-এ Phone-এর নিজের IP Address বসায় (আর LAN-এ Frame-এ বসায় Phone-এর MAC Address)। Internet-এর প্রায় সব Traffic-ই Unicast: Web Page, SSH, Email, এমনকি Video Streaming আর Video Call-ও।
#NAT: একটি Public Address ভাগ করে ব্যবহার
IPv4-এ প্রায় ৪৩০ কোটি Address আছে, যা পৃথিবীর ডিভাইসের তুলনায় অনেক কম, আর ২০১০-এর দশকে আঞ্চলিক Registry-গুলোর নতুন Block ফুরিয়ে যায়। IPv4-কে যে সমাধান বাঁচিয়ে রেখেছে তা হলো Private Address আর NAT। তিনটি Range Private ব্যবহারের জন্য সংরক্ষিত (RFC 1918), যেগুলো কখনো Public Internet-এ Route হয় না:
| Range | সাধারণ ব্যবহার |
|---|---|
10.0.0.0/8 | প্রতিষ্ঠান, Cloud Network |
172.16.0.0/12 | প্রতিষ্ঠান, Docker |
192.168.0.0/16 | বাসা ও ছোট অফিসের Router |
যে কেউ নিজের Network-এর ভেতরে এগুলো ব্যবহার করতে পারে, তাই লক্ষ লক্ষ বাসায় একটি করে 192.168.1.10 আছে। Internet-এ পৌঁছাতে Router এগুলোকে তার একমাত্র Public Address-এ Translate করে।
একটা সাধারণ বাসায় গুনে দেখো: ৪টা ফোন আর ২টা Laptop মানে ৬টা Private Address, কিন্তু ISP Router-কে দেয় একটাই Public IP। প্রতিটা ডিভাইসে একসঙ্গে কয়েক ডজন Connection খোলা থাকতে পারে, আর প্রতিটা Connection Router-এর NAT Table-এ নিজের আলাদা Row পায়, Public Port দিয়ে চেনা যায়। ৬টা ডিভাইসে ১০০টা করে Connection হলেও লাগে মোটে ৬০০টা Port, যেখানে আছে প্রায় ৬৪,০০০; তাই একটা Address-ই যথেষ্ট।
#একটি Home Network, NAT-এর আগে ও পরে
ধরি, তোমার বাসায় এই Network রয়েছে:
| ডিভাইস | IP Address |
|---|---|
| Computer | 192.168.1.10 |
| Mobile | 192.168.1.11 |
| Router (LAN) | 192.168.1.1 |
| Router (Public) | 203.0.113.25 |
Computer একটি Server-এ HTTPS Connection খোলে:
| পর্যায় | Source | Destination |
|---|---|---|
| NAT-এর আগে (Computer → Router) | 192.168.1.10:53000 | 198.51.100.20:443 |
| NAT-এর পরে (Router → Internet) | 203.0.113.25:62001 | 198.51.100.20:443 |
এখানে Router Source IP 192.168.1.10 থেকে 203.0.113.25 এবং উদাহরণস্বরূপ Source Port 53000 থেকে 62001 করেছে। Router এই Connection-এর তথ্য তার NAT Mapping Table-এ রাখে:
| ভেতরে (Private) | বাইরে (Public) | অপর প্রান্ত |
|---|---|---|
192.168.1.10:53000 | 203.0.113.25:62001 | 198.51.100.20:443 |
#Response কীভাবে ফেরার পথ খুঁজে পায়
| পর্যায় | Source | Destination |
|---|---|---|
| Server থেকে Internet | 198.51.100.20:443 | 203.0.113.25:62001 |
| Router-এ NAT-এর পরে | 198.51.100.20:443 | 192.168.1.10:53000 |
Response আসে Public Address ও Port-এ। Router তার Mapping Table-এ Port 62001 খোঁজে, Destination আবার 192.168.1.10:53000 করে দেয় এবং LAN-এ পৌঁছে দেয়। Computer-এ পৌঁছানোর পর TCP Data-কে সঠিক ক্রমে সাজায়, TLS তা Decrypt করে এবং Browser Page দেখায়।
Home Router-এ NAT
তিনটি ডিভাইস একটি Public Address, 203.0.113.25, ভাগ করে ব্যবহার করে। Source ও Destination Field কীভাবে বদলায় লক্ষ করো।
পরিস্থিতি
NAT-এর আগে → Mapping তৈরি → NAT-এর পরে।
NAT-এর আগে (Computer → Router)
Source
192.168.1.10:53000
Destination
198.51.100.20:443
NAT Mapping Table (Router)
| ভেতরে (Private) | বাইরে (Public) | অপর প্রান্ত | নিষ্ক্রিয় |
|---|
NAT-এর আগে: Computer তার Private Address থেকে একটি HTTPS Connection খোলে। Source 192.168.1.10:53000, Destination 198.51.100.20:443।
বাস্তবে কয়েকটি খুঁটিনাটি গুরুত্বপূর্ণ:
- NAT সব সময় Port পরিবর্তন করে না। ডিভাইসের Source Port Public দিকে খালি থাকলে অনেক Router সেটি রেখে দেয় (Port Preservation)। দুটি ভেতরের Connection-এর সংঘর্ষ হলেই কেবল Router Port বদলায়, যেমন Computer ও Mobile দুজনেই Port 53000 ব্যবহার করলে।
- Port-এর কারণেই এটি কাজ করে। একটি Public IP-তে প্রতি Protocol-এ প্রায় ৬৪,০০০ ব্যবহারযোগ্য Port থাকে, তাই একটি Address হাজার হাজার একযোগে চলা Connection বহন করতে পারে।
- Mapping-এর মেয়াদ শেষ হয়। UDP-তে কোনো “বন্ধ” বার্তা নেই, তাই Router নিষ্ক্রিয় UDP Mapping একটি Timeout-এর পর মুছে দেয়, প্রায়ই ৩০ সেকেন্ড থেকে কয়েক মিনিট; চালু TCP Mapping অনেক বেশি সময় থাকে (প্রায়ই কয়েক ঘণ্টা) এবং Connection বন্ধ হলে মুছে যায়। দীর্ঘস্থায়ী Connection রাখা App ছোট Keepalive Packet পাঠায় যাতে তাদের Mapping হারিয়ে না যায়।
#NAT-এর ধরন
| ধরন | Mapping | সাধারণ ব্যবহার |
|---|---|---|
| Static NAT | একটি Private IP ↔ একটি Public IP, স্থায়ীভাবে | যে Server-কে সবসময় একই Public Address-এ দেখা দিতে হয় |
| Dynamic NAT | Private IP-গুলো একটি Public IP Pool থেকে সক্রিয় থাকা অবস্থায় একটি করে Address ধার নেয় | পুরনো Enterprise Network |
| PAT / NAPT (“NAT Overload”) | অনেক Private IP একটি Public IP ভাগ করে, Port দিয়ে আলাদা করা হয় | প্রতিটি Home Router, Mobile Network, Cloud NAT Gateway |
দিক অনুযায়ী লোকে SNAT (Source NAT: বাইরে যাওয়া Traffic-এর Source বদলানো, ওপরের মতো) এবং DNAT (Destination NAT: ভেতরে আসা Traffic-এর Destination বদলানো, যেমন Port Forwarding ও Load Balancer-এ) বলে।
#Port Forwarding: Traffic ভেতরে আসতে দেওয়া
NAT শুধু ভেতর থেকে শুরু হওয়া Connection-এর Mapping তৈরি করে। বাইরে থেকে আসা কোনো Packet-এর মিলে যাওয়া Mapping না থাকলে সেটি পৌঁছানো যায় না, কারণ Router জানে না এটি কোন ডিভাইসের জন্য। বাসায় Server চালাতে (Game Server, Security Camera, Home Server) তুমি একটি Port Forwarding নিয়ম যোগ করো: একটি স্থায়ী DNAT Entry, যেমন “Public Port 8080 → 192.168.1.20:80”। App UPnP দিয়ে এমন নিয়ম নিজে থেকেই তৈরি করতে পারে, যা সুবিধাজনক কিন্তু নিরাপত্তা ঝুঁকি। প্রতিটি Forward করা Port ভেতরের একটি ডিভাইসকে সরাসরি Internet-এর সামনে খুলে দেয়।
#NAT কোথায় সমস্যা তৈরি করে
#Inbound Connection ও Peer-to-peer
NAT না-চাওয়া Inbound Packet আটকায় বলে, দুজনই NAT-এর পেছনে থাকা দুটি ডিভাইস সহজে একে অপরের সঙ্গে Connect করতে পারে না। Video Call, Online Game ও File Sharing এভাবে সমাধান করে:
- প্রত্যেক পক্ষ Internet-এর একটি STUN Server-কে জিজ্ঞেস করে “তুমি আমাকে কোন Public Address ও Port হিসেবে দেখছ?”।
- তারা App-এর Server দিয়ে সেই Address বিনিময় করে।
- দুজনই একই মুহূর্তে একে অপরকে Packet পাঠায়। প্রতিটি বাইরে যাওয়া Packet নিজের NAT-এ একটি Mapping তৈরি করে, ফলে অন্য পক্ষের Packet এখন মিলে যায় আর ভেতরে ঢোকে: Hole Punching।
- কোনো কড়া (“Symmetric”) NAT প্রতিটি গন্তব্যের জন্য নতুন Port বেছে নিলে অনুমান করা Port ভুল হয় এবং Hole Punching ব্যর্থ হয়। তখন দুজনই বাইরের দিকে একটি TURN Relay Server-এ Connect করে, যে Traffic Forward করে, বিনিময়ে Latency ও Bandwidth খরচ হয়।
WebRTC এসব স্বয়ংক্রিয়ভাবে করে।
দুটি NAT পেরিয়ে Peer-to-peer
দুজন মানুষ Video Call-এ, প্রত্যেকে নিজের NAT-এর পেছনে। কেউই Inbound Connection গ্রহণ করতে পারে না।
পরিস্থিতি
আলিফ বৃষ্টির ব্যাপারে কাজের কিছু জানে না: তার ডিভাইসের Private Address, আর NAT B-তে আলিফের জন্য কোনো Mapping অপেক্ষা করছে না। আলিফের Packet NAT B-তে ফেলে দেওয়া হয়।
#Hairpinning
তুমি Port 8080 তোমার Home Server-এ Forward করলে, তারপর বাসার ভেতর থেকেই নিজের Public Address 203.0.113.25:8080 খুললে Packet Router-এ যায় এবং তাকে সোজা আবার ভেতরে ঘুরে আসতে হয়। যে Router Hairpinning (NAT Loopback) সমর্থন করে, সে Destination ও Source দুটোই বদলে দেয় যাতে এটি কাজ করে; অনেক সস্তা Router করে না, ফলে Service বাইরে থেকে চলে কিন্তু বাসা থেকে চলে না। সাধারণ সমাধান হলো বাসায় Local Address ব্যবহার করা, বা “Split DNS” যা ভেতরের ব্যবহারকারীকে Private IP দেয়।
#CGNAT: ISP-তেও NAT
অনেক ISP, আর প্রায় সব Mobile Network-এর কাছে প্রতিটি Customer-কে একটি করে Public IPv4 Address দেওয়ার মতো যথেষ্ট Address নেই। তারা CGNAT (Carrier-Grade NAT) চালায়: তোমার Router-এর “Public” Address আসলে Shared Range 100.64.0.0/10 থেকে, আর ISP দ্বিতীয়বার Translate করে শত শত Customer-এর ভাগ করা একটি আসল Public Address-এ। ফলাফল:
- Double NAT: প্রতিটি Connection-এ দুটি Mapping Table আর দুটি Timeout।
- কোনো Inbound Connection নেই: নিজের Router-এ Port Forwarding অর্থহীন, কারণ ISP-এর CGNAT-এ তোমার জন্য কোনো নিয়ম নেই।
- ভাগ করা সুনাম: একটি Website শত শত মানুষকে একটি IP হিসেবে দেখে। তাদের একজন অপব্যবহার করলে আর IP Block বা Rate-limit হলে পেছনের সবাই ভোগে।
- Logging: অপব্যবহার খুঁজে বের করতে ISP-কে লিখে রাখতে হয় কোন সময়ে কোন Customer কোন Port ব্যবহার করেছে।
যাচাই করতে: তোমার Router-এর WAN Address যদি 100.64.0.0/10-এ (100.64.x.x থেকে 100.127.x.x) বা অন্য কোনো Private Range-এ হয়, কিন্তু “আমার IP কী” ধরনের Website ভিন্ন Address দেখায়, তাহলে তুমি CGNAT-এর পেছনে।
Carrier-grade NAT: দুইবার Translation
তোমার Router-এর “Public” Address আসলে ISP-এর Shared Range থেকে পাওয়া 100.64.12.34। ISP আবার Translate করে।
পরিস্থিতি
Source
192.168.1.10:53000
Destination
198.51.100.20:443
Packet Computer থেকে বের হয় 192.168.1.10:53000 → 198.51.100.20:443 হিসেবে।
#IPv6 ও NAT
IPv6-এ এত বেশি Address (2¹²⁸) যে প্রতিটি ডিভাইস নিজস্ব Globally Routable Address পেতে পারে, তাই IPv6-এ সাধারণত NAT ব্যবহৃত হয় না। Address শুরু থেকে শেষ পর্যন্ত একই থাকে, Inbound Connection ও Peer-to-peer আবার সহজ হয়, আর সুরক্ষা আসে এমন একটি Stateful Firewall থেকে যা ডিফল্টভাবে না-চাওয়া Inbound Traffic আটকায়। প্রান্তে তবুও Translation দেখা যায়: NAT64 Mobile Network-এর শুধু-IPv6 ফোনকে শুধু-IPv4 Server-এ পৌঁছাতে দেয়।
#System Design-এ Routing ও NAT
- Private Subnet ও NAT Gateway। AWS, Azure বা Google Cloud-এ Private Subnet-এর Server-গুলোর শুধু Private IP থাকে। Update Download বা বাইরের API কল করতে তারা একটি NAT Gateway দিয়ে বের হয়, যা তাদের Outbound Access দেয় অথচ Internet থেকে কেউ ভেতরে Connect করতে পারে না। NAT Gateway প্রতি Gigabyte-এ টাকা নেয়, তাই বিপুল Outbound Traffic (বা Private Endpoint ব্যবহার করা যেত এমন Cloud Service-এ Traffic) আসল খরচ হয়ে দাঁড়াতে পারে।
- Egress IP ও Allowlist। Partner-রা প্রায়ই তোমার Request যে IP Address থেকে আসে তা Allowlist করে। NAT Gateway-এর পেছনে তোমার সব Server অল্প কয়েকটি Public IP ভাগ করে, তাই এটি সহজ। এলোমেলো Serverless বা CGNAT Address-এর পেছনে এটি অসম্ভব।
- Port Exhaustion। একটি Public IP প্রতি গন্তব্যে প্রায় ৬৪,০০০ Port দেয়। একটি NAT Address দিয়ে একটি API-তে বিপুল সংখ্যক ছোট Outbound Connection করা Service-এর Port ফুরিয়ে যেতে পারে এবং Connection ব্যর্থ হতে পারে। সমাধান: Connection Pooling ও Keep-alive, আরও NAT IP, বা Private Endpoint।
- Load Balancer-ও NAT। একটি Load Balancer DNAT করে (Public Virtual Address → একটি Backend-এর Private IP), প্রায়ই SNAT-ও করে, তাই Backend Balancer-এর Address দেখে। এজন্যই Proxy আসল Client IP-সহ
X-Forwarded-ForHeader যোগ করে। - Anycast ও BGP। CDN ও Public DNS Resolver অনেক জায়গা থেকে একই Prefix ঘোষণা করে, আর BGP প্রত্যেক ব্যবহারকারীকে সবচেয়ে কাছেরটিতে পৌঁছে দেয়। একই কৌশলে তারা বিকল কোনো Site কয়েক সেকেন্ডে প্রত্যাহার করতে পারে, যদি প্রত্যাহারটা Health Check-এর সঙ্গে বাঁধা থাকে।
- Multicast ভেতরেই থাকে। Internet-এর ব্যবহারকারীদের কাছে Multicast পাঠানো যায় না, তাই বড় আকারের Live Video মানে CDN দিয়ে Unicast-এ ছড়িয়ে দেওয়া। একটা Data Center বা একজন Operator-এর Network-এর ভেতরে (Market Data, IPTV) Multicast অনেক Bandwidth বাঁচায়।
- Asymmetric পথ ও Stateful ডিভাইস। Firewall ও NAT-কে একটি Connection-এর দুই দিকই দেখতে হয়। দুটি Internet Link বা একাধিক Region থাকলে নিশ্চিত করো ফিরতি Traffic একই Stateful ডিভাইস দিয়ে ফেরে।
#নিজে করে দেখো
# তোমার Routing Table ও Default Gateway
ip route # Linux
netstat -rn # macOS
route print # Windows
# একটি গন্তব্যের জন্য কোন Route ব্যবহার হবে?
ip route get 8.8.8.8 # Linux: Next Hop, Interface, Source Address দেখায়
# Local Link-এ তোমার Computer যে MAC Address শিখেছে (ARP Cache)
ip neigh # Linux
arp -a # Windows / macOS
# Internet তোমাকে যে Public IP হিসেবে দেখে (CGNAT ধরতে Router-এর WAN IP-এর সঙ্গে মেলাও)
curl https://ifconfig.me
# TTL কমা আর পথ খুলে যাওয়া দেখো, Hop by Hop
traceroute example.com # Linux / macOS
tracert example.com # Windows
তোমার Home Router-এর Admin Page-এ লগইন করো (সাধারণত http://192.168.1.1), এবং WAN Address, NAT বা Port Forwarding Page আর যুক্ত ডিভাইসের তালিকা খুঁজে বের করো। WAN Address যদি 100.64 থেকে 100.127 দিয়ে শুরু হয়, তোমার ISP CGNAT ব্যবহার করে।
#সারসংক্ষেপ
মূল কথা
- Routing Destination IP দেখে পরের Hop বেছে নেয়; NAT Address ও Port বদলায়। এ দুটি আলাদা কাজ, যদিও প্রায়ই একই বাক্সে ঘটে।
- Routing Table-এ থাকে Destination Prefix, Next Hop, Interface ও Metric। সিদ্ধান্ত নেয় Longest-prefix Match; Metric টাই ভাঙে; 0.0.0.0/0 হলো Default Route; কোনো মিল না থাকলে Drop আর ICMP Destination Unreachable।
- প্রতিটি Hop-এ MAC Address বদলায় আর TTL (IPv6: Hop Limit) এক কমে; NAT না বদলালে IP Address একই থাকে। TTL Routing Loop-এ আটকে পড়া Packet মেরে ফেলে।
- কোনো Router পুরো পথ জানে না, আর ফেরার পথ আলাদা হতে পারে (Asymmetric Routing)।
- Route হয় Connected, Static বা Dynamic: Network-এর ভেতরে OSPF, Autonomous System-গুলোর মধ্যে BGP, সঙ্গে AS Path, Peering ও Transit। ASN আসে আঞ্চলিক Internet Registry (RIR) থেকে। BGP Hijack ও Leak বাস্তব; RPKI ও Filtering এদের বিরুদ্ধে রক্ষা করে।
- BGP-র সেরা পথ: সবচেয়ে বেশি Local Preference (তোমার Policy), তারপর সবচেয়ে ছোট AS Path, Origin, সবচেয়ে কম MED, iBGP-র চেয়ে eBGP, সবচেয়ে কাছের Exit, শেষে টাই ভাঙা। কোনো Session বিকল হলে তার Route তুলে নেওয়া হয়, আবার দৌড় হয়। BGP বাদ দেয় Route, কখনো Packet না।
- Unicast (একজন থেকে একজন) প্রায় সবকিছু বহন করে; Broadcast (LAN-এর সবাই) Router-এ থামে, আর Switch-এর Loop-এ Storm বাধাতে পারে; Multicast (যোগ দেওয়া প্রাপকদের কাছে একটাই Stream, IGMP + PIM) চলে শুধু একজন Operator-এর Network-এর ভেতরে; Anycast (একটা Address, BGP-র হিসাবে কাছের Site) চালায় DNS Resolver আর CDN।
- NAT/PAT একটি Mapping Table দিয়ে অনেক Private ডিভাইসকে একটি Public IP ভাগ করতে দেয়; Reply উল্টো Translate হয়, না-চাওয়া Inbound Traffic Drop হয়, Port Forwarding ইচ্ছাকৃত ছিদ্র খোলে, আর নিষ্ক্রিয় Mapping-এর মেয়াদ শেষ হয়।
- NAT Peer-to-peer (STUN, Hole Punching, TURN), Hairpinning, আর CGNAT-এর ক্ষেত্রে যেকোনো Inbound Connection-কেই জটিল করে। NAT Firewall নয়, আর IPv6-এ সাধারণত NAT লাগে না।
আগে নিজে উত্তর দাও, তারপর ব্যাখ্যাটা পড়ো। ঠিক হলেও পড়ো, কারণ ভুল Option-গুলো কেন ভুল, সেটাও ওখানে আছে।
নিজেকে যাচাই করোপ্রশ্ন
একটি Router-এ Route আছে 10.0.0.0/8 (Metric 5), 10.1.0.0/16 (Metric 50) এবং 0.0.0.0/0। 10.1.4.20-এর জন্য কোন Route ব্যবহার হবে?
নিজেকে যাচাই করোপ্রশ্ন
তোমার Router-এর NAT Table-এ Public Port 22-এর কোনো Entry নেই। Internet থেকে 203.0.113.25:22-এর জন্য একটি Packet এল। কী হবে?
নিজেকে যাচাই করোপ্রশ্ন
তুমি Home Router-এ Port Forwarding চালু করলে, কিন্তু বন্ধুরা তবুও Connect করতে পারছে না। তোমার Router-এর WAN Address 100.72.18.4। সবচেয়ে সম্ভাব্য কারণ কী?
নিজেকে যাচাই করোপ্রশ্ন
একজন Product Manager চান কোম্পানির Live Video অনুষ্ঠান Public Internet-এ Multicast দিয়ে পাঠানো হোক, যাতে ৫০,০০০ দর্শকের Bandwidth বাঁচে। সমস্যাটা কোথায়?
নিজেকে যাচাই করোপ্রশ্ন
অফিসের 10.1.2.0/24 Subnet-এর নতুন Laptop-গুলো কোনো IP Address পাচ্ছে না, অথচ 10.1.1.0/24-এর Laptop ঠিকঠাক পাচ্ছে, যেখানে DHCP Server বসানো। দুই Subnet একটা Router দিয়ে জোড়া। সবচেয়ে সম্ভাব্য সমাধান কী?
নিজেকে যাচাই করোপ্রশ্ন
তোমার ISP 198.51.100.0/24-এর খবর পায় একজন Customer-এর কাছ থেকে, AS Path 64503 64497 64496 আর Local Preference ২০০; আর একজন Transit Provider-এর কাছ থেকে, AS Path 64501 64496 আর Local Preference ১০০। BGP কোন Route বাছবে, কেন?
নিজেকে যাচাই করোপ্রশ্ন
Anycast নিয়ে কোন দুটো কথা সত্যি? (দুটো বেছে নাও।)
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
সিলেটের একটা নতুন ISP দুটো Upstream Provider-এর সঙ্গে BGP চালাতে চায়, তাই নিজের Autonomous System Number দরকার। নম্বরটা আসবে কোথা থেকে?
নিজেকে যাচাই করোপ্রশ্ন
একটা বাসায় ৪টা ফোন আর ২টা Laptop Wi-Fi-তে, সবাই একসঙ্গে Browse করছে, আর ISP Router-কে একটাই Public IPv4 Address দিয়েছে। কোন কথাটা ঠিক?
নিজেকে যাচাই করোপ্রশ্ন
তোমার Laptop 192.168.1.10/24, সে 192.168.1.40-এর একটা Printer-এ File পাঠাচ্ছে। Frame সেখানে পৌঁছায় কীভাবে?
নিজেকে যাচাই করোপ্রশ্ন
Routing Table-এর 0.0.0.0/0 via 203.0.113.1 Entry-টার মানে কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা Windows Server TTL 128 দিয়ে একটা Packet পাঠাল। Linux Client-এ পৌঁছানোর আগে Packet-টা ৫টা Router পার হলো। Client কত TTL দেখবে?
নিজেকে যাচাই করোপ্রশ্ন
Traceroute-এ দেখা যাচ্ছে Hop 5 আর 6-এ একই দুটো Router পালা করে আসছে, আর Hop 30-এ গিয়ে থেমে যায়। কী ঘটছে?
নিজেকে যাচাই করোপ্রশ্ন
একটা প্রতিষ্ঠান Static Route দিয়ে শাখা অফিসে যায়। Link বিকল হলো, তবুও প্রধান অফিসের Router কয়েক ঘণ্টা ধরে শাখার Traffic মরা Link-এই পাঠাচ্ছে। কেন, আর সাধারণ সমাধান কী?
নিজেকে যাচাই করোপ্রশ্ন
NAT ছাড়া একটা IPv4 Packet Forward করার সময় Router প্রতিটা Hop-এ কোন দুটো Field বদলায়? (দুটো বেছে নাও।)
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা অফিসে দুটো Internet Link, দুটো আলাদা Stateful Firewall দিয়ে। Request বের হয় Firewall A দিয়ে, কিন্তু অনেক উত্তর ফেরে Firewall B দিয়ে আর Drop হয়। সমস্যা কী?
নিজেকে যাচাই করোপ্রশ্ন
নিচের কোন Address Private (RFC 1918) Range-এ পড়ে না?
নিজেকে যাচাই করোপ্রশ্ন
তুমি Port 8080 বাসার Server-এ Forward করেছ। বন্ধুরা http://203.0.113.25:8080 খুলতে পারছে, কিন্তু বাসার ভেতর থেকে তোমার Laptop-এ একই Address Timeout দিচ্ছে। সবচেয়ে সম্ভাব্য কারণ কী?
নিজেকে যাচাই করোপ্রশ্ন
কড়া (Symmetric) NAT-এর পেছনে থাকা দুজন ব্যবহারকারী Video Call শুরু করতে চাইছেন। Hole Punching বারবার ব্যর্থ। WebRTC এরপর কী করে?
নিজেকে যাচাই করোপ্রশ্ন
একটা NAT Gateway-এর একটাই Public IP-র পেছনের একটা Service একই Partner API-তে প্রতি সেকেন্ডে ১,০০০টা নতুন Connection খোলে, আর ব্যবহারের পর প্রতিটা Mapping প্রায় ৬০ সেকেন্ড আটকে থাকে। মোটামুটি কয়টা Source Port আটকে আছে, আর কী ঘটবে?
নিজেকে যাচাই করোপ্রশ্ন
এক সহকর্মী বলছেন: “বাসায় Firewall লাগবে না, NAT-ই আমাদের রক্ষা করে।” কোন কথাটা ঠিক?
নিজেকে যাচাই করোপ্রশ্ন
একটা অসৎ Network 198.51.100.0/25 ঘোষণা করল, তোমার 198.51.100.0/24-এর অর্ধেক, আর Internet-এর বড় অংশ তোমার Traffic তার দিকে পাঠাতে শুরু করল। কোন দুটো ব্যবস্থা কাজে দেবে? (দুটো বেছে নাও।)
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
তোমার Network-এর দুটো Upstream Link। Link B বন্ধ না করে তুমি চাও সেখানে কম Traffic ঢুকুক। BGP-র সাধারণ হাতিয়ার কোনটা?
নিজেকে যাচাই করোপ্রশ্ন
MED নিয়ে কোন কথাটা সত্যি না?
নিজেকে যাচাই করোপ্রশ্ন
IGMP Snooping নেই এমন একটা Switch তার Uplink থেকে একটা Multicast Market Data Stream পেল। সে এটা নিয়ে কী করে?
নিজেকে যাচাই করোপ্রশ্ন
কেউ অফিসের Switch-এ দুটো Cable দিয়ে দ্বিতীয় একটা Unmanaged Switch লাগানোর কয়েক মিনিটের মধ্যে পুরো LAN বসে গেল। কী হলো, আর কী এটা ঠেকায়?
নিজেকে যাচাই করোপ্রশ্ন
IPv6-এ Broadcast নেই। তাহলে একটা IPv6 Host তার LAN-এর প্রতিবেশীর MAC Address জানে কীভাবে?
নিজেকে যাচাই করোপ্রশ্ন
তোমার Router-এর WAN Address 100.100.5.9, কিন্তু “আমার IP কী” Site দেখাচ্ছে 203.0.113.77। এ থেকে কী বোঝা যায়?
নিজেকে যাচাই করোপ্রশ্ন
IPv6 আর NAT নিয়ে কোন দুটো কথা সত্যি? (দুটো বেছে নাও।)
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
Singapore-এর একটা Anycast DNS Site-এর সব Server বিকল, কিন্তু তার Edge Router চালু থেকে Anycast Prefix ঘোষণা করেই যাচ্ছে। Singapore-এর দিকে Route হওয়া ব্যবহারকারীদের কী হয়?