Course-এর সূচি

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পূর্ণরূপকাজ
ISPInternet Service Providerব্যবহারকারীকে Internet-এর মূল Backbone-এ সংযোগ দেয় (Link3, Grameenphone, Banglalink…)
ASAutonomous Systemনিজস্ব Routing Policy-সহ একটি প্রতিষ্ঠানের Network, একটি নম্বর (ASN) দিয়ে চেনা যায়
BGPBorder Gateway ProtocolAutonomous System-গুলো একে অপরকে জানায় কোন Address-এ তারা পৌঁছাতে পারে, যাতে প্রত্যেকে সেরা পথ বেছে নিতে পারে

তোমার Laptop থেকে Packet-এর যাত্রা এরকম:

  1. Local Network (Router + NAT)। তোমার Computer-এর একটি Private IP আছে। Local Network-এর বাইরের সবকিছু সে পাঠায় তার Default Gateway-তে, অর্থাৎ Home Router-এ। Router সেটিকে ISP-এর দিকে Route করে এবং IPv4-এ একটি NAT Mapping প্রয়োগ করে।
  2. ISP ও Internet-এর Router। প্রতিটি Router নিজের Routing Table দেখে Packet-কে গন্তব্যের দিকে এক Hop এগিয়ে দেয়।
  3. গন্তব্যের Network (যেমন Google-এর Edge) Request গ্রহণ করে, সঠিক Service-এ পাঠায় এবং Response তৈরি করে।
  4. 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 / PrefixCIDR Notation-এ লেখা একটি Network: Address এবং শুরুর কত Bit মিলতে হবে10.20.30.0/24
Next Hopপরের Router-এর IP Address, অথবা গন্তব্য যুক্ত Network-এ থাকলে “সরাসরি যুক্ত”172.16.1.2
InterfacePacket কোন 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 ধরো:

DestinationNext HopInterfaceMetric
192.168.10.0/24সরাসরি যুক্তeth00
10.20.0.0/16172.16.0.2 (R2, Branch Office)eth120
10.20.30.0/24172.16.1.2 (R3, Lab)eth220
0.0.0.0/0203.0.113.1 (ISP)eth3100
  • 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-ই সবচেয়ে নির্দিষ্ট।

Office LAN192.168.10.0/24
R1এই Router
R2 (Branch)10.20.0.0/16
R3 (Lab)10.20.30.0/24
ISPবাকি সব
→ 10.20.30.7

Dst IP

10.20.30.7

TTL

64

R1-এর Routing Table

DestinationNext HopInterfaceMetric
192.168.10.0/24সরাসরি যুক্তeth00
10.20.0.0/16172.16.0.2eth120
10.20.30.0/24172.16.1.2eth220
0.0.0.0/0203.0.113.1eth3100
ধাপ 1 / 4
1

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 ছাড়া)।

Computer192.168.1.10
Home RouterNAT
ISP Router
Transit A
Transit B
Server198.51.100.20

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

ধাপ 1 / 5
1

তোমার 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-এর তথ্য কোথাও থেকে আসতে হয়। উৎস তিনটি:

  1. Connected Route: যে Network-এ Router সরাসরি যুক্ত। Interface চালু হলেই স্বয়ংক্রিয়ভাবে যোগ হয়।
  2. Static Route: Administrator হাতে টাইপ করেন। সহজ, অনুমানযোগ্য, কোনো Protocol Traffic নেই, কিন্তু বিকলতায় কখনো সাড়া দেয় না।
  3. 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 বিকল হলে কেউ তা আপডেট করে না।

Users
A
B
C
D
Server10.0.3.0/24

A-এর Routing Table

DestinationNext HopCostকীভাবে শেখা
10.0.3.0/24B—Static
ধাপ 1 / 3
1

একজন 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।

পরিস্থিতি

তোমার ISPAS 64500
Transit 1AS 64501
IXPPeering
Transit 2AS 64502
Content NetworkAS 64496
অসৎ NetworkAS 64511
644966449664496
ধাপ 1 / 4
1

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, তারপর IncompleteRoute-টা কীভাবে 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-এর কাছ থেকে।

পরিস্থিতি

তোমার NetworkAS 64500
CustomerAS 64503
Peer (IXP-তে)AS 64502
Transit ProviderAS 64501
গন্তব্যAS 64496
64503 64497 6449664502 6449664501 64496

198.51.100.0/24-এ যাওয়ার জন্য AS 64500-এর Route

কার কাছ থেকেAS PathLocal PrefMEDফল
Customer64503 64497 64496
Peer64502 64496
Transit64501 64496
ধাপ 1 / 4
1

তোমার 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
BroadcastLAN-এর সবার কাছে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।

পরিস্থিতি

Laptop192.168.1.10
Set-top Box192.168.1.11
Phone192.168.1.12
Switch
Router192.168.1.1
IPTV ServerISP-এর ভেতরে
→ 192.168.1.12

Destination IP

192.168.1.12

Destination MAC

aa:bb:cc:00:00:12

ধাপ 1 / 4
1

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
Computer192.168.1.10
Mobile192.168.1.11
Router (LAN)192.168.1.1
Router (Public)203.0.113.25

Computer একটি Server-এ HTTPS Connection খোলে:

পর্যায়SourceDestination
NAT-এর আগে (Computer → Router)192.168.1.10:53000198.51.100.20:443
NAT-এর পরে (Router → Internet)203.0.113.25:62001198.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:53000203.0.113.25:62001198.51.100.20:443

#Response কীভাবে ফেরার পথ খুঁজে পায়

পর্যায়SourceDestination
Server থেকে Internet198.51.100.20:443203.0.113.25:62001
Router-এ NAT-এর পরে198.51.100.20:443192.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-এর পরে।

Computer192.168.1.10
Mobile192.168.1.11
Home Server192.168.1.20
RouterLAN .1 · WAN 203.0.113.25
Internet
Web Server198.51.100.20
বাইরের Host192.0.2.77

NAT-এর আগে (Computer → Router)

Source

192.168.1.10:53000

Destination

198.51.100.20:443

NAT Mapping Table (Router)

ভেতরে (Private)বাইরে (Public)অপর প্রান্তনিষ্ক্রিয়
ধাপ 1 / 4
1

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 NATPrivate 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 এভাবে সমাধান করে:

  1. প্রত্যেক পক্ষ Internet-এর একটি STUN Server-কে জিজ্ঞেস করে “তুমি আমাকে কোন Public Address ও Port হিসেবে দেখছ?”।
  2. তারা App-এর Server দিয়ে সেই Address বিনিময় করে।
  3. দুজনই একই মুহূর্তে একে অপরকে Packet পাঠায়। প্রতিটি বাইরে যাওয়া Packet নিজের NAT-এ একটি Mapping তৈরি করে, ফলে অন্য পক্ষের Packet এখন মিলে যায় আর ভেতরে ঢোকে: Hole Punching।
  4. কোনো কড়া (“Symmetric”) NAT প্রতিটি গন্তব্যের জন্য নতুন Port বেছে নিলে অনুমান করা Port ভুল হয় এবং Hole Punching ব্যর্থ হয়। তখন দুজনই বাইরের দিকে একটি TURN Relay Server-এ Connect করে, যে Traffic Forward করে, বিনিময়ে Latency ও Bandwidth খরচ হয়।

WebRTC এসব স্বয়ংক্রিয়ভাবে করে।

দুটি NAT পেরিয়ে Peer-to-peer

দুজন মানুষ Video Call-এ, প্রত্যেকে নিজের NAT-এর পেছনে। কেউই Inbound Connection গ্রহণ করতে পারে না।

পরিস্থিতি

আলিফ192.168.1.10
NAT A203.0.113.25
STUN / TURN198.51.100.3
NAT B192.0.2.40
বৃষ্টি10.0.0.7
→ 192.0.2.40:?
ধাপ 1 / 2
1

আলিফ বৃষ্টির ব্যাপারে কাজের কিছু জানে না: তার ডিভাইসের 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 করে।

পরিস্থিতি

Computer192.168.1.10
তোমার RouterWAN 100.64.12.34
প্রতিবেশীর RouterWAN 100.64.12.35
ISP CGNATPublic 203.0.113.80
Web Server198.51.100.20
বাইরের বন্ধু192.0.2.77

Source

192.168.1.10:53000

Destination

198.51.100.20:443

ধাপ 1 / 4
1

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-For Header যোগ করে।
  • 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 লাগে না।