Network Layer
พา packet ข้ามลิงก์และเครือข่ายหลายช่วงไปยังปลายทาง ด้วย addressing, forwarding และ routing โดยมี IP เป็นแกนกลางของ Internet
1บทบาทของ Network Layer ใน OSI
Data Link Layer ตอบคำถามว่า “บนลิงก์นี้จะส่ง frame ให้ node ถัดไปอย่างไร” ส่วน Network Layer ขยายขอบเขตเป็น “ถ้าปลายทางไม่ได้อยู่บนลิงก์นี้ packet ควรผ่าน router ตัวใดต่อ” Router ไม่จำเป็นต้องรู้รายละเอียดเส้นทางทั้งหมดของ packet ตั้งแต่ต้นจนจบในทุกกรณี มันเพียงอ่าน destination address ใช้ forwarding table เลือก next hop แล้วส่งต่อทีละช่วง
สามคำที่ต้องแยกให้ชัด
| คำ | หน้าที่ | ช่วงเวลาที่ทำงาน |
|---|---|---|
| Addressing | ตั้งชื่อหรือตำแหน่งเชิงโครงสร้างให้ interface หรือปลายทาง | ทำให้ router เปรียบเทียบ destination กับ prefix ได้ |
| Routing | เรียนรู้หรือคำนวณว่าเครือข่ายใดควรเข้าถึงผ่านทางไหน | Control plane สร้างข้อมูลเส้นทางจาก static config หรือ routing protocol |
| Forwarding | ใช้ตารางที่มีอยู่ตัดสิน packet แต่ละใบแล้วส่งออก interface | Data plane ทำซ้ำด้วยความเร็วสูงสำหรับ traffic จริง |
Routing เปรียบเหมือนฝ่ายวางแผนเส้นทางที่อัปเดตแผนที่เมื่อถนนเปลี่ยน ส่วน forwarding คือพนักงานหน้าด่านที่อ่านป้ายของรถแต่ละคันแล้วชี้ช่องทางออก การคำนวณแผนที่อาจใช้เวลามากกว่า แต่การตัดสิน packet ต้องเร็วและเกิดขึ้นตลอดเวลา
2Switching & Forwarding: Datagram vs Virtual Circuit
Datagram (Connectionless)
คำว่า connectionless หมายถึงเครือข่ายไม่ต้องสร้าง per-flow connection state ตลอดเส้นทางก่อนส่ง packet แรก แต่ไม่ได้แปลว่าระบบไม่มี state เลย Router ยังมี forwarding table, neighbor state, queue และข้อมูลจาก routing protocols ส่วน application อาจใช้ TCP connection อยู่ด้านบนได้ Connectionless ของ IP กับ connection-oriented ของ TCP จึงอยู่คนละขอบเขตและอยู่ร่วมกันได้
แต่ละ datagram มี destination address พอให้ router ตัดสินใจแยกจาก packet อื่น ถ้า routing table เปลี่ยนกลางทาง packet ชุดเดียวกันอาจเดินคนละเส้น ทำให้ลำดับที่มาถึงเปลี่ยนได้ ความยืดหยุ่นนี้ช่วยให้เครือข่ายปรับเส้นทางเมื่อ topology เปลี่ยน แต่คำว่า “ทน failure” ไม่ใช่คำรับประกัน ถ้าไม่มีเส้นทางสำรองหรือ control plane ยัง converge ไม่ทัน packet ก็ยังหายได้
Virtual Circuit (Connection-Oriented)
VCI เป็น label ที่มีความหมายเฉพาะบนลิงก์หรือ interface หนึ่ง คู่ค่า incoming interface + incoming VCI จึงใช้ค้นหา outgoing interface + outgoing VCI การให้แต่ละช่วงเลือก label ของตนเองทำให้ header สั้นและจัดสรรค่าได้อิสระ แต่ switch ต้องเก็บ state ของ circuit และขั้น setup ต้องติดตั้ง state ให้ครบก่อน data เดินทาง
| ประเภท VC | คำอธิบาย |
|---|---|
| PVC (Permanent) | Administrator ตั้งค่าเอง อายุยาว |
| SVC (Switched) | โฮสต์ส่ง signalling (setup message) เพื่อสร้างเองแบบ dynamic |
| ข้อดีของ VC | ข้อเสียของ VC | |
|---|---|---|
| Header เล็กลง, รู้ล่วงหน้าว่ามีเส้นทางจริง, จองทรัพยากร/QoS ได้ล่วงหน้า | ต้องรอ RTT setup ก่อนส่งข้อมูล | |
| link/switch ล่ม → ต้องสร้าง connection ใหม่ทั้งหมด |
ATM (Asynchronous Transfer Mode) เป็นเครือข่ายแบบ VC เต็มรูปแบบ — หน่วยข้อมูลเรียก cell: header 5 byte + payload 48 byte (ขนาดคงที่ทำให้ switch ด้วย hardware ง่ายและขนานกันได้) มี 2 รูปแบบ header: UNI (host↔switch) และ NNI (switch↔switch)
ATM เป็นตัวอย่างเชิงประวัติที่ดีของการออกแบบด้วย fixed-size cell ขนาดเล็ก ช่วยจำกัดเวลาที่ cell หนึ่งขวาง traffic อื่นและเอื้อต่อ hardware switching แต่ payload 48 byte ทำให้ overhead สูงสำหรับข้อมูลก้อนใหญ่ และ application ต้องผ่าน ATM Adaptation Layer เพื่อแบ่งและประกอบข้อมูลกลับ ปัจจุบัน Internet ใช้ IP datagram เป็นหลัก แต่แนวคิด label switching และ traffic engineering ยังปรากฏในเทคโนโลยีอย่าง MPLS ซึ่งอยู่ระหว่างโลกของ IP forwarding กับ virtual-circuit-like forwarding
Routing Table กับ Forwarding Table ไม่จำเป็นต้องเป็นตารางเดียวกัน
Routing Information Base (RIB) เก็บเส้นทางที่ control plane เรียนรู้และเลือก ส่วน Forwarding Information Base (FIB) เป็นโครงสร้างที่เตรียมไว้ให้ data plane ค้นหาเร็ว เส้นทางหลายรายการใน RIB อาจแข่งขันกันก่อนเหลือ best route ที่ติดตั้งใน FIB และ FIB อาจใช้โครงสร้าง hardware เช่น TCAM เพื่อทำ longest-prefix lookup ด้วยความเร็วสูง การใช้คำว่า routing table แบบกว้าง ๆ พอได้ในบทนำ แต่เมื่อวิเคราะห์ระบบจริงควรแยกแหล่งความรู้กับสิ่งที่กำลังใช้ส่ง packet
3Routing: Distance Vector (Bellman-Ford)
ความเรียบง่ายของ Distance Vector อยู่ตรงที่ router รู้เพียงว่าเพื่อนบ้านแต่ละคนเสนอระยะเท่าไร ไม่ต้องเก็บแผนที่ทั้งเครือข่าย แต่ความไม่รู้ topology ก็เป็นต้นเหตุของปัญหา Router อาจเชื่อข้อมูลที่ท้ายที่สุดย้อนกลับมาจากตัวเองโดยไม่รู้ว่าเส้นทางนั้นเป็นวงรอบ
| วิธีแก้ | หลักการ |
|---|---|
| กำหนด Infinity ให้เล็ก | เช่น hop สูงสุดไม่เกิน 16 |
| Split Horizon | ไม่ส่งเส้นทางที่เรียนมาจาก neighbor กลับไปหา neighbor นั้น |
| Split Horizon + Poison Reverse | ส่งกลับไปแต่ระบุ cost เป็น ∞ อย่างชัดเจน |
Triggered update ช่วยให้ router ส่งข่าวการเปลี่ยนแปลงทันทีแทนรอรอบ periodic update ส่วน hold-down timer หรือแนวทางอื่นพยายามลดการรับข่าวที่ไม่น่าเชื่อถือในช่วง topology ยังไม่นิ่ง อย่างไรก็ตาม เทคนิคเหล่านี้ลดบางอาการ ไม่ได้เปลี่ยน Distance Vector ให้รู้ topology ทั้งหมด
RIP เป็นตัวอย่าง Distance Vector ที่ใช้ hop count และกำหนด 16 เป็น unreachable การเลือก infinity เล็กทำให้ count-to-infinity จบเร็วขึ้น แต่จำกัดเส้นผ่านศูนย์กลางเครือข่าย และ hop count มองทุกลิงก์เท่ากัน ต่อให้ลิงก์หนึ่งช้าและอีกลิงก์เร็ว เส้นทางที่ hop น้อยกว่าอาจยังถูกเลือก นี่แสดงว่า routing ไม่ได้หา “ทางดีที่สุด” จนกว่าเราจะนิยาม metric ก่อน
Convergence คือช่วงที่ Router กลับมาเห็นภาพสอดคล้องกัน
หลัง link ล่ม routing information ไม่เปลี่ยนพร้อมกันทั้งเครือข่าย ช่วง convergence router บางตัวรู้ข่าวแล้ว บางตัวยังใช้เส้นทางเก่า จึงเกิด packet loss, loop หรือเส้นทางอ้อมชั่วคราวได้ ความเร็ว convergence ขึ้นกับการตรวจพบ failure, timer, propagation ของ update, computation และการติดตั้ง FIB ไม่ใช่ routing algorithm เพียงบรรทัดเดียว
4Internetworking และ IP Protocol
Best effort ไม่ได้แปลว่า router ทำงานแบบขอไปที Router ยังตรวจ header เลือก longest prefix ลด TTL จัด queue และพยายามส่งตามทรัพยากรที่มี ความหมายคือ service contract ไม่รับประกันผลลัพธ์ หาก queue เต็ม packet อาจถูกทิ้ง หากเส้นทางเปลี่ยน packet อาจมาผิดลำดับ และหากต้องการ reliability ต้องสร้างเพิ่มที่ชั้นบน
| Field ใน IP Header | ความหมาย |
|---|---|
| TTL (8 bit) | นับ hop, ลดทุก hop, ถึง 0 ทิ้ง (กัน loop) |
| Protocol (8 bit) | demux key (TCP=6, UDP=17) |
| Checksum | ครอบคลุมเฉพาะ header |
| Ident/Flags/Offset | ใช้ในกระบวนการ fragmentation |
อ่าน IPv4 Header ให้เป็นเหตุการณ์
Version บอกว่าจะตีความ header แบบ IPv4, IHL บอกความยาว header, Total Length บอกขนาด datagram, DSCP/ECN ใช้กับการจัดชั้นบริการและสัญญาณ congestion, TTL จำกัดอายุเชิง hop, Protocol บอก payload ชั้นบน และ Source/Destination Address ใช้ระบุปลายทางเชิง IP Field เหล่านี้ไม่ได้อยู่เพื่อให้ท่องตำแหน่ง แต่แต่ละตัวแก้ปัญหาในกระบวนการ forwarding หรือ demultiplexing
TTL ใน IPv4 มีชื่อมาจากเวลา แต่ router ใช้งานโดยลดอย่างน้อยหนึ่งต่อ hop ในทางปฏิบัติ ถ้าค่ากลายเป็นศูนย์ router ทิ้ง packet และโดยทั่วไปส่ง ICMP Time Exceeded กลับไป Traceroute ใช้พฤติกรรมนี้โดยตั้ง TTL เพิ่มทีละค่าเพื่อให้ router ตามทางตอบกลับ แต่ firewall, rate limit หรือ policy อาจทำให้บาง hop ไม่ตอบ จึงไม่ควรตีความเครื่องหมายดอกจันว่า router หายไปแน่นอน
IPv4 header checksum ครอบคลุมเฉพาะ header และต้องคำนวณใหม่เมื่อ TTL เปลี่ยน ส่วน TCP/UDP checksum มีขอบเขตอีกแบบและอาจครอบคลุม pseudo-header ด้วย การมี checksum หลายชั้นดูซ้ำซ้อน แต่แต่ละชั้นป้องกันขอบเขตและมีเงื่อนไขต่างกัน IPv6 ตัด header checksum ออกจาก base header เพื่อลดงาน forwarding และอาศัย error detection ที่ชั้นอื่นร่วมกับกลไกของ transport
คำอธิบายนี้ใช้กับ IPv4 เมื่ออนุญาตให้ fragment หากตั้ง Don't Fragment (DF) แล้ว packet ใหญ่เกิน outgoing MTU router จะทิ้งและควรส่ง ICMP Fragmentation Needed กลับต้นทาง สำหรับ IPv6 router ระหว่างทางไม่ทำ fragmentation ต้นทางต้องใช้ Path MTU Discovery และ Fragment extension header เมื่อจำเป็น
Fragments ใช้ Identification เดียวกัน พร้อม Fragment Offset และ More Fragments flag เพื่อให้ปลายทางประกอบกลับ Offset นับเป็นหน่วย 8 byte จึงทำให้ fragment ที่ไม่ใช่ชิ้นสุดท้ายต้องมี payload สอดคล้องกับหน่วยดังกล่าว ถ้า fragment ชิ้นเดียวหาย datagram ทั้งก้อนไม่สมบูรณ์ และ transport อาจต้องส่งข้อมูลต้นฉบับใหม่ จึงควรหลีกเลี่ยง fragmentation เมื่อทำได้
Datagram มี payload 4,000 byte และ IPv4 header 20 byte ต้องผ่านลิงก์ MTU 1,500 byte แต่ละ fragment บรรจุ payload ได้ไม่เกิน 1,480 byte ซึ่งหาร 8 ลงตัว
- Fragment 1: payload 1,480, offset 0, MF=1
- Fragment 2: payload 1,480, offset 185, MF=1
- Fragment 3: payload 1,040, offset 370, MF=0
ทุก fragment มี header ของตนเอง จึงเพิ่ม overhead และแต่ละชิ้นถูก route แยกกันได้ การคำนวณต้องระวังว่า MTU รวม IP header ไม่ใช่พื้นที่ payload ล้วน
if (NetworkNum ปลายทาง = NetworkNum ของ interface ใดของฉัน) then
ส่งตรงถึงปลายทาง
else if (อยู่ใน forwarding table) then
ส่งไปยัง NextHop router
else
ส่งไปยัง default router
อัลกอริทึมข้างต้นเป็นภาพเริ่มต้น แต่ implementation จริงรวม connected routes ไว้ใน forwarding table และใช้ longest prefix match กับทุกกรณี รวมถึง default route 0.0.0.0/0 หากไม่มี prefix ใดตรงและไม่มี default route router จะทิ้ง packet และอาจส่ง ICMP Destination Unreachable ตามเงื่อนไข
Next Hop คือปลายทางของ Frame ช่วงนี้ ไม่ใช่ปลายทางสุดท้ายของ Packet
หลังเลือก outgoing interface และ next-hop IP แล้ว router ต้องหา link-layer address ของ next hop เช่นใช้ ARP สำหรับ IPv4 บน Ethernet จากนั้นสร้าง frame ใหม่ Destination IP ใน packet ยังเป็นปลายทางสุดท้าย แต่ destination MAC ใน frame เป็น next hop บน LAN นั้น ถ้า destination อยู่ directly connected next hop ก็คือ destination เอง
CIDR — Classless Inter-Domain Routing
ตัวอย่าง classful ด้านบนสะท้อนปัญหาในอดีต แต่จำนวน host ที่ใช้งานได้ตามกฎ subnet ทั่วไปมักหัก network และ broadcast address จึงไม่ควรใช้ 255 หรือ 65,535 เป็นจำนวน usable hosts โดยไม่บอกสมมุติฐาน ประเด็นหลักคือ class A/B/C บังคับขนาดก้าวใหญ่เกินไป ทำให้ผู้ต้องการ address ระหว่างขนาดได้รับบล็อกใหญ่เกินจำเป็น และการแจกหลาย class C แก้ waste บางส่วนแต่ทำให้ routing table โต
192.4.16/20 — เมื่อ prefix ทับซ้อนกัน ใช้กฎ longest prefix matchPrefix length /n หมายถึง n บิตแรกเป็นส่วนที่ใช้จับคู่เครือข่าย ที่เหลือเป็นพื้นที่ address ภายในบล็อก บล็อก /24 มี 2⁸ = 256 addresses ส่วน /20 มี 2¹² = 4,096 addresses การหาขอบเขตทำได้ด้วย bitwise AND ระหว่าง IP address กับ subnet mask
192.168.10.77/26 มี mask 255.255.255.192 ขนาดบล็อกใน octet สุดท้ายเท่ากับ 64 ช่วงที่ครอบ 77 คือ 64–127
- Network address:
192.168.10.64 - Broadcast address:
192.168.10.127 - Usable host ตาม subnet IPv4 ทั่วไป:
.65–.126รวม 62 ค่า
กฎการหักสอง address มีข้อยกเว้น เช่น point-to-point /31 ตามมาตรฐานที่เกี่ยวข้อง และ host route /32 จึงควรรู้ทั้งกฎทั่วไปและบริบท ไม่เปลี่ยนกฎจำให้กลายเป็นกฎธรรมชาติ
Aggregation ช่วยได้เมื่อ Address ถูกจัดสรรให้ต่อเนื่อง
ISP สามารถประกาศ prefix ใหญ่หนึ่งรายการแทน prefix ย่อยจำนวนมาก หากบล็อกของลูกค้าอยู่ต่อเนื่องและใช้เส้นทางร่วมกัน แต่ถ้าองค์กร multihoming หรือย้าย provider แล้วยังต้องประกาศ prefix เฉพาะ เส้นทางเจาะจงอาจทำให้ aggregation แตก Longest prefix match ทำให้ route เฉพาะชนะ aggregate ได้ ซึ่งยืดหยุ่นแต่เพิ่มขนาด global routing table
| โปรโตคอลเสริม | หน้าที่ |
|---|---|
| ARP | หา link-layer address ของ IPv4 next hop บน local link โดย request มักเป็น broadcast และ reply มักเป็น unicast ไม่ใช่ระบบแปลสองทางทั่วไป |
| DHCP | แจก address และค่าตั้งเครือข่าย เช่น prefix, default gateway และ DNS server; relay ช่วยข้าม subnet ไปหา server |
| ICMP | ส่ง control/error information เช่น destination unreachable, time exceeded และ echo request/reply แต่มีข้อห้ามและ policy ว่าเมื่อใดไม่ควรส่ง error ซ้อน |
ARP ทำงานเฉพาะขอบเขต Local Link
Host ไม่ broadcast ARP ข้าม router เพราะ broadcast ระดับ Ethernet ถูกจำกัดใน LAN ถ้าปลายทางอยู่นอก prefix host ARP หา default gateway แล้วส่ง frame ให้ gateway Proxy ARP เป็นกรณีพิเศษที่อุปกรณ์ตอบแทน address อื่น แต่ไม่ควรใช้เป็นภาพพื้นฐานว่า ARP เดินข้าม network ได้
ARP cache ลดการ broadcast ซ้ำแต่ข้อมูลหมดอายุได้ และ ARP ไม่มี authentication ดั้งเดิม ผู้โจมตีจึงอาจส่งข้อมูลปลอมเพื่อเปลี่ยน mapping กลไกอย่าง Dynamic ARP Inspection อาศัยข้อมูลที่เชื่อถือได้จากระบบอื่นช่วยตรวจ แต่การรักษาความปลอดภัยไม่ได้เกิดจาก ARP เอง
DHCP ไม่ได้มีหน้าที่แจก IP เพียงค่าเดียว
Client ที่ยังไม่มี address ใช้ข้อความ discovery และ request เพื่อขอ lease พร้อม option ต่าง ๆ การสื่อสารระยะแรกใช้ broadcast เพราะ client ยังไม่รู้ server และยังตั้ง network ไม่ครบ DHCP relay รับ broadcast ใน subnet แล้วส่งต่อแบบ unicast ไป server พร้อมข้อมูลว่าคำขอมาจากเครือข่ายใด Server จึงเลือก pool ได้ถูกต้อง
Lease ทำให้ address ถูกนำกลับมาใช้และเปลี่ยนได้ ตัวตนของเครื่องจึงไม่ควรถูกผูกกับ IPv4 address แบบถาวร Log ที่ต้องติดตามเหตุการณ์ควรเก็บเวลา lease, client identifier และข้อมูลอื่นประกอบ มิฉะนั้นคำว่า “IP นี้คือเครื่องใคร” อาจตอบผิดเมื่อถามคนละเวลา
ICMP เป็นส่วนช่วยให้ IP อธิบายสิ่งที่เกิดขึ้น
ICMP ไม่ได้ทำให้ IP reliable แต่ช่วยรายงานเงื่อนไขบางอย่าง เช่นไม่มี route, port unreachable, TTL หมด หรือ packet ใหญ่เกิน MTU ข้อความ ICMP เองก็ส่งผ่าน IP และอาจหายได้ รวมทั้งถูก rate-limit หรือ firewall กรอง การไม่ได้ ICMP กลับมาจึงไม่พิสูจน์ว่าไม่มีปัญหา
Router ที่พบ IPv4 header checksum ผิดโดยทั่วไปทิ้ง packet โดยไม่ส่ง ICMP error เพราะ source address ใน header ที่เสียอาจไม่น่าเชื่อถือ และกติกา ICMP ยังหลีกเลี่ยงการส่ง error ตอบ ICMP error บางประเภท, broadcast/multicast บางกรณี หรือ fragment ที่ไม่ใช่ชิ้นแรก เพื่อไม่ให้ error สร้าง error ต่อเป็นลูกโซ่
5Link State Routing และ Dijkstra's Algorithm
Link State ยอมจ่ายค่าเก็บ topology และคำนวณมากขึ้น เพื่อให้แต่ละ router เห็นแผนที่แทนการเชื่อคำบอกระยะจากเพื่อนบ้านเพียงอย่างเดียว Reliable flooding ต้องจัดการ duplicate, ลำดับข้อมูล และอายุของประกาศ Sequence number ช่วยแยกข้อมูลใหม่จากเก่า ส่วน age/TTL ช่วยให้ state ที่เจ้าของหายไปไม่ค้างตลอดกาล
Dijkstra ใช้ได้เมื่อ edge weight ไม่เป็นลบ ซึ่งสอดคล้องกับ metric routing ทั่วไป หลังคำนวณ shortest-path tree จากตนเองเป็น root Router แปลงเส้นทางไปแต่ละ prefix เป็น next hop และติดตั้งใน RIB/FIB การมี topology เหมือนกันไม่ได้แปลว่าทุก router มี shortest-path tree เหมือนกัน เพราะแต่ละตัวใช้ตนเองเป็นจุดเริ่ม
- ตั้งระยะของ source เป็น 0 และ node อื่นเป็น ∞ ยกเว้นเพื่อนบ้านที่มี direct cost
- เลือก node ชั่วคราวที่ระยะต่ำสุดเป็นค่าถาวรถัดไป
- Relax edge จาก node นั้น ถ้าทางผ่านมันสั้นกว่าค่าเดิมให้อัปเดต distance และ predecessor
- ทำซ้ำจนได้ destination ที่ต้องการหรือทุก node ที่เข้าถึงได้ถูกเลือก
ข้อผิดพลาดที่พบบ่อยคืออัปเดตจาก node ที่ยังไม่ได้ถูกเลือกเป็นค่าต่ำสุด หรือเลือกจากค่า edge โดยตรงแทน cumulative cost ตารางทุกแถวควรบอกทั้งระยะปัจจุบันและ predecessor เพื่อย้อนสร้าง path ได้
OSPF เป็น Interior Gateway Protocol แบบ link state ภายใน Autonomous System ใช้ Link-State Advertisement หลายชนิดและแบ่งเครือข่ายเป็น area เพื่อลดขอบเขต flooding และ computation Area 0 เป็น backbone สำหรับการเชื่อม area ตามสถาปัตยกรรม OSPF ส่วนการแลกเส้นทางระหว่าง AS เป็นอีกขอบเขตและมักใช้ BGP ซึ่งตัดสินด้วย policy มากกว่าหา shortest path แบบ Dijkstra เพียงอย่างเดียว
Equal-Cost Multi-Path และเหตุผลที่เส้นทางอาจมีมากกว่าหนึ่ง
ถ้ามีหลาย next hop ที่ cost เท่ากัน router อาจติดตั้ง Equal-Cost Multi-Path (ECMP) แล้วกระจาย flow ตาม hash เพื่อใช้หลายลิงก์ การแบ่งต่อ packet อาจทำให้ packet ใน flow เดียวมาผิดลำดับ ระบบจึงมักรักษา flow เดียวไว้บน next hop เดิมตราบเท่าที่ topology ไม่เปลี่ยน Hash ที่ไม่สมดุลยังทำให้บางลิงก์แน่นแม้ capacity รวมเหลืออยู่ จึงต้องแยก “มีหลายทาง” ออกจาก “แบ่งโหลดได้พอดี”
6IPv6 และ NAT — สองคำตอบต่อข้อจำกัดของ IPv4 ที่ต่างกัน
IPv6 ขยาย Address Space และปรับโครงสร้าง Header
IPv6 ใช้ address 128 บิต เขียนเป็นกลุ่ม hexadecimal แปดกลุ่มและย่อเลขศูนย์ตามกติกาได้ การมี address มากขึ้นไม่ใช่ประโยชน์เดียว Base header ถูกทำให้มีรูปแบบคงที่ 40 byte ตัด header checksum ออก ย้ายข้อมูลเสริมไป extension headers และให้ router ระหว่างทางไม่ fragment packet การออกแบบพยายามทำให้ forwarding path เรียบง่ายขึ้น แม้ระบบทั้งหมดจะยังซับซ้อนจาก extension และ policy
| แนวคิด | IPv4 | IPv6 |
|---|---|---|
| Address length | 32 บิต | 128 บิต |
| Broadcast | มี broadcast address | ไม่มี broadcast ใช้ multicast ตามหน้าที่ |
| Neighbor resolution | ARP | Neighbor Discovery ผ่าน ICMPv6 |
| Fragmentation | Router อาจ fragment เมื่อ DF ไม่ถูกตั้ง | Router ไม่ fragment ต้นทางจัดการตาม Path MTU |
| Header checksum | มีใน IPv4 header | ไม่มีใน IPv6 base header |
IPv6 address มีหลาย scope เช่น link-local, global unicast, multicast และ loopback Link-local ถูกสร้างบน interface และใช้สื่อสารในลิงก์เดียว รวมถึงงานของ Neighbor Discovery และ routing protocol บางส่วน การมี IPv6 address หลายค่าบน interface เดียวเป็นเรื่องปกติ จึงไม่ควรถามหา “IP ของเครื่อง” เหมือนต้องมีคำตอบเดียว
NAT ช่วยประหยัด Public IPv4 แต่เปลี่ยน End-to-End Model
Network Address Translation แก้ไข address และมักแก้ port เมื่อ packet ผ่านขอบเขต ทำให้ host private หลายตัวใช้งาน public IPv4 ร่วมกันได้ PAT/NAPT เก็บ mapping ระหว่าง tuple ฝั่งในกับ tuple ฝั่งนอก Return traffic ต้องตรงกับ state หรือ rule จึงย้อนกลับถูกเครื่อง
NAT ชะลอการขาดแคลน IPv4 และซ่อนโครงสร้าง address ภายในบางส่วน แต่ไม่ใช่ firewall โดยตัวมันเอง และทำให้ inbound connection, peer-to-peer, protocol ที่ฝัง address ใน payload, IPsec บางโหมด และ troubleshooting ซับซ้อนขึ้น Application ใช้ STUN, TURN, ICE, port forwarding หรือ relay เพื่อเดินผ่านข้อจำกัดตามกรณี
7Routing ใน Ad Hoc Network
Ad hoc network ไม่มีโครงสร้างพื้นฐานคงที่ โหนดอาจเป็นทั้งปลายทางและตัวส่งต่อ ลิงก์เกิดหรือหายตามการเคลื่อนที่ กำลังสัญญาณ และพลังงานที่เหลือ Routing protocol จึงต้องแลกความสดของเส้นทางกับ overhead ถ้าอัปเดตทั้งเครือข่ายตลอดเวลา route จะสดแต่กิน bandwidth และแบตเตอรี่ ถ้ารอจนต้องใช้ค่อยค้นหา packet แรกต้องรอ route discovery
Reactive routing เช่นแนวคิดใน AODV ใช้ Route Request กระจายออกไปเมื่อยังไม่มีเส้นทาง โหนดบันทึก reverse path และปลายทางหรือโหนดที่มีข้อมูลเหมาะสมส่ง Route Reply กลับ ส่วน Route Error แจ้งเมื่อทางขาด Proactive routing พยายามรักษาตารางล่วงหน้า จึงส่งได้เร็วเมื่อมีข้อมูลแต่จ่าย overhead แม้เส้นทางไม่ได้ใช้งาน ยังมี hybrid approach ที่ผสมตามขอบเขต
Route metric อาจรวม hop count, link quality, expected transmission count, energy หรือความเสถียร เส้นที่สั้นแต่หลุดบ่อยอาจแพงกว่าเส้นอ้อมที่เชื่อถือได้ Mobility ยังทำให้ route ที่คำนวณเสร็จอาจหมดอายุก่อนใช้ ดังนั้น convergence ใน ad hoc network ไม่ใช่เหตุการณ์เฉพาะตอนอุปกรณ์เสีย แต่เป็นสภาวะปกติของ topology ที่เปลี่ยนอยู่ตลอด
8Routing ระหว่างองค์กร: เมื่อ Policy สำคัญกว่าระยะสั้นที่สุด
Distance Vector และ Link State ช่วยสร้างภาพ routing ภายในองค์กรหรือ Autonomous System แต่ Internet เชื่อมเครือข่ายที่มีเจ้าของต่างกัน แต่ละฝ่ายมีต้นทุน สัญญาทางธุรกิจ ความปลอดภัย และนโยบายของตน เส้นทางที่สั้นที่สุดเชิง hop จึงอาจไม่ใช่เส้นทางที่องค์กรยอมใช้ การ routing ระหว่าง AS ใช้ BGP ซึ่งเป็น path-vector protocol และเลือก route จาก attribute กับ policy หลายขั้น ไม่ได้ใช้ Dijkstra บนแผนที่ Internet ทั้งโลก
Autonomous System และ BGP Route
Autonomous System คือกลุ่มเครือข่ายภายใต้นโยบาย routing ร่วมกันและมี Autonomous System Number BGP speaker แลก prefix reachability พร้อม path attribute เช่น AS_PATH, NEXT_HOP, LOCAL_PREF และ MED แต่ละองค์กร import route แล้วใช้นโยบายปรับหรือกรอง จากนั้น export เฉพาะสิ่งที่ยอมประกาศให้เพื่อนบ้าน
| Attribute/แนวคิด | ช่วยตอบคำถามอะไร |
|---|---|
| AS_PATH | ประกาศนี้ผ่าน AS ใดมา ใช้ช่วยป้องกัน loop และเป็นส่วนหนึ่งของ route selection |
| LOCAL_PREF | ภายใน AS ต้องการให้ออกทางไหน ค่าสูงกว่ามักถูกชอบตามกระบวนการทั่วไป |
| MED | เสนอให้อีก AS เลือกจุดเข้าทางใดภายใต้เงื่อนไขการเปรียบเทียบของ BGP |
| Communities | ติดป้าย route เพื่อให้นโยบายกลุ่มหนึ่งจัดการได้สะดวก |
| Longest Prefix Match | หลัง route ถูกเลือกและติดตั้งแล้ว data plane ยังเลือก prefix ที่เจาะจงที่สุดสำหรับ packet |
คำว่า best path ใน BGP จึงหมายถึงเส้นทางที่ชนะตาม decision process และ policy ไม่ใช่หลักฐานว่า delay ต่ำสุดหรือ bandwidth สูงสุด ผู้ดูแลอาจเลือก provider ราคาถูกสำหรับ outbound traffic แต่ inbound traffic ถูกควบคุมได้ทางอ้อมผ่านสิ่งที่ประกาศและ attribute ที่อีกฝ่ายอาจเคารพหรือไม่ก็ได้ Routing ไปกับ routing กลับจึงไม่จำเป็นต้องสมมาตร
Route Advertisement คือคำกล่าวอ้างที่ต้องตรวจสอบ
ถ้า AS ประกาศ prefix ผิด ไม่ว่าจะจากการตั้งค่าพลาดหรือเจตนา traffic อาจถูกดึงไปผิดทาง เกิด route leak หรือ prefix hijack ได้ กลไกอย่าง prefix filtering, max-prefix, RPKI Route Origin Validation และการติดตาม announcement ช่วยลดความเสี่ยง แต่ไม่ได้ทำให้ทุก policy ถูกต้องโดยอัตโนมัติ
RPKI ROA ช่วยบอกว่า AS ใดได้รับอนุญาตให้ originate prefix ตามข้อมูลที่ลงทะเบียนไว้ แต่ไม่ได้ยืนยัน AS_PATH ทั้งเส้นในรูปพื้นฐาน การเห็น route เป็น RPKI-valid จึงตอบเรื่อง origin authorization ไม่ใช่ใบรับรองว่าเส้นทางทั้งหมดปลอดภัยหรือดีที่สุด ความปลอดภัยของ routing ต้องแยก claim แต่ละระดับออกจากกัน
9Queue, Congestion และสิ่งที่เกิดขึ้นระหว่าง Forwarding
ภาพพื้นฐานมักวาด router รับ packet แล้วส่งออกทันที แต่ถ้า packet เข้าหลาย interface พร้อมกันและต้องออก interface เดียวกัน อัตราขาเข้ารวมอาจสูงกว่า link rate ขาออก Packet จึงต้องรอใน queue เมื่อ buffer เต็ม router ต้องทิ้งบาง packet นี่คือจุดที่ Network Layer เชื่อมกับ performance และ congestion control
Buffer ช่วยรับความผันผวน แต่สร้าง Delay ได้
Buffer ดูดซับ traffic burst ชั่วคราว ทำให้ packet ไม่ถูกทิ้งทันที แต่ buffer ใหญ่มากไม่ได้ดีเสมอ เมื่อ queue สะสม packet จำนวนมาก latency พุ่งและ flow ที่ต้องการ feedback รอช้าลง ปรากฏการณ์ bufferbloat ทำให้เครือข่ายมี throughput ดูสูงแต่ interactive application หน่วงมาก การออกแบบจึงต้องสมดุลระหว่าง loss กับ queueing delay
| กลไก | บทบาท | ข้อแลกเปลี่ยน |
|---|---|---|
| Tail Drop | รับจน queue เต็มแล้วทิ้ง packet ใหม่ | ง่าย แต่อาจทำให้หลาย flow ลดพร้อมกันและ queue ค้างเต็ม |
| AQM | ส่งสัญญาณหรือทิ้งก่อน buffer เต็มตามภาวะ queue | ลด latency และเตือน congestion เร็วขึ้น แต่ต้องตั้งและเลือก algorithm เหมาะสม |
| ECN | Mark packet แทนทิ้งเมื่ออุปกรณ์และ endpoint รองรับ | รักษาข้อมูลไว้แต่ต้องมีการตอบสนองจาก transport และนโยบายเครือข่าย |
| Scheduling | เลือก packet ใดออกก่อน เช่น priority หรือ fair queueing | ช่วยแยกบริการ แต่ priority ที่ไม่จำกัดอาจทำให้ traffic อื่นอด |
DSCP ใน IP header ใช้ทำเครื่องหมาย traffic class แต่เครื่องหมายเป็นเพียงคำขอหรือนโยบายที่ network domain ตีความ Router แต่ละขอบเขตอาจ remark, ignore หรือ map ไป queue ต่างกัน การใส่ DSCP สูงไม่ได้สร้าง bandwidth และไม่ควรถูก application ทุกตัวประกาศตัวเองว่าสำคัญที่สุด มิฉะนั้น priority queue จะกลายเป็น queue ธรรมดาที่มีความมั่นใจสูงขึ้นเท่านั้น
Load Balancing และ Packet Ordering
Router ที่มี ECMP หลายทางมัก hash จาก source/destination address, protocol และ port เพื่อรักษา flow เดียวบน path เดิม ถ้ากระจายต่อ packet ผ่าน path ที่ latency ต่างกัน packet อาจมาผิดลำดับและกระทบ transport แต่ per-flow hashing อาจเกิด elephant flow ตัวเดียวกินลิงก์หนึ่งเต็ม ขณะที่อีกลิงก์ว่าง การปรับสมดุลจึงมี granularity และข้อมูลไม่สมบูรณ์เป็นข้อจำกัด
10วิธีวิเคราะห์ปัญหา Network Layer อย่างเป็นลำดับ
การแก้ปัญหาที่ดีไม่เริ่มจากสุ่ม ping ทุก address แล้วหวังว่าคำตอบจะเล่าเรื่องทั้งหมด เราควรสร้างเส้นทางที่คาดไว้ก่อนว่า source จะเลือก next hop ใด Router แต่ละตัวมี route อะไร และ return traffic จะกลับทางไหน จากนั้นเก็บหลักฐานทีละขอบเขต
- ตรวจ local configuration — address, prefix length, default gateway และ interface state ถูกต้องหรือไม่ Prefix ผิดหนึ่งบิตอาจทำให้ host คิดว่าปลายทางไกลอยู่ local แล้ว ARP หาอย่างไร้คำตอบ
- ตรวจ neighbor resolution — ARP หรือ IPv6 Neighbor Discovery หา link-layer address ของ next hop ได้หรือไม่ ถ้าไม่ได้ ปัญหายังไม่ควรกระโดดไปโทษ routing ทั้ง Internet
- ตรวจ route lookup — destination ตรง prefix ใด longest prefix ชี้ outgoing interface และ next hop ใด มี policy routing หรือ VRF เปลี่ยนตารางหรือไม่
- ตรวจ forwarding path — TTL ลดตามคาดหรือไม่ ACL/firewall, NAT, MTU และ queue ที่แต่ละ hop ทำอะไรกับ packet
- ตรวจ return path — ปลายทางรู้ทางกลับหรือไม่ Stateful firewall เห็น flow ครบสองทิศหรือเปล่า Asymmetric routing อาจทำให้ขาไปผ่านแต่ขากลับถูกทิ้ง
- ตรวจ application หลัง network path — เมื่อ IP reachability มีหลักฐานแล้ว ค่อยแยก transport port, service และ application response ไม่ใช้ ping สำเร็จเป็นหลักฐานว่าเว็บต้องทำงาน
การ ping gateway สำเร็จพิสูจน์เพียง local link, neighbor resolution และ IP path ระหว่าง host กับ gateway บางส่วน ขั้นต่อไปต้องดูว่า gateway มี default route หรือไม่ NAT ถูกใช้และมี state หรือไม่ DNS resolution ทำงานหรือเปล่า upstream filter traffic หรือไม่ และ return route กลับ public address อยู่ตรงไหน
ถ้า ping public IP ได้แต่เปิดชื่อเว็บไม่ได้ หลักฐานชี้ไปทาง DNS มากขึ้น ถ้า DNS ตอบและ TCP connect ได้แต่หน้าเว็บผิด ปัญหาอยู่สูงขึ้น การแบ่งสมมุติฐานตามหลักฐานช่วยลดการแก้ config แบบสุ่ม ซึ่งมักสร้างปัญหาใหม่ให้ร่วมทีมกับปัญหาเดิม
เครื่องมือแต่ละตัวเห็นคนละมุม
| เครื่องมือ/ข้อมูล | ช่วยตอบ | สิ่งที่ยังตอบไม่ได้ลำพัง |
|---|---|---|
ip addr, ipconfig | Address และ interface config บนเครื่อง | ไม่ได้ยืนยันว่า gateway หรือเส้นทางไกลทำงาน |
ip route, routing table | Route ที่เครื่องหรือ router จะใช้ | มี route ไม่ได้แปลว่า next hop เข้าถึงได้หรือ return path ถูก |
| ARP/neighbor table | Mapping ของ next hop บน local link | ไม่ใช่รายชื่อทุก host ทั่วเครือข่าย |
ping | ICMP echo round trip เมื่อทุกฝ่ายยอมตอบ | ไม่ตอบอาจเกิดจาก policy; ตอบได้ไม่ยืนยัน transport/application |
traceroute | บาง hop ที่ตอบต่อ TTL/hop-limit probes | เส้นทางกลับอาจต่าง และ hop ที่เงียบยัง forward traffic ได้ |
| Packet capture | Packet ที่ผ่านจุดจับและถูกส่งขึ้นมาให้เห็น | ไม่เห็นสิ่งที่ถูก drop ก่อนจุดจับหรือ offload ซ่อนไว้เสมอ |
11ความปลอดภัยที่ Network Layer มองเห็น และสิ่งที่มองไม่เห็น
Router และ firewall ระดับเครือข่ายมองเห็น source/destination address, protocol, interface และบางครั้ง transport port หรือ connection state จึงใช้ ACL, route filtering, anti-spoofing และ segmentation จำกัด traffic ได้ แต่ IP address ไม่ใช่ตัวตนที่พิสูจน์แล้ว Source address ปลอมได้ในหลายบริบท และ NAT mapping ไม่บอกผู้ใช้จริงโดยไม่ผูกกับ log และเวลา
Source Validation และ Spoofing
Ingress filtering ตรวจว่า packet ที่เข้าจาก interface หนึ่งมี source prefix สมเหตุสมผลหรือไม่ ช่วยลดการปลอม source สำหรับ reflection/amplification attack Unicast Reverse Path Forwarding อาจตรวจเส้นทางย้อนกลับ แต่ strict mode มีปัญหากับ asymmetric routing จึงต้องเลือกโหมดตาม topology การควบคุมที่ดีต้องรู้สมมุติฐานของเส้นทาง ไม่ใช่เปิด feature เพราะชื่อฟังดูปลอดภัย
IPsec ปกป้อง Packet แต่ไม่ได้แก้ทุกปัญหาของเครือข่าย
IPsec ใช้ Authentication Header หรือ Encapsulating Security Payload ตามโหมดและนโยบาย เพื่อให้ integrity, authentication และ confidentiality บางส่วน Transport mode ปกป้อง payload ของ IP packet เดิมเป็นหลัก ส่วน tunnel mode ห่อ packet เดิมใน packet ใหม่และใช้สร้าง VPN ได้ แต่ IPsec ไม่ทำให้ route ที่ผิดกลับถูก ไม่เพิ่ม availability และ endpoint ที่ได้รับสิทธิ์ยังส่งข้อมูลอันตรายระดับ application ได้
Encryption ยังเหลือ metadata บางอย่าง เช่น outer source/destination, ขนาดและเวลาให้เครือข่ายเห็นตามโหมด Traffic analysis จึงอาจอนุมานรูปแบบได้แม้อ่าน payload ไม่ได้ คำว่า encrypted ควรระบุว่าปกป้องข้อมูลส่วนใด จากผู้สังเกตตำแหน่งใด และ key อยู่กับใคร
12สรุปและขั้นตอนถัดไป
- Network Layer พา packet ข้ามหลายลิงก์ โดยแยก addressing, routing ใน control plane และ forwarding ใน data plane
- Datagram ตัดสิน packet แยกกัน ส่วน Virtual Circuit ตั้ง state และเปลี่ยน local VCI ในแต่ละช่วง ไม่มีแบบใดดีที่สุดทุกเป้าหมาย
- Distance Vector เรียนระยะจากเพื่อนบ้านและเสี่ยง count-to-infinity ส่วน Link State flood ชิ้นส่วน topology แล้วคำนวณ Dijkstra ภายในขอบเขต
- IP ให้บริการ connectionless แบบ best effort ไม่รับประกันการถึง ลำดับ เวลา หรือการไม่ซ้ำ คุณสมบัติ end-to-end ต้องสร้างเพิ่มที่ชั้นบน
- IPv4 router fragment ได้เมื่อเงื่อนไขอนุญาตและปลายทาง reassemble; IPv6 router ไม่ fragment และพึ่ง Path MTU Discovery
- CIDR ใช้ prefix ยาวแปรผันและ longest prefix match ช่วยทั้งการจัดสรรกับ aggregation แต่สองเป้าหมายไม่ได้ดีขึ้นพร้อมกันเสมอ
- ARP หา MAC ของ IPv4 next hop บน local link, DHCP แจก configuration และ ICMP รายงาน control/error บางชนิดโดยไม่รับประกันว่าจะถึง
- OSPF ใช้ link state ภายใน AS ส่วน BGP เลือกเส้นทางระหว่าง AS ด้วย attribute และ policy ไม่ใช่ shortest path ล้วน
- IPv6 เพิ่ม address space และปรับ header/neighbor discovery ส่วน NAT ประหยัด public IPv4 แต่เพิ่ม state และลดความตรงของ end-to-end connectivity
- Queue, MTU, ACL, NAT, asymmetric return path และ routing convergence ล้วนทำให้ packet หายหรือช้าได้ ต้องใช้หลักฐานแยกสาเหตุ
- อธิบายว่าทำไม VCI จึงไม่ใช่ global identifier
- อธิบายปัญหา count-to-infinity และเปรียบเทียบ split horizon กับ poison reverse
- คำนวณ address assignment efficiency เมื่อกำหนดจำนวนโฮสต์และ class ที่ขอ
- เดิน Dijkstra's algorithm จากกราฟตัวอย่างที่กำหนด cost แต่ละ edge
- ทำ longest prefix match จาก forwarding table ที่มี default route และ prefix ซ้อนกันหลายระดับ
- แบ่ง IPv4 datagram ตาม MTU โดยคำนวณ payload, offset และ MF ของแต่ละ fragment
- อธิบายว่าทำไม route ขาไปกับขากลับอาจไม่เหมือนกัน และส่งผลต่อ stateful firewall อย่างไร
- ไล่ troubleshooting จาก local address, neighbor, route, forwarding ไปถึง return path โดยบอกหลักฐานที่ต้องเก็บแต่ละขั้น
ขั้นตอนถัดไปคือ Transport Layer ซึ่งรับช่วงจากบริการ best effort ของ IP แล้วเพิ่มการสื่อสารระหว่าง process ด้วย port, multiplexing และบริการแบบ TCP หรือ UDP TCP จะนำ sequence number, acknowledgment, window และ retransmission มาสร้าง byte stream ที่เชื่อถือได้แบบ end-to-end ขณะที่ UDP รักษารูปแบบ datagram ที่เบากว่าและปล่อยให้ application เลือกสิ่งที่จะเพิ่มเอง