ข้ามไปยังเนื้อหา
Tayakorn

คู่มือ Mesh Networking — สื่อสารในที่ที่ไม่มีเสาสัญญาณ

LEVEL 2 · ระดับกลาง

proactive กับ reactive — จ่ายก่อนหรือจ่ายตอนใช้

สองสำนักในบทที่แล้วต่างกันที่ เก็บอะไร บทนี้ต่างกันที่ เก็บเมื่อไหร่ และมันคือการเลือกที่กระทบทุกอย่าง

8.1 สองวิธีจ่าย

Proactive = รู้ไว้ก่อน ทุกโหนดคุยกันตลอดเวลาเพื่อให้ตารางพร้อมใช้เสมอ พอมีข้อมูลจะส่งก็ส่งได้ทันที · โปรโตคอลตระกูลนี้คือ OLSR และ Babel

Reactive = ค่อยหาตอนต้องใช้ ไม่ส่งอะไรเลยจนกว่าจะมีคนอยากคุย แล้วค่อยยิงคำถามกระจายออกไปหาเส้นทาง · ตัวแทนคือ AODV

8.2 ราคาที่จ่ายมีหน้าตายังไง

NODES = 20
HELLO_BYTES = 64      # ขนาด hello หนึ่งใบ
LSA_BYTES = 220       # ประกาศสภาพลิงก์ของตัวเองหนึ่งใบ
LINK_BPS = 250_000    # ความเร็วอากาศจริงของวิทยุย่านต่ำ

for every in (1, 2, 5, 10, 30):
    per_sec = NODES * (HELLO_BYTES / every) + NODES * (LSA_BYTES / (every * 5))
    bits = per_sec * 8
    print(f"hello ทุก {every:>2} วิ -> {bits:>7,.0f} bps  = {bits/LINK_BPS*100:>4.1f}% ของสายอากาศ")

ผลรันจริง

hello ทุก  1 วิ ->  17,280 bps  =  6.9% ของสายอากาศ
hello ทุก  2 วิ ->   8,640 bps  =  3.5% ของสายอากาศ
hello ทุก  5 วิ ->   3,456 bps  =  1.4% ของสายอากาศ
hello ทุก 10 วิ ->   1,728 bps  =  0.7% ของสายอากาศ
hello ทุก 30 วิ ->     576 bps  =  0.2% ของสายอากาศ

ตัวเลขนี้บอกอะไรที่สำคัญมาก: ค่า overhead ของ proactive ไม่ได้แพงอย่างที่กลัวกัน เครือข่าย 20 โหนดที่คุยกันทุก 2 วินาทีใช้อากาศไป 3.5% เท่านั้น

แล้วทำไมยังมีคนใช้ reactive? เพราะในเครือข่ายที่มีโหนดเยอะแต่คุยกันจริงไม่กี่คู่ การรักษาเส้นทางไปยังทุกปลายทางที่ไม่มีใครใช้คือการเผาอากาศทิ้งเปล่า ๆ และค่านี้โตตามจำนวนโหนดคูณกับความถี่ในการประกาศ — ที่ 20 โหนดคือ 3.5% แต่ที่ 200 โหนดในพื้นที่เดียวกัน มันไม่ใช่แค่โตสิบเท่า เพราะประกาศของทุกคนต้องถูกส่งต่อผ่านทุกคนด้วย

8.3 ราคาของ reactive คือเวลา ไม่ใช่แบนด์วิดท์

ปลายทางห่าง 2 hop -> รอ 160 ms ก่อนไบต์แรกจะออก
ปลายทางห่าง 4 hop -> รอ 320 ms
ปลายทางห่าง 6 hop -> รอ 480 ms

(คิดจากการยิงถามและรอคำตอบ hop ละราว 40 มิลลิวินาที ไป-กลับ)

สำหรับการโหลดไฟล์ ครึ่งวินาทีไม่มีใครสังเกต แต่สำหรับ การกดปุ่มพูดวิทยุแล้วเสียงต้องออกทันที ครึ่งวินาทีคือความต่างระหว่างใช้ได้กับใช้ไม่ได้ และงานภาคสนามส่วนใหญ่เป็นแบบหลัง

8.4 ทำไมของจริงถึงเลือกทางสายกลาง

โปรโตคอลที่ใช้งานจริงทุกวันนี้แทบไม่มีตัวไหนบริสุทธิ์ทั้งสองแบบ ท่ามาตรฐานคือ proactive กับเพื่อนบ้านใกล้ ๆ · reactive กับปลายทางไกล ๆ — เพราะเพื่อนบ้านใกล้คือคนที่คุณคุยด้วยบ่อยที่สุดและข้อมูลเน่าเร็วที่สุด ส่วนปลายทางไกลนาน ๆ ใช้ที ยอมรอได้

นี่คือตัวอย่างแรกของหลักการที่จะกลับมาอีกในบทที่ 12: อย่าเลือกข้างเมื่อคุณเลือกได้ทั้งสองข้างในสถานการณ์คนละแบบ

อ่านแบบเต็มเล่ม