এই পর্বে যা শিখবেন
- VLAN কোন সমস্যার সমাধান করে — broadcast, নিরাপত্তা আর ব্যবস্থাপনা
- Access port আর trunk port-এর পার্থক্য, আর frame কোথায় tag পায় কোথায় হারায়
- 802.1Q tag-এর প্রতিটি bit, ৪,০৯৪-এর হিসাব, native VLAN আর ১,৫২২ byte-এর frame
- Router-on-a-stick আর SVI দিয়ে inter-VLAN routing — ধাপে ধাপে
- VLAN hopping-এর ঝুঁকি আর প্রতিরক্ষা, voice VLAN, Q-in-Q আর VXLAN
১ · এক অফিস, তিন বিভাগ, একটাই switch — সমস্যাটা কোথায়
ঢাকার মতিঝিলে একটি মাঝারি আকারের কোম্পানির অফিস কল্পনা করুন। তিনতলা জুড়ে প্রায় ৮০টি কম্পিউটার। দোতলায় হিসাব বিভাগ (accounts) — বেতন, ব্যাংক লেনদেন, ভ্যাটের ফাইল। তিনতলায় HR — কর্মীদের ব্যক্তিগত তথ্য, নিয়োগের কাগজ। আর নিচতলার রিসেপশনে অতিথিদের জন্য ফ্রি Wi-Fi. সব কম্পিউটার আর Wi-Fi-র access point তার দিয়ে যুক্ত কয়েকটি switch-এ, যেগুলো আবার একে অপরের সাথে যুক্ত।
পর্ব ১২-এ দেখেছেন, switch প্রতিটি frame-এর গন্তব্য MAC ঠিকানা দেখে শুধু সঠিক port-এ পাঠায়। কিন্তু একটি ব্যতিক্রম আছে: broadcast frame — গন্তব্য ff:ff:ff:ff:ff:ff, অর্থাৎ “সবার জন্য”. Switch এমন frame পেলে যে port দিয়ে এসেছে সেটি বাদে সব port-এ পাঠিয়ে দেয় (flooding). কোনো কম্পিউটার যখন পাশের যন্ত্রের MAC খোঁজে (ARP, পর্ব ১৮), বা চালু হয়ে ঠিকানা চায় (DHCP, পর্ব ১৮), তখন broadcast পাঠায়। অর্থাৎ broadcast নেটওয়ার্কের স্বাভাবিক, দৈনন্দিন জিনিস।
একটি কমিউনিটি সেন্টারের বড় হলে একসাথে তিনটি অনুষ্ঠান হচ্ছে — একটি জন্মদিন, একটি অফিসের সভা, একটি বিয়ের গায়েহলুদ। হল একটাই, মাইকও একটাই। জন্মদিনের উপস্থাপক মাইকে “কেক কাটা হবে!” ঘোষণা দিলে সভার লোকেরাও শুনছেন, গায়েহলুদের লোকেরাও। অযথা বিরক্তি, আর সভার গোপন আলোচনা গায়েহলুদের অতিথিদের কানেও যাচ্ছে। সমাধান? হলটিকে পর্দা দিয়ে তিন ভাগ করে প্রতিটি ভাগে আলাদা মাইক-স্পিকার বসানো। ভবন, বিদ্যুৎ আর বাবুর্চি একটাই, কিন্তু ঘোষণা যায় শুধু নিজের অংশে। VLAN ঠিক এই পর্দা আর আলাদা মাইক।
একটি বড় flat LAN-এর তিনটি সমস্যা
Broadcast-এর ভিড়
একটি LAN-এ যত যন্ত্র, প্রতিটি যন্ত্রকে তত বেশি broadcast পড়ে দেখতে হয় — নিজের কাজের না হলেও। ৮০টি যন্ত্রে এটি সামান্য, কয়েক হাজারে তারের ক্ষমতা আর প্রতিটি যন্ত্রের CPU নষ্ট হয়। আর পর্ব ১২-এর মতো কোনো loop হলে broadcast storm পুরো নেটওয়ার্ক অচল করে দেয়।
ছোট broadcast domainনিরাপত্তা
অতিথির ফোন আর হিসাব বিভাগের সার্ভার একই LAN-এ থাকলে অতিথি সরাসরি সার্ভারের দরজায় টোকা দিতে পারেন। কোনো ভাইরাস-আক্রান্ত ল্যাপটপ পুরো অফিসে ছড়াতে পারে।
বিভাগে বিভাগে দেয়ালব্যবস্থাপনা
HR-এর একজন কর্মী তিনতলা থেকে দোতলায় বসলে কি নতুন তার টানতে হবে? VLAN-এ শুধু তাঁর port-এর VLAN নম্বর বদলালেই চলে — ভৌত অবস্থান আর যৌক্তিক দল আলাদা হয়ে যায়।
তার নয়, কনফিগারেশনVLAN আসার আগে সমাধান ছিল প্রতিটি বিভাগের জন্য আলাদা switch, আলাদা তার, আর বিভাগগুলোর মাঝে একটি router. খরচ বেশি, আর কর্মী সরলেই তার বদল। Virtual LAN (VLAN) একটি ভৌত switch-কে কয়েকটি যৌক্তিক switch-এ ভাগ করে। প্রতিটি VLAN-এর frame শুধু সেই VLAN-এর port-গুলোর মধ্যেই চলে; অন্য VLAN-এ যেতে হলে router পার হতে হয়, ঠিক যেন আলাদা দুটি নেটওয়ার্ক।
এক VLAN = এক broadcast domain = সাধারণত এক IP subnet. একটি VLAN-এর ভেতরের যন্ত্রগুলো সরাসরি (switch দিয়ে, layer 2-তে) কথা বলে; আলাদা VLAN-এর যন্ত্রগুলোর মাঝে কথা চলে router দিয়ে (layer 3-তে)। VLAN একটি data link স্তরের (layer 2) ধারণা, কিন্তু এর সঠিক ব্যবহার বুঝতে network স্তরের subnet-এর একটু ধারণা লাগবে — সেটুকু অংশ ৫-এ দেব, পুরোটা পর্ব ১৫–১৭-এ।
নব্বইয়ের দশকে বিভিন্ন কোম্পানি নিজেদের মতো VLAN বানাত — যেমন Cisco-র নিজস্ব ISL (Inter-Switch Link), যা পুরো frame-কে আরেকটি header আর trailer-এ মুড়ে দিত। ফলে এক কোম্পানির switch অন্য কোম্পানির switch-এর VLAN বুঝত না। ১৯৯৮ সালে IEEE প্রকাশ করে 802.1Q মান — frame মোড়ানোর বদলে ভেতরে মাত্র ৪ byte-এর একটি tag বসানো। একই বছর 802.3ac Ethernet-এর সর্বোচ্চ frame-এর আকার ৪ byte বাড়িয়ে এই tag-এর জায়গা করে দেয়। আজ কার্যত সব managed switch 802.1Q বোঝে, আর Cisco-র নতুন অনেক switch ISL সমর্থনই করে না।
২ · Access port — প্রতিটি port একটি VLAN-এর
সবচেয়ে সাধারণ VLAN হলো port-based VLAN: switch-এর প্রতিটি port-কে একটি VLAN নম্বর দেওয়া হয়। এমন port-কে বলে access port. PC, প্রিন্টার, IP ক্যামেরা — সাধারণ যন্ত্র যুক্ত হয় access port-এ। যন্ত্রটি জানেই না সে কোন VLAN-এ; সে সাধারণ Ethernet frame পাঠায়, tag ছাড়া। Switch frame-টি যে port-এ ঢুকল তা দেখে মনে মনে ধরে নেয় “এটি VLAN 10-এর”, আর সেই VLAN-এর ভেতরেই সিদ্ধান্ত নেয়।
আমাদের অফিসের দুটি switch-এর port-এর ভাগ এরকম (এই পর্বের সব উদাহরণে এটিই ব্যবহার হবে):
| Switch / port | যন্ত্র | Port-এর ধরন | VLAN |
|---|---|---|---|
| SW1 port 1 | PC-A (হিসাব) | access | 10 |
| SW1 port 2 | PC-B (HR) | access | 20 |
| SW1 port 3 | PC-C (হিসাব) | access | 10 |
| SW1 port 4 | Guest-1 (অতিথি) | access | 30 |
| SW2 port 1 | PC-D (হিসাব) | access | 10 |
| SW2 port 2 | PC-E (HR) | access | 20 |
| SW2 port 3 | Guest-2 (অতিথি) | access | 30 |
| SW1 port 24 ↔ SW2 port 24 | দুই switch-এর সংযোগ | trunk | 10, 20, 99 (৩০ বাদ) |
VLAN-সচেতন switch তার MAC address table-ও VLAN অনুযায়ী আলাদা রাখে: প্রতিটি সারি আসলে (VLAN, MAC) → port. VLAN 10-এ শেখা কোনো MAC দিয়ে VLAN 20-এর frame কোথাও পাঠানো হয় না। আর broadcast বা অচেনা গন্তব্যের frame flood হয় শুধু সেই VLAN-এর port-গুলোতে। এই একটি নিয়মই VLAN-এর সব জাদু।
vlan 10
name ACCOUNTS
vlan 20
name HR
vlan 30
name GUEST
!
interface GigabitEthernet0/1
description PC-A (accounts)
switchport mode access ! এই port কখনো trunk হবে না
switchport access vlan 10 ! port-টি VLAN 10-এর
switchport nonegotiate ! DTP-র trunk-আলোচনা বন্ধ (অংশ ৭)
!
SW1# show vlan brief
VLAN Name Status Ports
---- ----------- --------- ------------------
1 default active
10 ACCOUNTS active Gi0/1, Gi0/3
20 HR active Gi0/2
30 GUEST active Gi0/4এটি একটি উদাহরণ, চালানোর কোড নয়। Juniper, MikroTik, HP/Aruba বা সাধারণ সস্তা “smart switch”-এর ওয়েব-পাতায় একই ধারণা ভিন্ন নামে থাকে — কোথাও “untagged member”, কোথাও “PVID” (port VLAN ID). নাম যা-ই হোক, প্রশ্ন একটাই: এই port-এ tag ছাড়া আসা frame কোন VLAN-এ যাবে?
৩ · Trunk আর 802.1Q tag — এক তারে অনেক VLAN
এবার সমস্যা: হিসাব বিভাগের PC-A আছে SW1-এ, আর PC-D আছে SW2-তে। দুজনেই VLAN 10-এর। দুই switch-এর মাঝে প্রতিটি VLAN-এর জন্য আলাদা তার টানলে তিনটি VLAN-এ তিনটি তার, পঞ্চাশটি VLAN-এ পঞ্চাশটি — অসম্ভব। সমাধান: একটিই তার, কিন্তু প্রতিটি frame-এর গায়ে একটি লেবেল — “আমি VLAN 10-এর”. এই তারকে বলে trunk, আর লেবেলটি হলো VLAN tag.
কুরিয়ার কোম্পানির ঢাকা–চট্টগ্রাম ট্রাক একটাই, কিন্তু তাতে যায় অনেক শাখার পার্সেল। প্রতিটি পার্সেলের গায়ে শাখার রঙিন স্টিকার। ঢাকার হাব ট্রাকে তোলার সময় স্টিকার লাগায়, চট্টগ্রামের হাব স্টিকার দেখে সঠিক শাখার ভ্যানে তুলে স্টিকার খুলে ফেলে। প্রাপক কখনো স্টিকার দেখেন না। Trunk হলো সেই ট্রাক, 802.1Q tag হলো স্টিকার, আর access port হলো শাখার ভ্যান।
Tag কোথায় বসে, দেখতে কেমন
802.1Q tag বসে উৎস MAC ঠিকানার ঠিক পরে, EtherType ঘরের আগে। আগে যেখানে EtherType থাকত (যেমন IPv4-এর জন্য 0x0800), সেখানে এখন tag-এর প্রথম দুই byte 0x8100. এই বিশেষ মান দেখেই প্রাপক বোঝে, “এটি সাধারণ frame নয়, এর পরে আরও ২ byte VLAN-তথ্য, তারপর আসল EtherType.”
Ethernet II frame, tag ছাড়া (bytes)
┌─────────┬─────────┬──────────┬──────────────────┬─────┐
│ Dst MAC │ Src MAC │EtherType │ Payload │ FCS │
│ 6 │ 6 │ 2 │ 46–1500 │ 4 │ সর্বোচ্চ 1518
└─────────┴─────────┴──────────┴──────────────────┴─────┘
802.1Q tag-সহ frame
┌─────────┬─────────┬────────────┬──────────┬──────────────┬─────┐
│ Dst MAC │ Src MAC │ 802.1Q tag │EtherType │ Payload │ FCS │
│ 6 │ 6 │ 4 │ 2 │ 42–1500 │ 4 │ সর্বোচ্চ 1522
└─────────┴─────────┴────────────┴──────────┴──────────────┴─────┘
৪ byte-এর tag (৩২ bit) ভেঙে দেখলে
┌────────────────────────┬─────┬─────┬──────────────────┐
│ TPID = 0x8100 │ PCP │ DEI │ VID │
│ 16 bit │ 3 │ 1 │ 12 bit │
└────────────────────────┴─────┴─────┴──────────────────┘
└──── TCI (16 bit) ────────────┘
| ঘর | Bit | কাজ |
|---|---|---|
| TPID (Tag Protocol Identifier) | ১৬ | সবসময় 0x8100 (সাধারণ 802.1Q tag). EtherType-এর জায়গায় বসে জানায় “tag আছে”. |
| PCP (Priority Code Point) | ৩ | অগ্রাধিকার ০–৭ (৮টি শ্রেণি), এক সময় 802.1p নামে পরিচিত। ভিড়ের সময় switch কোন frame আগে পাঠাবে — যেমন ফোনের কথা সাধারণত ৫ (QoS, পর্ব ২৬)। |
| DEI (Drop Eligible Indicator) | ১ | ১ হলে “ভিড়ে দরকার হলে আগে আমাকে ফেলুন”. আগে এর নাম ছিল CFI, Token Ring-এর সাথে সামঞ্জস্যের জন্য। |
| VID (VLAN Identifier) | ১২ | VLAN নম্বর, ১ থেকে ৪,০৯৪। |
৪,০৯৪ কোথা থেকে এলো — ছোট্ট একটি প্রমাণ
VID-এর জন্য ১২ bit. প্রতিটি bit দুই রকম হতে পারে, তাই মোট আলাদা মান ২ × ২ × … (১২ বার) = ২১২ = ৪,০৯৬, অর্থাৎ 0 থেকে 4095. এর মধ্যে দুটি মান মান-নির্ধারক সংস্থা সংরক্ষিত রেখেছে:
- VID 0 (0x000): “কোনো VLAN নয়” — frame-এ শুধু অগ্রাধিকার (PCP) বসানোর জন্য tag দেওয়া হয়েছে (priority-tagged frame). Switch একে port-এর নিজের VLAN-এর frame হিসেবে ধরে।
- VID 4095 (0xFFF): সংরক্ষিত, সাধারণ frame-এ ব্যবহার নিষেধ।
তাই ব্যবহারযোগ্য VLAN = ৪,০৯৬ − ২ = ৪,০৯৪ (1 থেকে 4094). পরীক্ষায় প্রায়ই “৪,০৯৬” লিখে নম্বর কাটা যায় — মানের সংখ্যা আর ব্যবহারযোগ্য সংখ্যা আলাদা। এর ওপর কিছু vendor নিজেদের জন্য আরও কয়েকটি নম্বর রেখে দেয় (যেমন Cisco-র পুরোনো switch-এ 1002–1005); এটি vendor-এর নিয়ম, মানের নয়।
Frame-এর আকার: ১,৫১৮ থেকে ১,৫২২
Tag ছাড়া সর্বোচ্চ Ethernet frame = ৬ + ৬ + ২ + ১,৫০০ + ৪ = ১,৫১৮ byte (preamble বাদে)। Tag বসলে ৪ byte বাড়ে: ১,৫২২ byte. লক্ষ করুন, payload-এর সর্বোচ্চ সীমা (MTU ১,৫০০) বদলায়নি — IP-র কাছে কোনো পার্থক্য নেই। ন্যূনতম frame ৬৪ byte-ই থাকে; tag-ও সেই ৬৪-এর মধ্যে গোনা হয়, তাই tag-সহ frame-এ ন্যূনতম payload ৪২ byte যথেষ্ট। আর একটি জরুরি বিষয়: শেষের FCS (CRC, পর্ব ০৯) পুরো frame-এর ওপর হিসাব হয়, তাই tag বসানো বা খোলার সময় switch-কে FCS নতুন করে হিসাব করতে হয়।
নিচের simulator একটি ৪ byte-এর tag-কে hex থেকে ভেঙে ঘরগুলো দেখায়, আর উল্টো দিকে ঘরের মান থেকে tag বানায়। Bit সরানো (>>>, <<) আর মুখোশ (&) দিয়েই পুরো কাজ — switch-এর hardware-ও মূলত এটাই করে।
// 802.1Q tag = TPID (16 bits) + TCI (16 bits: PCP 3 | DEI 1 | VID 12).
function decode(hex) {
const v = parseInt(hex.replace(/\s/g, ""), 16) >>> 0; // 32-bit tag
const tpid = v >>> 16, tci = v & 0xffff;
const pcp = tci >>> 13, dei = (tci >>> 12) & 1, vid = tci & 0x0fff;
let note = "VLAN " + vid;
if (vid === 0) note = "priority tag only (no VLAN)";
if (vid === 0xfff) note = "reserved VID - invalid";
const kind = tpid === 0x8100 ? "802.1Q C-tag" : tpid === 0x88a8 ? "802.1ad S-tag" : "not a VLAN tag";
console.log(hex.padEnd(10) + " TPID=0x" + tpid.toString(16).padStart(4, "0") +
" (" + kind + ") PCP=" + pcp + " DEI=" + dei + " VID=" + vid + " -> " + note);
}
function encode(pcp, dei, vid, tpid = 0x8100) {
if (pcp > 7 || dei > 1 || vid < 1 || vid > 4094) return "out of range";
const tci = (pcp << 13) | (dei << 12) | vid;
const hex = ((tpid << 16) | tci) >>> 0;
return hex.toString(16).padStart(8, "0").toUpperCase().replace(/(..)(?=.)/g, "$1 ");
}
console.log("--- decode ---");
["8100000A", "81000014", "8100A00A", "8100B063", "81000FFF", "88A80064"].forEach(decode);
console.log("--- encode ---");
console.log("PCP=0 DEI=0 VID=10 ->", encode(0, 0, 10));
console.log("PCP=5 DEI=0 VID=150 ->", encode(5, 0, 150));
console.log("PCP=0 DEI=0 VID=4094 ->", encode(0, 0, 4094));
console.log("PCP=0 DEI=0 VID=4095 ->", encode(0, 0, 4095));আউটপুট:
--- decode ---
8100000A TPID=0x8100 (802.1Q C-tag) PCP=0 DEI=0 VID=10 -> VLAN 10
81000014 TPID=0x8100 (802.1Q C-tag) PCP=0 DEI=0 VID=20 -> VLAN 20
8100A00A TPID=0x8100 (802.1Q C-tag) PCP=5 DEI=0 VID=10 -> VLAN 10
8100B063 TPID=0x8100 (802.1Q C-tag) PCP=5 DEI=1 VID=99 -> VLAN 99
81000FFF TPID=0x8100 (802.1Q C-tag) PCP=0 DEI=0 VID=4095 -> reserved VID - invalid
88A80064 TPID=0x88a8 (802.1ad S-tag) PCP=0 DEI=0 VID=100 -> VLAN 100
--- encode ---
PCP=0 DEI=0 VID=10 -> 81 00 00 0A
PCP=5 DEI=0 VID=150 -> 81 00 A0 96
PCP=0 DEI=0 VID=4094 -> 81 00 0F FE
PCP=0 DEI=0 VID=4095 -> out of range
Decode: প্রথম ১৬ bit (v >>> 16) হলো TPID, শেষ ১৬ bit TCI. TCI-র ওপরের ৩ bit (tci >>> 13) PCP, তার পরের ১ bit DEI, আর নিচের ১২ bit (tci & 0x0fff) VID. যেমন A00A = বাইনারি 101 0 000000001010 → PCP ৫, DEI ০, VID ১০ — হিসাব বিভাগের একটি উচ্চ-অগ্রাধিকারের frame. B063-এ DEI = ১, VID = ৯৯. 0FFF-এ VID ৪০৯৫ — সংরক্ষিত, তাই অবৈধ। আর 88A8 TPID মানে এটি সাধারণ tag নয়, Q-in-Q-এর বাইরের tag (অংশ ৮)।
Encode: উল্টো পথে (pcp << 13) | (dei << 12) | vid. PCP ৫, VID ১৫০ → ৫ × ৮,১৯২ + ১৫০ = ৪১,১১০ = 0xA096. VID ৪০৯৪ পর্যন্ত চলে (0F FE), ৪০৯৫ দিলে ফাংশন “out of range” বলে। নিজে চেষ্টা করুন: decode("8100601E") যোগ করে আগে খাতায় হিসাব করুন, তারপর চালিয়ে মেলান।
৪ · Frame-এর যাত্রা — কোথায় tag লাগে, কোথায় খোলে
এবার পুরো ছবি একসাথে দেখি। প্রথমে একটি broadcast: হিসাব বিভাগের PC-A একটি ARP request পাঠাল (“192.168.10.14 কার? তার MAC কী?”)। কে কে শুনবে?
- PC-A
VLAN 10SW1 port 1 - SW1
flood: VLAN 10port 3, port 24 - Trunk
VID=10tag বসল - SW2
flood: VLAN 10port 1 - ফল
PC-C, PC-Dশুধু VLAN 10
| PC-C (SW1, VLAN 10) | |
| PC-B (SW1, VLAN 20) | |
| Guest-1 (SW1, VLAN 30) | |
| Trunk (port 24) | |
| PC-D (SW2, VLAN 10) | |
| PC-E (SW2, VLAN 20) | |
| Guest-2 (SW2, VLAN 30) |
- PC-A broadcast পাঠাল। গন্তব্য
ff:ff:ff:ff:ff:ff, EtherType0x0806(ARP), কোনো tag নেই। PC-A জানেই না সে VLAN 10-এ। Frame ঢুকল SW1-এর port 1-এ, যা access port, VLAN 10. - SW1 flood করার port বাছল। Broadcast তাই flood — কিন্তু শুধু VLAN 10-এর port-এ, যে port দিয়ে এসেছে সেটি বাদে: port 3 (PC-C) আর port 24 (trunk, যেখানে VLAN 10 অনুমোদিত)। PC-B-র port VLAN 20-এর, Guest-1-এর port VLAN 30-এর — তারা বাদ।
- PC-C-তে tag ছাড়া, trunk-এ tag-সহ। PC-C-র access port-এ frame যায় যেমন এসেছিল, tag ছাড়া। Trunk-এ যাওয়ার আগে SW1 উৎস MAC-এর পরে বসাল
81 00 00 0A(TPID 0x8100, PCP 0, VID 10) আর FCS নতুন করে হিসাব করল। Frame ৪ byte বড় হলো। - SW2 tag পড়ল। Trunk থেকে আসা frame-এ VID = 10, তাই SW2 এটিকে VLAN 10-এর frame ধরে VLAN 10-এর port-এ flood করল: শুধু port 1 (PC-D). পাঠানোর আগে tag খুলে আবার FCS হিসাব। PC-E (VLAN 20) আর Guest-2 (VLAN 30) বাদ।
- ফল: broadcast domain = VLAN 10. দুই switch মিলিয়ে সাতটি যন্ত্রের মধ্যে broadcast পেয়েছে মাত্র দুটি — PC-C আর PC-D. দুটি switch ভৌতভাবে যুক্ত, অথচ VLAN 10 নিজের মধ্যে একটি আলাদা LAN-এর মতো আচরণ করছে। এটাই VLAN-এর মূল প্রতিশ্রুতি।
এবার একই অফিসে একটি সাধারণ (unicast) frame-কে byte ধরে অনুসরণ করি — PC-A থেকে PC-D-তে ১,৫০০ byte payload-এর একটি frame. MAC ঠিকানা ছোট রাখতে ধরে নিচ্ছি PC-A = 02:..:0a, PC-D = 02:..:0d, আর দুই switch আগেই এই MAC-গুলো শিখে রেখেছে (পর্ব ১২)।
| কোথায় | |
| Dst │ Src MAC | |
| 802.1Q tag | |
| EtherType | |
| FCS | |
| আকার |
- Access link-এ: tag নেই। PC-A-র network card সাধারণ Ethernet frame বানাল: ৬ + ৬ + ২ + ১,৫০০ + ৪ = ১,৫১৮ byte. শেষে নিজের হিসাব করা FCS — এখানে নাম দিলাম FCS-1.
- SW1-এর ভেতরে: VLAN মনে রাখা। SW1 FCS-1 মিলিয়ে দেখল frame অক্ষত। Port 1 VLAN 10-এর, তাই (VLAN 10,
02:..:0d) খুঁজল MAC table-এ → port 24. Frame-এর গায়ে এখনো কিছু লেখা হয়নি; VLAN-এর তথ্য আছে শুধু switch-এর ভেতরের হিসাবে। - Trunk-এ: tag বসল। Port 24 trunk, আর VLAN 10 সেখানে tagged. SW1 উৎস MAC-এর পরে
81 00 00 0Aবসাল; ভেতরের EtherType 0800 চার byte সরে গেল। Frame বদলেছে, তাই FCS নতুন করে হিসাব — FCS-2. আকার ১,৫২২ byte, যা পুরোনো “১,৫১৮-এর বেশি মানেই ভুল” নিয়মের switch ফেলে দিত। - SW2-এর ভেতরে: tag পড়া। SW2 FCS-2 মিলিয়ে দেখল, TPID 0x8100 দেখে বুঝল tag আছে, VID = 10 পড়ল। (VLAN 10,
02:..:0d) → port 1, যা VLAN 10-এর access port. তাই tag খুলতে হবে। - Access link-এ: আবার tag ছাড়া। SW2 tag সরাল, FCS আবার হিসাব করল। মজার ব্যাপার: frame-এর byte-গুলো হুবহু PC-A-র পাঠানো frame-এর মতো, তাই নতুন FCS-ও ঠিক FCS-1-এর সমান। PC-D পেল একটি সাধারণ ১,৫১৮ byte-এর frame — VLAN বলে কিছু আছে, সে টেরই পেল না।
- Native VLAN হলে কী হতো? প্রতিটি trunk-এ একটি VLAN থাকে যার frame tag ছাড়া যায় — তার নাম native VLAN. VLAN 10 native হলে trunk-এও tag বসত না, frame ১,৫১৮ byte-ই থাকত, আর SW2 tag-হীন frame পেয়ে নিজের native VLAN ধরে নিত। দুই প্রান্তের native VLAN না মিললে frame চুপচাপ ভুল VLAN-এ চলে যায় — তাই দুই প্রান্তে একই হওয়া জরুরি।
Native VLAN — tag ছাড়া frame কোথায় যায়
Trunk-এ tag-হীন frame আসতেই পারে — পুরোনো hub, tag না বোঝা কোনো যন্ত্র, বা switch-এর নিজস্ব কিছু নিয়ন্ত্রণ-বার্তা। 802.1Q-এর নিয়ম: trunk port-এ tag ছাড়া আসা frame যাবে সেই port-এর native VLAN-এ (মানের ভাষায় PVID). অনেক switch-এ ডিফল্ট native VLAN হলো VLAN 1. অংশ ৭-এ দেখবেন, এই সুবিধাটিই একটি আক্রমণের দরজা খুলতে পারে, তাই নিরাপদ নকশায় native VLAN-কে একটি অব্যবহৃত VLAN (যেমন 999) বানানো হয়, যেখানে কোনো যন্ত্র নেই।
interface GigabitEthernet0/24
description Uplink to SW2
switchport trunk encapsulation dot1q ! কিছু পুরোনো মডেলে লাগে, নতুনে এই লাইন নেই
switchport mode trunk
switchport nonegotiate ! DTP বন্ধ
switchport trunk native vlan 999 ! অব্যবহৃত VLAN, দুই প্রান্তে একই
switchport trunk allowed vlan 10,20,99 ! শুধু দরকারি VLAN (30 নেই)
!
SW1# show interfaces trunk
Port Mode Encapsulation Status Native vlan
Gi0/24 on 802.1q trunking 999
Port Vlans allowed on trunk
Gi0/24 10,20,99নিচের simulator দুই switch-এর এই নকশাটি চালায়: কোন port কোন VLAN-এর, trunk-এ কোন VLAN অনুমোদিত, native কোনটি। তারপর তিনজনের broadcast-এর পথ ছাপে — কোথায় tag বসল, কোথায় খুলল, কে পেল।
// Two switches joined by a trunk (port 24). Access ports carry one VLAN, untagged.
const sw = {
SW1: { 1: ["PC-A", 10], 2: ["PC-B", 20], 3: ["PC-C", 10], 4: ["Guest-1", 30] },
SW2: { 1: ["PC-D", 10], 2: ["PC-E", 20], 3: ["Guest-2", 30] },
};
const trunk = { allowed: [10, 20, 99], native: 999 }; // VLAN 30 is pruned
function broadcast(from) {
const [s0, p0] = Object.entries(sw).flatMap(([s, ports]) =>
Object.keys(ports).filter(p => ports[p][0] === from).map(p => [s, p]))[0];
const vlan = sw[s0][p0][1], got = [];
console.log(`\n${from} sends a broadcast; ${s0} port ${p0} is access VLAN ${vlan}`);
console.log(` ${s0}: frame arrives untagged -> switch marks it VLAN ${vlan}`);
const flood = (s, inPort, act) => {
for (const [p, [host, v]] of Object.entries(sw[s]))
if (p !== inPort && v === vlan) { got.push(host);
console.log(` ${s} port ${p} (access ${v}): ${act} -> ${host} receives`); }
};
flood(s0, p0, "sent untagged");
const s1 = s0 === "SW1" ? "SW2" : "SW1";
if (!trunk.allowed.includes(vlan)) {
console.log(` ${s0} port 24 (trunk): VLAN ${vlan} not allowed -> not sent`);
} else {
const how = vlan === trunk.native ? "sent UNTAGGED (native)" : `tag VID=${vlan} inserted (+4 bytes)`;
console.log(` ${s0} port 24 (trunk): ${how}`);
console.log(` ${s1} port 24 (trunk): reads VID=${vlan}, floods inside VLAN ${vlan}`);
flood(s1, "24", "tag removed");
}
console.log(` received by: ${got.join(", ") || "nobody"}`);
}
["PC-A", "PC-E", "Guest-1"].forEach(broadcast);আউটপুট:
PC-A sends a broadcast; SW1 port 1 is access VLAN 10
SW1: frame arrives untagged -> switch marks it VLAN 10
SW1 port 3 (access 10): sent untagged -> PC-C receives
SW1 port 24 (trunk): tag VID=10 inserted (+4 bytes)
SW2 port 24 (trunk): reads VID=10, floods inside VLAN 10
SW2 port 1 (access 10): tag removed -> PC-D receives
received by: PC-C, PC-D
PC-E sends a broadcast; SW2 port 2 is access VLAN 20
SW2: frame arrives untagged -> switch marks it VLAN 20
SW2 port 24 (trunk): tag VID=20 inserted (+4 bytes)
SW1 port 24 (trunk): reads VID=20, floods inside VLAN 20
SW1 port 2 (access 20): tag removed -> PC-B receives
received by: PC-B
Guest-1 sends a broadcast; SW1 port 4 is access VLAN 30
SW1: frame arrives untagged -> switch marks it VLAN 30
SW1 port 24 (trunk): VLAN 30 not allowed -> not sent
received by: nobody
PC-A (VLAN 10): SW1-এর ভেতরে PC-C পায় tag ছাড়া; trunk-এ ৪ byte-এর tag বসে; SW2 tag খুলে PC-D-কে দেয়। ঠিক প্রথম stepper-এর ফল — PC-C আর PC-D. PC-E (VLAN 20): উল্টো দিক থেকে একই নিয়ম, শুধু PC-B পায়। Guest-1 (VLAN 30): trunk-এর allowed তালিকায় ৩০ নেই, আর SW1-এ VLAN 30-এর অন্য কোনো port-ও নেই — broadcast কারও কাছেই যায়নি। অতিথি VLAN-কে trunk থেকে ছেঁটে ফেলা (pruning) এখানে দুটি কাজ করল: অপ্রয়োজনীয় broadcast trunk-এ ওঠেনি, আর SW2-এর Guest-2-এর সাথে Guest-1-এর layer-2 যোগাযোগই নেই।
খেয়াল করুন, native VLAN ৯৯৯ কোনো access port-এ নেই, তাই কোনো frame কখনো “UNTAGGED (native)” শাখায় যায়নি। trunk.native বদলে ১০ করে চালালে PC-A-র broadcast trunk-এ tag ছাড়া যাবে — চেষ্টা করে দেখুন।
৫ · VLAN থেকে VLAN-এ — inter-VLAN routing
VLAN আলাদা করল চমৎকারভাবে — এত ভালোভাবে যে HR-এর PC-B এখন হিসাব বিভাগের ফাইল সার্ভারে যেতেই পারে না! কিন্তু কিছু যোগাযোগ তো দরকার: সবাই প্রিন্টার আর ইন্টারনেটে যাবে, HR বেতনের তথ্য পাঠাবে হিসাবে। আলাদা VLAN মানে আলাদা layer-2 নেটওয়ার্ক, তাই এদের মাঝে frame সরাসরি যেতে পারে না — যেতে হবে network layer (layer 3) দিয়ে, router-এর মাধ্যমে। একে বলে inter-VLAN routing.
Network layer-এর এক ঝলক (বিস্তারিত পর্ব ১৫–১৭-এ)
প্রতিটি VLAN-কে একটি আলাদা IP subnet দেওয়া হয় — মহল্লার মতো: “192.168.10.x” মহল্লা হিসাব বিভাগের, “192.168.20.x” HR-এর। /24 মানে ঠিকানার প্রথম ২৪ bit (প্রথম তিনটি সংখ্যা) মহল্লার নাম, শেষ সংখ্যাটি বাড়ির নম্বর। প্রতিটি কম্পিউটার জানে নিজের IP ঠিকানা, নিজের মহল্লা, আর মহল্লার বাইরে যেতে হলে কার কাছে চিঠি দিতে হবে — সেই মোড়ের ডাকঘরই default gateway, সাধারণত router-এর একটি ঠিকানা। গন্তব্য নিজের মহল্লায় হলে কম্পিউটার সরাসরি পাঠায় (ARP দিয়ে MAC জেনে); বাইরে হলে frame পাঠায় gateway-র MAC-এ, আর router ঠিক করে পরের পথ। এই হিসাব (কোন ঠিকানা কোন subnet-এ) পর্ব ১৬–১৭-এ, router কীভাবে পথ বাছে তা পর্ব ১৫ আর ২২-এ বিস্তারিত দেখবেন।
উপায় ১ — Router-on-a-stick
ছোট অফিসে একটি router আর একটি switch থাকলে সবচেয়ে সস্তা পথ: router-এর একটিমাত্র physical port-কে switch-এর একটি trunk port-এ যুক্ত করা। Router সেই একটি port-কে কয়েকটি যৌক্তিক ভাগে ভাগ করে — প্রতিটি VLAN-এর জন্য একটি subinterface, প্রতিটির নিজস্ব VLAN tag আর নিজস্ব gateway ঠিকানা। ছবিতে router যেন একটি লাঠির মাথায় বসে আছে — তাই নাম router-on-a-stick.
interface GigabitEthernet0/0
no shutdown ! মূল port, নিজে কোনো IP নেই
!
interface GigabitEthernet0/0.10
encapsulation dot1Q 10 ! VID 10-এর frame এখানে
ip address 192.168.10.1 255.255.255.0 ! VLAN 10-এর gateway
!
interface GigabitEthernet0/0.20
encapsulation dot1Q 20
ip address 192.168.20.1 255.255.255.0 ! VLAN 20-এর gatewayএবার দেখি, হিসাব বিভাগের PC-A (VLAN 10, 192.168.10.11) কীভাবে HR-এর PC-B-কে (VLAN 20, 192.168.20.12) একটি packet পাঠায়। দুজনেই SW1-এ, আর router R1 যুক্ত SW1-এর একটি trunk port-এ।
- PC-A
192.168.10.11VLAN 10 - SW1
trunk → R1VID 10 - R1
Gi0/0.10 → .20route - SW1
VID 20 → port 2tag খোলা - PC-B
192.168.20.12VLAN 20
| কোথায় | |
| Dst │ Src MAC | |
| VLAN tag | |
| Src → Dst IP | |
| TTL |
- PC-A সিদ্ধান্ত নিল: গন্তব্য অন্য মহল্লায়। নিজের subnet 192.168.10.0/24; 192.168.20.12 তার বাইরে। তাই packet যাবে gateway 192.168.10.1-এর কাছে। ARP দিয়ে (পর্ব ১৮) PC-A জেনে নিল gateway-র MAC — এটি R1-এর MAC. (টেবিলে IP-র প্রথম দুই অংশ 192.168 বাদ রাখা হয়েছে।)
- PC-A → SW1: tag ছাড়া frame. গন্তব্য MAC = R1, উৎস = PC-A, ভেতরে IP packet: 192.168.10.11 → 192.168.20.12, TTL 64. লক্ষ করুন: MAC-এ লেখা “R1-এর কাছে”, কিন্তু IP-তে লেখা “আসল গন্তব্য PC-B” — খামের ওপর ডাকঘরের ঠিকানা, ভেতরের চিঠিতে প্রাপকের।
- SW1 → R1: trunk-এ VID 10. SW1-এর MAC table-এ (VLAN 10, R1-এর MAC) → trunk port. Tag 10 বসিয়ে পাঠাল। R1-এর Gi0/0 tag দেখে frame-টি দিল subinterface Gi0/0.10-কে — যার ঠিকানা 192.168.10.1.
- R1 route করল। R1 frame খুলে IP packet বের করল। গন্তব্য 192.168.20.12 পড়ে routing table-এ দেখল: 192.168.20.0/24 সরাসরি যুক্ত Gi0/0.20-এ। TTL এক কমিয়ে 63 (প্রতিটি router এটা করে)। ARP থেকে PC-B-র MAC জেনে নতুন frame বানাল: গন্তব্য PC-B, উৎস R1.
- R1 → SW1: একই তারে, এবার VID 20. Subinterface .20 frame-এ tag 20 বসিয়ে একই physical তারে ফেরত পাঠাল। একটি packet একই তার দুবার পার হলো — একবার যেতে, একবার ফিরতে। এই “চুলের কাঁটার মতো ঘুরে আসা” (hairpin)-ই router-on-a-stick-এর সবচেয়ে বড় সীমা।
- SW1 → PC-B: tag খুলে। (VLAN 20, PC-B-র MAC) → port 2, access port. Tag খুলে পাঠাল। PC-B পেল একটি সাধারণ frame, যার উৎস MAC R1-এর (PC-A-র নয়!), কিন্তু ভেতরের IP-তে উৎস এখনো 192.168.10.11. MAC বদলায় প্রতি hop-এ, IP থাকে শুরু থেকে শেষ পর্যন্ত একই।
উপায় ২ — Layer-3 switch আর SVI
অফিস বড় হলে router-on-a-stick-এর একটি তার bottleneck হয়ে যায়: VLAN থেকে VLAN-এর সব traffic সেই তার দিয়ে দুবার যায়, আর router-এর CPU-ও সব packet দেখে। সমাধান layer-3 switch — একটি switch, যার ভেতরেই routing-এর ক্ষমতা আছে। প্রতিটি VLAN-এর জন্য switch-এর ভেতরে একটি যৌক্তিক interface বানানো হয়, যার নাম SVI (Switched Virtual Interface). SVI-ই সেই VLAN-এর gateway. Routing হয় switch-এর বিশেষ chip-এ (ASIC), সাধারণত port-এর পূর্ণ গতিতে, কোনো বাইরের তার ছাড়াই।
ip routing ! switch-এ routing চালু
!
interface Vlan10
ip address 192.168.10.1 255.255.255.0 ! VLAN 10-এর gateway (SVI)
!
interface Vlan20
ip address 192.168.20.1 255.255.255.0| বিষয় | Router-on-a-stick | Layer-3 switch (SVI) |
|---|---|---|
| যন্ত্র | সাধারণ router + সাধারণ managed switch | একটি layer-3 switch |
| Gateway কোথায় | Router-এর subinterface | Switch-এর SVI |
| গতি | একটি তারের ক্ষমতা ভাগ হয়, traffic দুবার যায় | সাধারণত port-এর পূর্ণ গতি (hardware-এ) |
| খরচ ও জটিলতা | কম — ছোট অফিস, ল্যাব | বেশি — মাঝারি ও বড় ক্যাম্পাস |
| Firewall নীতি | Router-এই ACL/firewall বসানো সহজ | Switch-এর ACL সীমিত; সংবেদনশীল VLAN প্রায়ই আলাদা firewall-এর পেছনে |
সাবধান: Inter-VLAN routing চালু করলেই কোনো নিয়ম না থাকলে সব VLAN সব VLAN-এর সাথে কথা বলতে পারে। তখন VLAN broadcast আলাদা রাখে, কিন্তু নিরাপত্তার দেয়াল আর থাকে না। “অতিথি শুধু ইন্টারনেটে যাবে, ভেতরের কোনো subnet-এ নয়” — এমন নিয়ম router বা firewall-এ আলাদা করে লিখতে হয় (পর্ব ৪৯)।
Linux আর Windows-এ VLAN
VLAN শুধু switch-এর বিষয় নয়। একটি Linux সার্ভার একটি network card দিয়েই কয়েকটি VLAN-এ থাকতে পারে — card-টি switch-এর trunk port-এ যুক্ত থাকলে। Kernel-এর 8021q module প্রতিটি VLAN-এর জন্য একটি আলাদা virtual interface বানায়, যা tag বসায় আর খোলে। নিচের কমান্ডগুলো root অধিকার চায় আর আসল trunk ছাড়া কিছু দেখাবে না, তাই এখানে চালানো যায় না — একটি সাধারণ Linux মেশিনের উদাহরণ:
$ sudo ip link add link eth0 name eth0.10 type vlan id 10
$ sudo ip addr add 192.168.10.50/24 dev eth0.10
$ sudo ip link set eth0.10 up
$ ip -d link show eth0.10
5: eth0.10@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP ...
link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff promiscuity 0 ...
vlan protocol 802.1Q id 10 <REORDER_HDR> ...
$ sudo ip link del eth0.10 # মুছে ফেলাPS> Set-NetAdapter -Name "Ethernet" -VlanID 10 # card-এর driver সমর্থন করলে তবেই
PS> Get-NetAdapter -Name "Ethernet" | Format-List Name, VlanIDএখানে পার্থক্যটি লক্ষ করুন: Linux-এ এক card-এ অনেক VLAN interface একসাথে বানানো যায় (eth0.10, eth0.20…), আর পুরোনো vconfig কমান্ডের বদলে এখন ip link ব্যবহার হয়। Windows-এ VLAN সমর্থন অনেকটাই network card-এর driver-এর ওপর নির্ভর করে; অনেক সাধারণ ল্যাপটপের card-এ এই সেটিংই থাকে না। macOS-এ System Settings-এর Network অংশে “Manage Virtual Interfaces” থেকে VLAN যোগ করা যায়।
৬ · ভালো VLAN নকশা — অভিজ্ঞদের অভ্যাস
VLAN বানানো সহজ; ভালো VLAN নকশা অভিজ্ঞতার বিষয়। আমাদের মতিঝিলের অফিসের জন্য একটি পরিচ্ছন্ন পরিকল্পনা এরকম হতে পারে (subnet-গুলো private ঠিকানা থেকে, পর্ব ১৯):
| VLAN | নাম | Subnet | Gateway | মন্তব্য |
|---|---|---|---|---|
| 10 | ACCOUNTS | 192.168.10.0/24 | .1 | শুধু হিসাবের সার্ভার আর প্রিন্টারে যাওয়া যায় |
| 20 | HR | 192.168.20.0/24 | .1 | ব্যক্তিগত তথ্য, কড়া নিয়ম |
| 30 | GUEST | 192.168.30.0/24 | .1 | শুধু ইন্টারনেট; ভেতরের সব subnet নিষেধ |
| 99 | MGMT | 192.168.99.0/24 | .1 | switch, access point আর router-এর নিজের ঠিকানা |
| 150 | VOICE | 192.168.150.0/24 | .1 | IP ফোন, PCP 5 |
| 999 | NATIVE-UNUSED | — | — | trunk-এর native VLAN; কোনো যন্ত্র নেই, IP নেই |
- আলাদা management VLAN: switch আর access point-এর নিজেদের কনফিগারেশন-পাতা (SSH, ওয়েব) শুধু VLAN 99 থেকে খোলা যাবে। অতিথি বা সাধারণ কর্মীর VLAN থেকে switch-এর login পাতা দেখাই উচিত নয়।
- অতিথিকে আলাদা রাখা: অতিথি VLAN-কে firewall নিয়মে শুধু ইন্টারনেটে যেতে দিন। Wi-Fi-তে “client isolation” চালু করলে একই অতিথি VLAN-এর দুটি ফোনও একে অপরকে দেখে না।
- VLAN 1-এ ব্যবহারকারী নয়: বহু switch-এ VLAN 1 ডিফল্ট — নতুন port, native VLAN আর কিছু নিয়ন্ত্রণ-protocol সবই সেখানে। ভুলে কনফিগার না করা port-ও VLAN 1-এ থাকে। তাই ব্যবহারকারীর traffic অন্য VLAN-এ রাখা, আর অব্যবহৃত port বন্ধ করে একটি “পার্কিং” VLAN-এ রাখা নিরাপদ অভ্যাস।
- Trunk ছাঁটাই (pruning):
switchport trunk allowed vlanদিয়ে শুধু দরকারি VLAN পার হতে দিন। যে switch-এ VLAN 30-এর কোনো port নেই, সেখানে VLAN 30-এর broadcast পাঠানো অপচয়, আর ঝুঁকিও। - নামকরণ আর নথি: VLAN নম্বর আর subnet-এর তৃতীয় সংখ্যা মিলিয়ে রাখুন (VLAN 20 ↔ 192.168.20.0/24) — রাত দুটোয় সমস্যা খুঁজতে গেলে এই সামঞ্জস্য অনেক সময় বাঁচায়।
Voice VLAN — এক তারে PC আর IP ফোন
অনেক অফিসে ডেস্কে একটি IP ফোন, আর ফোনের পেছনের port-এ PC যুক্ত — দেয়ালের একটি তার দিয়েই দুটি যন্ত্র চলে। ফোনের ভেতরে ছোট একটি switch থাকে। এখানে switch port-টি একসাথে দুটি VLAN বহন করে: PC-র data যায় tag ছাড়া, access VLAN-এ (যেমন 10); ফোন নিজের কথার frame-এ tag বসায় voice VLAN-এর (যেমন 150), PCP 5 দিয়ে, যাতে ভিড়ে কথা আগে যায়। ফোন কোন VLAN ব্যবহার করবে তা সাধারণত switch-এর কাছ থেকে LLDP-MED বা Cisco-র CDP বার্তায় শিখে নেয়।
interface GigabitEthernet0/7
switchport mode access
switchport access vlan 10 ! PC-র data, tag ছাড়া
switchport voice vlan 150 ! ফোনের কথা, tag 150৭ · VLAN hopping — ঝুঁকি বোঝা আর দরজা বন্ধ করা
VLAN-এর নিরাপত্তা নির্ভর করে একটি অনুমানের ওপর: একটি access port-এর যন্ত্র শুধু নিজের VLAN-এই frame পাঠাতে পারে। VLAN hopping হলো সেই অনুমান ভাঙার কৌশলগুলোর নাম — কোনো আক্রমণকারী নিজের VLAN থেকে অন্য VLAN-এ frame পাঠিয়ে ফেলে। এখানে আমরা শুধু ধারণাটি আর প্রতিরক্ষা দেখব, যাতে নিজের নেটওয়ার্ক ঠিকভাবে কনফিগার করতে পারেন; অন্যের নেটওয়ার্কে এমন কিছু পরীক্ষা করা বেআইনি ও অনৈতিক।
ঝুঁকি ১ — Switch spoofing
Cisco-র অনেক switch-এ DTP (Dynamic Trunking Protocol) নামে একটি সুবিধা থাকে: দুই প্রান্ত নিজেরা আলোচনা করে ঠিক করে port-টি trunk হবে কি না। মডেলভেদে ডিফল্ট আলাদা, কিন্তু কোনো port যদি “অন্য প্রান্ত চাইলে trunk হব” অবস্থায় থাকে, তাহলে সেই port-এ যুক্ত একটি কম্পিউটার নিজেকে switch হিসেবে পরিচয় দিয়ে trunk চালু করিয়ে নিতে পারে। তখন সে সব অনুমোদিত VLAN-এর frame পায় আর পাঠাতে পারে। একে বলে switch spoofing.
ঝুঁকি ২ — Double tagging
এটি native VLAN-এর নিয়মের সুযোগ নেয়। ধরুন trunk-এর native VLAN 1, আর আক্রমণকারীর access port-ও VLAN 1-এ। সে এমন একটি frame বানায়, যাতে দুটি tag: বাইরেরটি VLAN 1, ভেতরেরটি লক্ষ্য VLAN 20. প্রথম switch বাইরের tag দেখে frame-টিকে VLAN 1-এর ধরে; trunk-এ পাঠানোর সময় VLAN 1 native বলে tag ছাড়া পাঠাতে গিয়ে শুধু বাইরের tag সরায়। ভেতরের tag (20) থেকে যায়। পরের switch সেই tag পড়ে frame-টিকে VLAN 20-এ পৌঁছে দেয়। এটি একমুখী — উত্তর ফেরার পথ নেই — আর তখনই সম্ভব যখন আক্রমণকারী native VLAN-এ আছে। কিন্তু একমুখী একটি ক্ষতিকর packet-ও অনেক সময় যথেষ্ট। একে বলে double tagging.
| ঝুঁকি | মূল কারণ | প্রতিরক্ষা |
|---|---|---|
| Switch spoofing | Port নিজে থেকে trunk হতে রাজি (auto-trunking) | ব্যবহারকারীর সব port-এ switchport mode access; DTP বন্ধ (switchport nonegotiate); trunk শুধু যেখানে দরকার, হাতে চালু |
| Double tagging | আক্রমণকারী native VLAN-এ, আর native VLAN-এর frame trunk-এ tag ছাড়া যায় | Native VLAN একটি অব্যবহৃত নম্বর (যেমন 999), কোনো access port-এ নয়; সম্ভব হলে native VLAN-কেও tag করা (Cisco-তে vlan dot1q tag native) |
| ভুলে খোলা port | অব্যবহৃত port VLAN 1-এ, চালু | অব্যবহৃত port shutdown, একটি পার্কিং VLAN-এ; port security বা 802.1X দিয়ে কে যুক্ত হচ্ছে যাচাই |
| Trunk-এ সব VLAN | ডিফল্টে trunk সব VLAN বহন করে | switchport trunk allowed vlan দিয়ে ছাঁটাই |
vlan dot1q tag native ! native VLAN-এর frame-ও tag-সহ (প্ল্যাটফর্ম সমর্থন করলে)
!
interface range GigabitEthernet0/1 - 20
switchport mode access
switchport nonegotiate
!
interface range GigabitEthernet0/21 - 23 ! অব্যবহৃত port
switchport access vlan 998 ! পার্কিং VLAN, কোথাও route হয় না
shutdownঅন্য vendor-এ DTP-র মতো আলোচনা প্রায়ই থাকেই না — port হাতে trunk না বানালে trunk হয় না। কিন্তু native VLAN, VLAN 1 আর অব্যবহৃত port-এর নিয়ম সবার জন্য একই। মূল নীতি একটিই: ডিফল্ট সেটিংকে বিশ্বাস না করে প্রতিটি port-কে জেনে-বুঝে একটি ভূমিকা দেওয়া।
৮ · ৪,০৯৪-এর সীমা পেরিয়ে — Q-in-Q আর VXLAN
একটি অফিসে ৪,০৯৪টি VLAN কখনো লাগে না। কিন্তু দুই ধরনের প্রতিষ্ঠানের কাছে এই সংখ্যা ছোট: (১) যে সেবাদাতা অনেক গ্রাহক-প্রতিষ্ঠানকে একই নেটওয়ার্ক দিয়ে যুক্ত করে, আর প্রতিটি গ্রাহক নিজের VLAN নম্বর নিজে বাছতে চায়; (২) বড় data center আর cloud, যেখানে হাজার হাজার গ্রাহকের প্রত্যেকের কয়েকটি করে আলাদা নেটওয়ার্ক লাগে।
Q-in-Q (802.1ad) — tag-এর ওপর tag
সেবাদাতা গ্রাহকের tag-সহ frame-এর বাইরে নিজের আরেকটি tag বসায়। বাইরেরটির নাম S-tag (service), TPID 0x88A8; ভেতরেরটি গ্রাহকের C-tag (customer), 0x8100. IEEE ২০০৫ সালে একে 802.1ad হিসেবে মান করে, লোকমুখে নাম Q-in-Q. দুটি ১২ bit-এর ঘর মিলে তাত্ত্বিকভাবে ৪,০৯৪ × ৪,০৯৪ = ১,৬৭,৬০,৮৩৬টি জোড়া, খরচ প্রতি frame-এ ৮ byte. গ্রাহক A আর গ্রাহক B দুজনেই VLAN 10 ব্যবহার করলেও সমস্যা নেই — বাইরের tag আলাদা।
VXLAN — layer-2 নেটওয়ার্ক layer-3-এর ওপর
Data center-এর সমস্যা শুধু সংখ্যা নয়। একটি virtual machine এক rack থেকে আরেক rack-এ সরলেও তার IP ঠিকানা আর layer-2 নেটওয়ার্ক একই রাখতে হয়, অথচ বড় layer-2 নেটওয়ার্ক মানে বিশাল broadcast domain আর spanning tree-র বন্ধ রাখা link (পর্ব ১২)। VXLAN (Virtual eXtensible LAN, RFC 7348, ২০১৪) সমাধান করে পুরো Ethernet frame-কে একটি UDP packet-এর ভেতরে মুড়ে (UDP port 4789) সাধারণ IP নেটওয়ার্ক দিয়ে পাঠিয়ে। প্রতিটি আলাদা নেটওয়ার্কের পরিচয় একটি ২৪ bit-এর VNI (VXLAN Network Identifier): ২২৪ = ১,৬৭,৭৭,২১৬ — প্রায় ১.৬৮ কোটি segment, 802.1Q-এর ৪,০৯৬ গুণ। দাম: প্রতি frame-এ ৫০ byte বাড়তি header (বাইরের Ethernet ১৪ + IPv4 ২০ + UDP ৮ + VXLAN ৮), তাই নিচের নেটওয়ার্কের MTU বাড়াতে হয়। বিস্তারিত leaf-spine নকশাসহ পর্ব ৫২-এ, আর cloud-এর VPC-তে এর ব্যবহার পর্ব ৫৪-এ।
VXLAN-এ মোড়ানো frame (বাইরের IPv4, বাইরের tag ছাড়া) (bytes)
┌──────────┬───────┬──────┬────────┬─────────────────────────────────┬─────┐
│ Outer │ Outer │ UDP │ VXLAN │ ভেতরের Ethernet frame (FCS ছাড়া) │ FCS │
│ Ethernet │ IPv4 │ 4789 │ VNI 24b│ 14 + payload ≤ 1500 │ │
│ 14 │ 20 │ 8 │ 8 │ ≤ 1514 │ 4 │
└──────────┴───────┴──────┴────────┴─────────────────────────────────┴─────┘
নিচের calculator তিনটি পদ্ধতির ID-সংখ্যা আর খরচ তুলনা করে, কয়েকটি পরিস্থিতিতে কত bit লাগবে বের করে, আর VXLAN-এর জন্য নিচের নেটওয়ার্কের ন্যূনতম MTU হিসাব করে।
// How many separate segments does each ID field allow, and what does it cost?
const fmt = n => n.toLocaleString("en-US");
const rows = [
// name, ID bits, reserved values, extra bytes per frame
["802.1Q VLAN", 12, 2, 4],
["Q-in-Q (802.1ad)", 24, 0, 8],
["VXLAN VNI", 24, 0, 50],
];
console.log("scheme bits raw values usable IDs extra bytes");
for (const [name, bits, reserved, extra] of rows) {
let usable = 2 ** bits - reserved;
if (name.startsWith("Q-in-Q")) usable = 4094 * 4094; // two 12-bit tags, each 1..4094
console.log(name.padEnd(18) + String(bits).padStart(5) + fmt(2 ** bits).padStart(14) +
fmt(usable).padStart(15) + String(extra).padStart(13));
}
console.log("\nVXLAN / 802.1Q ratio: " + (2 ** 24 / 2 ** 12) + " times more IDs");
// Bits needed for N tenants x V VLANs each (plus 2 reserved values like 802.1Q)
for (const [tenants, perTenant] of [[1, 50], [100, 50], [2000, 300]]) {
const need = tenants * perTenant;
const bits = Math.ceil(Math.log2(need + 2));
console.log(`${fmt(tenants)} tenant(s) x ${perTenant} VLANs = ${fmt(need)} segments -> ` +
`needs ${bits} bits; 802.1Q ${need <= 4094 ? "OK" : "NOT enough"}, ` +
`VXLAN ${need <= 2 ** 24 ? "OK" : "NOT enough"}`);
}
// Underlay MTU: inner 1500-byte IP packet + inner Ethernet header 14 + VXLAN 8 + UDP 8 + IPv4 20
const outerIP = 1500 + 14 + 8 + 8 + 20;
console.log(`\nVXLAN outer IPv4 packet = ${outerIP} bytes -> underlay MTU must be >= ${outerIP}`);আউটপুট:
scheme bits raw values usable IDs extra bytes
802.1Q VLAN 12 4,096 4,094 4
Q-in-Q (802.1ad) 24 16,777,216 16,760,836 8
VXLAN VNI 24 16,777,216 16,777,216 50
VXLAN / 802.1Q ratio: 4096 times more IDs
1 tenant(s) x 50 VLANs = 50 segments -> needs 6 bits; 802.1Q OK, VXLAN OK
100 tenant(s) x 50 VLANs = 5,000 segments -> needs 13 bits; 802.1Q NOT enough, VXLAN OK
2,000 tenant(s) x 300 VLANs = 600,000 segments -> needs 20 bits; 802.1Q NOT enough, VXLAN OK
VXLAN outer IPv4 packet = 1550 bytes -> underlay MTU must be >= 1550
সারণি: ১২ bit-এ ৪,০৯৬টি মান, সংরক্ষিত দুটি বাদে ৪,০৯৪। Q-in-Q-তে দুটি ১২ bit-এর tag মিলে ২৪ bit-এর জায়গা, কিন্তু প্রতিটি tag-এ 0 আর 4095 বাদ বলে ব্যবহারযোগ্য ৪,০৯৪২ = ১,৬৭,৬০,৮৩৬। VXLAN-এর VNI-তে সরাসরি ২৪ bit — ১,৬৭,৭৭,২১৬; অনুপাত ২২৪ ÷ ২১২ = ২১২ = ৪,০৯৬ গুণ।
কত bit লাগবে: N-টি segment আর দুটি সংরক্ষিত মানের জন্য দরকার ⌈log2(N + 2)⌉ bit. ৫০টি VLAN-এ ৬ bit (২৬ = ৬৪ ≥ ৫২)। ১০০ গ্রাহকের প্রত্যেকে ৫০টি করে = ৫,০০০ segment — ২১২ = ৪,০৯৬-এর বেশি, তাই ১৩ bit লাগে, আর 802.1Q আর চলে না। ৬ লাখ segment-এ ২০ bit — VXLAN-এ এখনো অনেক জায়গা বাকি। MTU: ভেতরের ১,৫০০ byte-এর IP packet + ১৪ byte ভেতরের Ethernet header + ৮ VXLAN + ৮ UDP + ২০ বাইরের IPv4 = ১,৫৫০ byte. তাই underlay-এর MTU কমপক্ষে ১,৫৫০ (বাস্তবে প্রায়ই ১,৬০০ বা ৯,০০০-এর jumbo frame) রাখতে হয়; নইলে বড় packet ভেঙে যায় বা হারিয়ে যায়।
আরও গভীরে: বেশিরভাগ আধুনিক network card tag বসানো আর খোলার কাজ hardware-এ করে (Linux-এ ethtool -k eth0-এ rx-vlan-offload, tx-vlan-offload), তাই কোনো host-এ tcpdump চালালে tag সবসময় দেখা না-ও যেতে পারে — kernel tag-টি packet-এর আলাদা metadata-য় রাখে। Linux bridge-এ vlan_filtering চালু করলে সেটি নিজেই একটি VLAN-সচেতন switch হয়ে যায় (bridge vlan show), যা container আর virtual machine-এর নেটওয়ার্কে ব্যাপক ব্যবহৃত। আর বড় VXLAN নেটওয়ার্কে কোন MAC কোন VTEP-এর পেছনে, তা flood করে শেখার বদলে BGP EVPN (RFC 7432, VXLAN-এর জন্য RFC 8365) control plane দিয়ে বিতরণ করা হয়।
পরীক্ষা ও ইন্টারভিউতে এই বিষয়ে প্রায়ই যা জিজ্ঞেস করা হয়:
- Access port আর trunk port-এর পার্থক্য? — Access এক VLAN-এর, frame tag ছাড়া; trunk অনেক VLAN-এর, frame-এ 802.1Q tag (native VLAN বাদে)।
- 802.1Q tag কত byte, কোথায় বসে, ঘরগুলো কী? — ৪ byte, উৎস MAC-এর পরে; TPID ১৬ (0x8100), PCP ৩, DEI ১, VID ১২ bit.
- সর্বোচ্চ কতটি VLAN, কেন? — ২১২ = ৪,০৯৬ মান, 0 আর 4095 সংরক্ষিত, তাই ৪,০৯৪।
- দুই VLAN-এর যন্ত্র কীভাবে কথা বলে? — Layer 3 দিয়ে: router-on-a-stick-এর subinterface বা layer-3 switch-এর SVI, প্রতিটি VLAN-এর আলাদা subnet আর gateway.
- VLAN hopping কী, কীভাবে ঠেকাবেন? — Switch spoofing আর double tagging; DTP বন্ধ, access port-কে access-এ বেঁধে রাখা, অব্যবহৃত native VLAN আর native VLAN tag করা।
৯ · AI-এর যুগে VLAN নকশা আর কনফিগারেশন
“আমার অফিসের জন্য VLAN config লিখে দিন” — AI কয়েক সেকেন্ডে পঞ্চাশ লাইনের সুন্দর কনফিগারেশন দেবে। সমস্যা হলো, switch-এর কনফিগারেশনে একটি ভুল লাইন পুরো অফিসকে নেটওয়ার্কের বাইরে ফেলে দিতে পারে, বা চুপচাপ একটি নিরাপত্তা-ছিদ্র রেখে দিতে পারে — আর দূর থেকে কনফিগার করলে নিজেকেও switch থেকে বের করে দিতে পারেন। VLAN-এ AI-এর ভুলগুলো চেনা ধরনের:
| AI-এর ভুল | কেন ভুল | কীভাবে ধরবেন |
|---|---|---|
| Cisco-র কমান্ড দিয়ে “যেকোনো switch-এর” config | MikroTik, Juniper, HP/Aruba-র ভাষা আলাদা | নিজের switch-এর মডেল আর firmware উল্লেখ করুন, vendor-এর ডকুমেন্টেশনে মেলান |
switchport trunk allowed vlan 30 দিয়ে VLAN “যোগ” | এটি পুরো তালিকা বদলে দেয়, বাকি VLAN কেটে যায়; যোগ করতে add লাগে | প্রতিটি trunk কমান্ড প্রয়োগের আগে show interfaces trunk দেখুন |
| “৪,০৯৬টি VLAN” বা VID-এর জন্য ১৬ bit | VID ১২ bit, ব্যবহারযোগ্য ৪,০৯৪ | উপরের tag decoder দিয়ে হিসাব মেলান |
| Native VLAN 1 রেখে দেওয়া, DTP চালু রাখা | Double tagging আর switch spoofing-এর দরজা খোলা | অংশ ৭-এর টেবিল ধরে মিলিয়ে দেখুন |
| Inter-VLAN routing চালু, কিন্তু কোনো ACL নেই | অতিথি ভেতরের সার্ভারে পৌঁছে যায় | অতিথি VLAN থেকে ভেতরের ঠিকানায় ping করে দেখুন — যাওয়া উচিত নয় |
Linux-এ পুরোনো vconfig, ifconfig | আধুনিক পদ্ধতি ip link ... type vlan | man ip-link দেখুন |
| বানানো RFC বা IEEE নম্বর | ভাষার মডেল বিশ্বাসযোগ্য শোনানো নম্বর বানাতে পারে | VXLAN = RFC 7348; rfc-editor.org-এ খুলে শিরোনাম মেলান |
AI-কে VLAN-এর কাজ দিলে প্রেক্ষাপট, সীমা আর যাচাইয়ের শর্তসহ দিন:
AI-এর config চালানোর আগে — চেকলিস্ট
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন — তারপর “→ উত্তর” চাপুন।
প্র ০১802.1Q-এর নকশাকারীরা VLAN নম্বরের জন্য মাত্র ১২ bit রাখলেন কেন? এই ছোট সিদ্ধান্তের দাম পরে কীভাবে দিতে হলো?
নব্বইয়ের দশকের শেষে মূল লক্ষ্য ছিল ক্যাম্পাস আর অফিসের LAN. একটি বড় বিশ্ববিদ্যালয় বা কোম্পানিতেও কয়েকশো VLAN-ই অনেক; ৪,০৯৪ তখন প্রায় অসীম মনে হতো। কিন্তু আসল বাধা ছিল tag-এর আকার। Ethernet-এর সর্বোচ্চ frame ১,৫১৮ byte বহু বছর ধরে লক্ষ লক্ষ network card আর switch-এর hardware-এ গাঁথা ছিল। Tag যত বড়, তত বেশি পুরোনো যন্ত্র নতুন frame-কে “অতিরিক্ত বড়, ভুল” ভেবে ফেলে দেবে। ৪ byte-এর tag-এর জন্যই 802.3ac-কে সর্বোচ্চ আকার ১,৫২২ করতে হয়েছিল, আর বহু বছর ধরে ১,৫১৯–১,৫২২ byte-এর “baby giant” frame নিয়ে পুরোনো যন্ত্রে সমস্যা দেখা গেছে।
৪ byte = ৩২ bit-এর মধ্যে ১৬ bit গেল TPID-তে — এটি না থাকলে প্রাপক বুঝতই না যে tag আছে, কারণ tag বসে ঠিক সেখানে যেখানে আগে EtherType ছিল। বাকি ১৬ bit-এর ৩ bit অগ্রাধিকারে (802.1p-এর আটটি শ্রেণি, যা ভয়েস আর ভিডিওর জন্য জরুরি মনে হয়েছিল), আর ১ bit তখনকার Token Ring নেটওয়ার্কের সাথে সামঞ্জস্যের জন্য (CFI, পরে DEI নামে নতুন কাজ পায়)। VLAN নম্বরের জন্য রইল ১২ bit.
দাম দিতে হলো দুই দশক পরে। সেবাদাতারা গ্রাহকের VLAN আলাদা রাখতে tag-এর ওপর tag বসাল — Q-in-Q, ২০০৫ সালে 802.1ad. Cloud আর virtualization এলে হাজার হাজার গ্রাহকের প্রত্যেকের অনেক নেটওয়ার্ক লাগল, আর ৪,০৯৪ সরাসরি দেয়ালে ঠেকল। ২০১৪ সালে VXLAN (RFC 7348) ২৪ bit-এর VNI আনল, কিন্তু তার জন্য পুরো frame-কে UDP-তে মুড়তে হলো, প্রতি frame-এ ৫০ byte খরচ আর MTU-র নতুন মাথাব্যথা। একই কাহিনি নেটওয়ার্কে বারবার: IPv4-এর ৩২ bit ঠিকানা (পর্ব ২১-এ IPv6), TCP-র ১৬ bit window (পর্ব ৩১-এ window scaling) — header-এর ঘরের আকার একবার ঠিক হলে লক্ষ যন্ত্রে তা বদলানো প্রায় অসম্ভব, তাই নতুন স্তর যোগ করে সমস্যা পাশ কাটানো হয়।
মূল উপলব্ধি: Protocol-এর header-এর প্রতিটি bit একটি দীর্ঘমেয়াদি প্রতিশ্রুতি। আজকের “যথেষ্ট” কালকের সীমা হয়ে দাঁড়ায়, আর তখন পুরোনো যন্ত্রের সাথে সামঞ্জস্য রাখতে গিয়ে সমাধান হয় স্তরের ওপর স্তর — encapsulation দিয়ে।
প্র ০২VLAN দিয়ে বিভাগ আলাদা করলেই কি নেটওয়ার্ক নিরাপদ? ব্যাংক বা হাসপাতালের মতো প্রতিষ্ঠানের জন্য এটি কতটা যথেষ্ট?
VLAN একটি যৌক্তিক বিভাজন — নির্ভর করে প্রতিটি switch-এর প্রতিটি port-এর সঠিক কনফিগারেশনের ওপর। একটি ভুল trunk, VLAN 1-এ ফেলে রাখা একটি port, চালু থাকা DTP, বা একটি native VLAN-এর অমিল — যেকোনো একটি দিয়েই দেয়ালে ফাটল ধরে। তার ওপর inter-VLAN routing চালু থাকলে, router বা layer-3 switch-এ কোনো নিয়ম না থাকলে, VLAN শুধু broadcast আলাদা করে; একটি VLAN-এর যন্ত্র অন্য VLAN-এর যেকোনো সার্ভারে IP দিয়ে দিব্যি পৌঁছে যায়। অর্থাৎ VLAN নিজে একটি কাঠামো, নিরাপত্তার নীতি নয়।
বাংলাদেশেই একটি বড় শিক্ষা আছে। ২০১৬ সালে বাংলাদেশ ব্যাংকের রিজার্ভ থেকে SWIFT বার্তা ব্যবহার করে বিপুল অর্থ চুরির ঘটনার পর সংবাদমাধ্যমে তদন্তকারীদের উদ্ধৃতি দিয়ে বলা হয়েছিল, SWIFT-এর সাথে যুক্ত কম্পিউটারগুলো যে নেটওয়ার্কে ছিল তাতে firewall ছিল না আর কম দামের সাধারণ switch ব্যবহার হচ্ছিল। প্রতিবেদনের এই বর্ণনা ঠিক হলে, সংবেদনশীল ব্যবস্থাটি ঠিকমতো আলাদা করা ছিল না। পুরো ঘটনার কারিগরি বিবরণ সব প্রকাশ্য নয়, তবে এ থেকে সাধারণ শিক্ষাটি পরিষ্কার: সবচেয়ে মূল্যবান ব্যবস্থাকে আলাদা segment-এ রাখা, আর সেই segment-এ ঢোকা-বের হওয়ার প্রতিটি পথ firewall দিয়ে নিয়ন্ত্রণ করা।
তাই পেশাদার নকশায় VLAN হলো স্তরে স্তরে প্রতিরক্ষার (defense in depth, পর্ব ৪৬) একটি স্তর মাত্র: VLAN দিয়ে segment, VLAN-এর মাঝে firewall বা ACL দিয়ে “কে কোথায় যেতে পারবে” নিয়ম, port-এ 802.1X দিয়ে যন্ত্রের পরিচয় যাচাই, আর log ও নজরদারি। কার্ড-পেমেন্টের নিরাপত্তা মান PCI DSS-ও কার্ডের তথ্য থাকা ব্যবস্থাকে বাকি নেটওয়ার্ক থেকে আলাদা রাখাকে গুরুত্ব দেয়। আধুনিক “zero trust” ধারণা আরও এক ধাপ এগিয়ে বলে: নেটওয়ার্কের ভেতরে আছেন বলেই কাউকে বিশ্বাস করা যাবে না; প্রতিটি অনুরোধে পরিচয় আর অনুমতি যাচাই। খুব সংবেদনশীল ব্যবস্থার জন্য VLAN-এর বদলে পুরো আলাদা ভৌত নেটওয়ার্কও বেছে নেওয়া হয়।
মূল উপলব্ধি: VLAN আলাদা করে, কিন্তু রক্ষা করে না। রক্ষা আসে VLAN-এর সীমানায় বসানো নিয়ম, পরিচয় যাচাই আর নজরদারি থেকে — আর ডিফল্ট সেটিং না বদলালে VLAN নিজেই দুর্বল হয়ে থাকে।
প্র ০৩Router-on-a-stick সস্তা আর সহজ — তবু বড় নেটওয়ার্কে কেন layer-3 switch বা আলাদা firewall দিয়ে inter-VLAN routing করা হয়? একটি হিসাব দিয়ে বোঝান।
Router-on-a-stick-এর মূল দুর্বলতা hairpin: একটি VLAN থেকে আরেক VLAN-এ যাওয়া প্রতিটি packet router-এর একমাত্র তারটি দুবার পার হয় — switch থেকে router-এ এক tag নিয়ে, router থেকে switch-এ আরেক tag নিয়ে। ধরুন তারটি ১ Gbps full-duplex (দুই দিকে আলাদাভাবে ১ Gbps). হিসাব বিভাগের ১০টি PC প্রত্যেকে ৮০ Mbps করে HR VLAN-এর একটি সার্ভারে ফাইল পাঠাচ্ছে: switch → router দিকে ৮০০ Mbps (VID 10), router → switch দিকে ৮০০ Mbps (VID 20). দুই দিকেই ৮০% ব্যবহার। এবার সার্ভার ৩০০ Mbps উত্তর পাঠালে সেটিও দুই দিকেই যোগ হয় — প্রতি দিকে ১,১০০ Mbps, তারের ক্ষমতার বেশি। ফলে queue, delay আর packet loss (পর্ব ০৫)। তার ওপর এই একটি তারেই ইন্টারনেটের traffic-ও যায়, আর router-এর CPU-কে প্রতিটি packet দেখতে হয়।
Layer-3 switch এই সমস্যা মৌলিকভাবে সরিয়ে দেয়: routing হয় switch-এর ভেতরের ASIC chip-এ, প্রতিটি port-এর পূর্ণ গতিতে, কোনো বাইরের তার ছাড়া। একটি ৪৮ port-এর switch-এর ভেতরের switching ক্ষমতা সাধারণত সব port একসাথে পূর্ণ গতিতে চালানোর মতো। তাই মাঝারি ও বড় ক্যাম্পাসে সাধারণ নকশা হলো: access switch-গুলো শুধু layer 2, সেগুলো trunk দিয়ে যুক্ত distribution বা core-এর layer-3 switch-এ, যেখানে সব VLAN-এর SVI আর gateway থাকে।
তাহলে firewall কেন? কারণ গতি আর নীতি আলাদা জিনিস। Switch-এর ACL সাধারণত সরল — ঠিকানা আর port দেখে অনুমতি বা নিষেধ; কোন সংযোগ কে শুরু করেছে (stateful), কোন অ্যাপ্লিকেশন — এসব বোঝে না। তাই অনেক প্রতিষ্ঠান সাধারণ কর্মীদের VLAN-গুলোর মাঝে routing layer-3 switch-এ করে, কিন্তু অতিথি, সার্ভার, পেমেন্ট বা ক্যামেরার মতো সংবেদনশীল VLAN-এর gateway রাখে firewall-এ, যাতে সেখানে যাওয়া-আসার প্রতিটি সংযোগ নিয়মে বাঁধা আর লগে লেখা থাকে। ছোট অফিসে, যেখানে VLAN-এর মাঝে traffic কম, একটি ভালো router-এ router-on-a-stick-ই সবচেয়ে বাস্তবসম্মত — একই যন্ত্রে routing, firewall আর ইন্টারনেট।
মূল উপলব্ধি: Inter-VLAN routing-এর জায়গা বাছাই একটি trade-off: খরচ বনাম গতি বনাম নীতির সূক্ষ্মতা। প্রথমে হিসাব করুন কত traffic VLAN পার হবে আর কোন সীমানায় কড়া নিয়ম লাগবে — তারপর যন্ত্র বাছুন।
প্র ০৪Data center-গুলো কেন বড় VLAN-ভিত্তিক layer-2 নেটওয়ার্ক ছেড়ে VXLAN আর EVPN-এর দিকে গেল?
২০০০-এর দশকে virtualization ছড়িয়ে পড়লে data center-এ একটি নতুন চাহিদা এলো: একটি virtual machine (VM) চলন্ত অবস্থায় এক সার্ভার থেকে আরেক সার্ভারে সরানো (live migration), তার IP ঠিকানা না বদলে। তার মানে VM-টি যে rack-এই যাক, তাকে একই layer-2 নেটওয়ার্কে থাকতে হবে। সহজ সমাধান ছিল পুরো data center জুড়ে বিশাল VLAN. কিন্তু তাতে তিনটি সমস্যা দেখা দিল।
প্রথমত সংখ্যা: শত শত গ্রাহক, প্রত্যেকের কয়েকটি নেটওয়ার্ক — ৪,০৯৪ দ্রুত ফুরিয়ে যায়। দ্বিতীয়ত spanning tree (পর্ব ১২): loop ঠেকাতে STP অতিরিক্ত link বন্ধ রাখে, অথচ data center-এ সার্ভার থেকে সার্ভারে (east-west) traffic বিশাল, আর সব link একসাথে ব্যবহার করা দরকার। তৃতীয়ত ব্যর্থতার বিস্তার: একটি বিশাল broadcast domain-এ একটি ভুল বা loop পুরো data center অচল করতে পারে; হাজার হাজার VM-এর ARP broadcast-ও কম নয়।
VXLAN (RFC 7348, ২০১৪; VMware, Cisco, Arista-সহ কয়েকটি প্রতিষ্ঠানের প্রকৌশলীদের লেখা) সমাধানটি উল্টে দিল: নিচের ভৌত নেটওয়ার্ক (underlay) হবে সাধারণ IP routing — leaf-spine নকশা, যেখানে ECMP দিয়ে সব link একসাথে ব্যবহার হয়, STP-র দরকার নেই (পর্ব ৫২)। তার ওপরে virtual layer-2 নেটওয়ার্ক (overlay) — Ethernet frame UDP-তে মুড়ে এক VTEP (VXLAN Tunnel Endpoint, সাধারণত leaf switch বা hypervisor) থেকে আরেক VTEP-এ যায়। VM ভাবে সে একটি সাধারণ LAN-এ আছে। প্রথম দিকে VXLAN অচেনা MAC খুঁজতে multicast দিয়ে flood করত; পরে BGP EVPN control plane এলো (RFC 7432, VXLAN-এর জন্য RFC 8365), যেখানে প্রতিটি VTEP নিজের পেছনের MAC আর IP-র খবর BGP দিয়ে বাকিদের জানিয়ে দেয় — flood অনেক কমে যায়। Cloud-এর virtual নেটওয়ার্কেও (পর্ব ৫৪) একই ধরনের overlay ব্যবহার হয়, কখনো VXLAN, কখনো Geneve (RFC 8926)-এর মতো নতুন encapsulation বা প্রতিষ্ঠানের নিজস্ব পদ্ধতি।
মূল উপলব্ধি: Layer 2 সহজ, কিন্তু বড় হলে ভঙ্গুর; layer 3 জটিল, কিন্তু বড় পরিসরে স্থিতিশীল। আধুনিক data center দুটির সেরাটা নেয় — নিচে স্থিতিশীল IP নেটওয়ার্ক, ওপরে tunnel দিয়ে বানানো নমনীয় virtual LAN.
প্র ০৫একটি রেস্তোরাঁ বা হোটেলের ফ্রি Wi-Fi-তে অতিথি আর কর্মীদের SSID কীভাবে VLAN-এ ভাগ হয়? অতিথিদের একে অপরের থেকে আলাদা রাখা হয় কীভাবে?
ঢাকার অনেক রেস্তোরাঁ, হোটেল আর কো-ওয়ার্কিং জায়গায় দুটি Wi-Fi নাম দেখা যায় — একটি অতিথিদের, একটি কর্মীদের বা বিল দেওয়ার POS যন্ত্রের। প্রায়ই দুটিই আসে একই access point থেকে। ভেতরের কাজটি VLAN দিয়েই: access point যুক্ত থাকে switch-এর একটি trunk port-এ। প্রতিটি SSID (Wi-Fi-র নাম) একটি VLAN-এর সাথে বাঁধা — যেমন “Cafe-Guest” → VLAN 30, “Cafe-Staff” → VLAN 20. অতিথির ফোন থেকে আসা frame access point VLAN 30-এর tag বসিয়ে switch-এ পাঠায়; কর্মীর ল্যাপটপের frame যায় VLAN 20-এর tag নিয়ে। Access point-এর নিজের management ঠিকানা থাকে আরেকটি VLAN-এ। অর্থাৎ বাতাসে আলাদা নাম, তারে আলাদা tag.
এরপর router বা firewall-এ নিয়ম: VLAN 30 থেকে শুধু ইন্টারনেট, ভেতরের কোনো subnet নয়। অনেক জায়গায় অতিথি VLAN-এ একটি captive portal থাকে — প্রথমে একটি পাতায় মোবাইল নম্বর বা পাসওয়ার্ড দিয়ে তারপর ইন্টারনেট। ব্যান্ডউইথও প্রায়ই সীমিত করা হয়, যাতে কোনো অতিথির বড় ডাউনলোড কর্মীদের কাজ আটকে না দেয়।
কিন্তু একই অতিথি VLAN-এর দুটি ফোন? তারা একই broadcast domain-এ, তাই স্বাভাবিকভাবে একে অপরকে দেখতে পায় — কেউ চাইলে পাশের টেবিলের ল্যাপটপের খোলা file share খুঁজতে পারে। এর সমাধান দুই স্তরে। Wi-Fi-তে “client isolation” (বা AP isolation): access point একই SSID-র দুই ক্লায়েন্টের মধ্যে সরাসরি frame পাঠায় না। তারের দিকে private VLAN: একটি VLAN-এর ভেতরে port-গুলোকে “isolated” আর “promiscuous” ভাগে ভাগ করা হয় — isolated port-গুলো শুধু promiscuous port-এর (যেমন gateway) সাথে কথা বলতে পারে, একে অপরের সাথে নয়। হোটেলের প্রতিটি ঘরের তারের সংযোগ বা data center-এ ভিন্ন গ্রাহকের সার্ভার আলাদা রাখতে এটি ব্যবহার হয়; Cisco এই ধারণা RFC 5517-এ বর্ণনা করেছে।
মূল উপলব্ধি: SSID হলো বাতাসের VLAN. ভালো অতিথি নেটওয়ার্কে তিনটি দেয়াল থাকে — অতিথি আর ভেতরের নেটওয়ার্কের মাঝে (VLAN আর firewall), অতিথিদের নিজেদের মাঝে (client isolation বা private VLAN), আর অতিথি আর নেটওয়ার্কের যন্ত্রের নিয়ন্ত্রণের মাঝে (management VLAN). Wi-Fi-র বাকি গল্প পরের পর্বে।
অনুশীলন
খাতা-কলম নিন — bit ভেঙে, hop ধরে ধরে হিসাব করুন।
-
হাতে হিসাব (tag): (ক) PCP = ৬, DEI = ০, VID = ২০০ দিয়ে একটি 802.1Q tag hex-এ লিখুন। (খ) একটি trunk-এ ধরা পড়া tag
81 00 3F A2— PCP, DEI আর VID কত?(ক) TCI = PCP × ২১৩ + DEI × ২১২ + VID = ৬ × ৮,১৯২ + ০ + ২০০ = ৪৯,১৫২ + ২০০ = ৪৯,৩৫২ = 0xC0C8. বাইনারিতে:
110 0 000011001000. সাথে TPID যোগ করে tag =81 00 C0 C8.(খ) TCI = 0x3FA2 =
0011 1111 1010 0010. ওপরের ৩ bit001→ PCP = ১; পরের bit1→ DEI = ১; নিচের ১২ bit1111 1010 0010= 0xFA2 = ৪,০০২. অর্থাৎ VLAN 4002-এর একটি কম-অগ্রাধিকারের frame, ভিড়ে আগে ফেলার যোগ্য। অংশ ৩-এর decoder-এdecode("81003FA2")দিয়ে মিলিয়ে নিন। -
আউটপুট অনুমান করুন: অংশ ৪-এর
vlan_walk.js-এ trunk-এর লাইনটি বদলেallowed: [10, 99]করা হলো (VLAN 20 বাদ), আর শেষ লাইনে শুধু["PC-E"].forEach(broadcast);. কী ছাপা হবে? অফিসে এর বাস্তব লক্ষণ কী হবে?PC-E sends a broadcast; SW2 port 2 is access VLAN 20 SW2: frame arrives untagged -> switch marks it VLAN 20 SW2 port 24 (trunk): VLAN 20 not allowed -> not sent received by: nobodySW2-তে VLAN 20-এর আর কোনো port নেই, আর trunk-এ VLAN 20 অনুমোদিত নয় — তাই কেউ পায় না। বাস্তবে লক্ষণ: SW1-এর PC-B আর SW2-এর PC-E একই VLAN-এ, একই subnet-এ, তবু একে অপরকে ping করতে পারে না — ARP-এর উত্তরই আসে না। “Trunk allowed তালিকা থেকে VLAN বাদ পড়া” খুব সাধারণ একটি ভুল, বিশেষত
allowed vlan add-এর বদলে শুধুallowed vlanলিখলে। প্রথম যাচাই: দুই switch-এshow interfaces trunk. -
কমান্ড লিখুন: (ক) Cisco IOS-style-এ port Gi0/5-কে VLAN 20-এর access port বানান, DTP বন্ধসহ। (খ) Router-এর Gi0/0-তে VLAN 30-এর জন্য একটি subinterface বানান, gateway 192.168.30.1/24. (গ) একটি Linux সার্ভারে
eth0-এর ওপর VLAN 20-এর interface বানিয়ে ঠিকানা 192.168.20.5/24 দিন।! (ক) উদাহরণ — Cisco IOS-style interface GigabitEthernet0/5 switchport mode access switchport access vlan 20 switchport nonegotiate ! (খ) interface GigabitEthernet0/0.30 encapsulation dot1Q 30 ip address 192.168.30.1 255.255.255.0 # (গ) Linux, root লাগে sudo ip link add link eth0 name eth0.20 type vlan id 20 sudo ip addr add 192.168.20.5/24 dev eth0.20 sudo ip link set eth0.20 upখেয়াল করুন: (খ)-এর জন্য switch-এর যে port-এ router যুক্ত, সেটি trunk হতে হবে আর তার allowed তালিকায় 30 থাকতে হবে; (গ)-এর জন্য সার্ভারের switch port-ও trunk হতে হবে। Subinterface-এর নম্বর (.30) আর VLAN নম্বর মিলিয়ে রাখা রীতি, বাধ্যতামূলক নয় — আসল VLAN ঠিক করে
encapsulation dot1Q 30. -
হিসাব (router-on-a-stick-এর তার): একটি router ১ Gbps full-duplex তার দিয়ে switch-এর trunk-এ যুক্ত। VLAN 10-এর ১০টি PC প্রত্যেকে ৮০ Mbps করে VLAN 20-এর একটি সার্ভারে পাঠায়, আর সার্ভার মোট ৩০০ Mbps উত্তর পাঠায়। তারের প্রতিটি দিকে কত traffic? তার কি যথেষ্ট?
PC → সার্ভার: মোট ১০ × ৮০ = ৮০০ Mbps. এটি switch → router দিকে যায় (VID 10), তারপর router → switch দিকে ফেরে (VID 20). সার্ভার → PC: ৩০০ Mbps, switch → router (VID 20) আর router → switch (VID 10). তাই প্রতি দিকে ৮০০ + ৩০০ = ১,১০০ Mbps, যা ১,০০০ Mbps-এর বেশি — তারটি bottleneck, queue জমবে আর packet হারাবে। শুধু PC → সার্ভার থাকলে প্রতি দিকে ৮০০ Mbps, অর্থাৎ ৮০% ব্যবহার — চলবে, কিন্তু ইন্টারনেটের traffic-এর জায়গা প্রায় নেই। সমাধান: layer-3 switch-এ routing, বা router আর switch-এর মাঝে ১০ Gbps link বা একাধিক link একসাথে (link aggregation).
নিজেকে যাচাই করুন
ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।
ক্রমVLAN 10-এর একটি PC থেকে অন্য switch-এর VLAN 10-এর PC-তে একটি frame যাচ্ছে — ঘটনাগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)
- PC tag ছাড়া একটি সাধারণ Ethernet frame পাঠায়
- প্রথম switch-এর access port frame-টিকে VLAN 10-এর বলে ধরে নেয়
- প্রথম switch VLAN 10-এর MAC table দেখে trunk port বাছে
- Trunk-এ পাঠানোর আগে VID 10-এর tag বসে আর FCS নতুন করে হিসাব হয়
- দ্বিতীয় switch tag পড়ে, খুলে ফেলে আর VLAN 10-এর access port দিয়ে frame দেয়
IEEE 802.1Q tag-এ VLAN ID-র জন্য ১২ bit. সর্বোচ্চ কতটি VLAN ব্যবহার করা যায়?
- ৪,০৯৬
- ৬৫,৫৩৪
- ৪,০৯৪
- ১,০০৫
একটি trunk-এ ধরা পড়া frame-এ উৎস MAC-এর পরের চার byte: 81 00 60 1E. এর অর্থ কী?
- VLAN 24606, কোনো অগ্রাধিকার নেই
- VLAN 30, PCP 3, DEI 0
- VLAN 30, PCP 6, DEI 0
- এটি Q-in-Q-এর বাইরের tag, VLAN 96
একটি trunk-এর native VLAN 999. VLAN 999-এর একটি frame trunk দিয়ে গেলে কী হয়?
- Frame tag ছাড়া যায়, অপর প্রান্ত তাকে নিজের native VLAN-এর ধরে নেয়
- Frame-এ VID 999-এর tag বসে
- Trunk native VLAN-এর frame ফেলে দেয়
- Frame-টি router-এ পাঠানো হয়
SW1-এ PC-A (VLAN 10), PC-B (VLAN 20), PC-C (VLAN 10); SW2-তে PC-D (VLAN 10), PC-E (VLAN 20). দুই switch-এর মাঝে trunk, অনুমোদিত VLAN 10 আর 20. PC-E একটি ARP broadcast পাঠালে কে পাবে?
- PC-A, PC-B, PC-C আর PC-D — সবাই
- কেউ না — broadcast SW2-এর বাইরে যায় না
- PC-A আর PC-C
- শুধু PC-B
একটি router-এর একটিমাত্র port switch-এর trunk-এ যুক্ত; VLAN 10 (192.168.10.0/24) আর VLAN 20 (192.168.20.0/24)-এর মধ্যে routing করতে হবে। Router-এ কী কনফিগার করতে হবে?
- মূল port-এ একটি IP ঠিকানা, যেমন 192.168.0.1/16
- মূল port-এ native VLAN 10 আর 20 দুটোই
- প্রতিটি VLAN-এর জন্য একটি subinterface — নিজস্ব 802.1Q VLAN নম্বর আর gateway ঠিকানাসহ
- Switch-এর port-টিকে access port বানিয়ে VLAN 10 দেওয়া
“Double tagging” ধরনের VLAN hopping ঠেকাতে সবচেয়ে কার্যকর পদক্ষেপ কোনটি?
- Trunk-এ সব VLAN (1–4094) অনুমোদন দেওয়া
- Native VLAN-কে একটি অব্যবহৃত VLAN বানানো, কোনো access port-এ না রাখা, আর সম্ভব হলে native VLAN-কেও tag করা
- শুধু DTP বন্ধ করা
- সব ব্যবহারকারীকে VLAN 1-এ রাখা
শব্দকোষ
লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন — অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:
মনে রাখুন
- এক VLAN = এক broadcast domain = সাধারণত এক subnet. Switch broadcast আর অচেনা frame শুধু নিজের VLAN-এর port-এ flood করে।
- Access port এক VLAN-এর, frame tag ছাড়া; trunk অনেক VLAN-এর, frame-এ ৪ byte-এর 802.1Q tag — native VLAN বাদে, যা tag ছাড়া যায়।
- Tag = TPID 0x8100 │ PCP ৩ │ DEI ১ │ VID ১২ bit; ২১২ − ২ = ৪,০৯৪টি VLAN; সর্বোচ্চ frame ১,৫২২ byte; tag বসানো-খোলায় FCS নতুন হিসাব।
- VLAN-এ VLAN-এ কথা layer 3 দিয়ে: router-on-a-stick (subinterface, hairpin) বা layer-3 switch-এর SVI; নিরাপত্তার নিয়ম আলাদা করে ACL বা firewall-এ।
- নিরাপদ নকশা: VLAN 1-এ ব্যবহারকারী নয়, management VLAN আলাদা, native VLAN অব্যবহৃত ও tag করা, DTP বন্ধ, trunk ছাঁটাই। বড় পরিসরে Q-in-Q (৮ byte) আর VXLAN (২৪ bit VNI, ৫০ byte).
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পর্ব ১৪ · Wi-Fi — 802.11, CSMA/CA, roaming আর নিরাপত্তাপরবর্তী পর্বSSID থেকে VLAN — বাতাসের LAN কীভাবে চলে।
- পর্ব ১২ · Ethernet আর switch — MAC ঠিকানা, frame আর spanning treeআগের পর্বMAC শেখা, flooding আর STP — এই পর্বের ভিত্তি।
- কম্পিউটার নেটওয়ার্ক · কোর্স হোম৬২টি পর্বপুরো কোর্সের রোডম্যাপ — subnet (পর্ব ১৭), data center (পর্ব ৫২) পর্যন্ত।
- অপারেটিং সিস্টেম · Containerপাশের ট্র্যাকNamespace আর virtual নেটওয়ার্ক — Linux bridge আর VLAN-এর আধুনিক ব্যবহার।
- DSA · Hash tableপাশের ট্র্যাকSwitch-এর (VLAN, MAC) → port টেবিল আসলে একটি দ্রুত lookup টেবিল।