Skip to content
Tayakorn

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

LEVEL 3 · ระดับสูง

หลายคลื่นความถี่ — ทางออกที่เปลี่ยนสมการ

นี่คือบทที่สำคัญที่สุดในครึ่งหลังของเล่ม และเป็นเหตุผลที่เครือข่ายเมชสมัยใหม่ทำสิ่งที่รุ่นก่อนทำไม่ได้

11.1 เบาะแสจากบทที่แล้ว

เพดานหนึ่งในสามของบทที่ 10 มาจากกติกาข้อเดียว: hop ที่ห่างกันไม่ถึงสามช่วง ส่งพร้อมกันไม่ได้ เพราะใช้ย่านความถี่เดียวกัน

สังเกตคำท้ายประโยค แล้วทางออกก็โผล่มาเอง — ถ้า hop ที่ 1 ใช้คลื่น A และ hop ที่ 2 ใช้คลื่น B ทั้งสองส่งพร้อมกันได้ทันทีทั้งที่ยืนติดกัน เพราะอยู่คนละย่าน ไม่ได้ยินกัน

พูดอีกแบบคือ การเพิ่มช่องคลื่นเข้ามา ทำให้ระยะเว้นที่ต้องการหดลง และถ้ามีช่องมากพอจนระยะเว้นเหลือหนึ่ง ก็แปลว่าไม่มีการแย่งกันเหลืออยู่เลย

11.2 พิสูจน์ด้วยตาเอง

RADIO_MBPS = 20.0
REUSE_GAP = 3     # โซ่คลื่นเดียว: ต้องเว้น 3 ช่วง hop ถึงจะส่งพร้อมกันได้

def chain(hops, channels):
    """มี k ช่องคลื่นสลับวน -> ระยะเว้นที่ต้องการลดลง k เท่า
    ถ้า k >= REUSE_GAP แปลว่า hop ติดกันก็ยังส่งพร้อมกันได้หมด ไม่เหลือการแย่งเลย"""
    gap = -(-REUSE_GAP // channels)          # ปัดขึ้น
    return RADIO_MBPS / min(hops, gap)

print(f"{'hop':>4}{'1 ช่อง':>13}{'2 ช่อง':>13}{'3 ช่อง':>13}{'3 ช่องได้เพิ่ม':>16}")
for h in (2, 3, 4, 6, 10):
    a, b, c = (chain(h, k) for k in (1, 2, 3))
    print(f"{h:>4}{a:>9.2f} Mbps{b:>9.2f} Mbps{c:>9.2f} Mbps{c/a:>13.1f}x")

ผลรันจริง

 hop       1 ช่อง       2 ช่อง       3 ช่อง  3 ช่องได้เพิ่ม
   2    10.00 Mbps    10.00 Mbps    20.00 Mbps          2.0x
   3     6.67 Mbps    10.00 Mbps    20.00 Mbps          3.0x
   4     6.67 Mbps    10.00 Mbps    20.00 Mbps          3.0x
   6     6.67 Mbps    10.00 Mbps    20.00 Mbps          3.0x
  10     6.67 Mbps    10.00 Mbps    20.00 Mbps          3.0x

สองอย่างที่ควรจ้องในตารางนี้

หนึ่ง — สามช่องคลื่นทำให้เพดานหายไปเลย คอลัมน์สุดท้ายได้ 20 Mbps เท่ากับ single-hop ทุกความยาวโซ่ เพราะระยะเว้นที่ต้องการหดจากสามเหลือหนึ่ง ⇒ ไม่มี hop คู่ไหนต้องรอใครอีก

สอง — และนี่คือข้อที่ต่างจากบทที่แล้วอย่างสิ้นเชิง ตัวคูณไม่จางลงเมื่อโซ่ยาวขึ้น ที่ 10 hop ก็ยังได้ 3 เท่าเท่ากับที่ 3 hop · เทียบกับบทที่ 10 ที่ไม่ว่าจะปรับ routing เก่งแค่ไหนก็ติด 6.67 Mbps อยู่อย่างนั้น

การเพิ่มช่องคลื่นซื้อความจุกลับมาได้ตรง ๆ ซึ่งไม่มีอัลกอริทึม routing ตัวไหนทำได้ — และมันคือความต่างระหว่าง "เลือกของที่มีให้ดีที่สุด" กับ "เปลี่ยนว่ามีอะไรให้เลือก"

⚠️ ตัวเลขชุดนี้เป็นเพดานเชิงอุดมคติแบบเดียวกับบทที่ 10 ของจริงต่ำกว่านี้ เพราะการสลับคลื่นมีต้นทุนเวลาของมันเอง และ 802.11 เองก็จัดคิวได้ไม่ดีอยู่แล้วตามที่เปเปอร์ในบทที่แล้ววัดไว้ · ใช้ตารางนี้เปรียบเทียบ สัดส่วน ไม่ใช่เอาไปวางแผนความจุจริง

11.3 ทำไมมันถึงไม่ใช่แค่ "ใส่วิทยุเพิ่ม"

ถ้ามันง่ายขนาดนั้น ทุกคนคงทำกันหมดแล้ว ความยากย้ายที่ไป ไม่ได้หายไป

หนึ่ง — ต้องมีใครสักคนตัดสินว่า hop ไหนใช้คลื่นไหน และการตัดสินนั้นต้องสอดคล้องกันทั้งเครือข่าย ถ้า B ตั้งใจส่งให้ C ด้วยคลื่น 2 แต่ C ไปฟังคลื่น 3 อยู่ ก็ไม่มีการสื่อสารเกิดขึ้นเลย นี่คือปัญหาการจัดสรรทรัพยากรที่ยากกว่า Dijkstra มาก เพราะคำตอบที่ดีที่สุดของโหนดหนึ่งขึ้นกับคำตอบของเพื่อนบ้าน ซึ่งขึ้นกับคำตอบของเพื่อนบ้านของเพื่อนบ้านอีกที

สอง — คลื่นแต่ละย่านมีบุคลิกไม่เหมือนกัน ย้อนกลับไปดูตัวเลขบทที่ 2: ที่งบกำลังเท่ากัน 900 MHz ไปได้ 26 กม. ส่วน 5800 MHz ไปได้ 4 กม. ⇒ การสลับ hop หนึ่งไปใช้ย่านสูงอาจแปลว่าลิงก์นั้นขาดไปเลย ไม่ใช่แค่เร็วขึ้น การเลือกคลื่นจึงเปลี่ยนโครงสร้างของกราฟที่ Dijkstra ทำงานอยู่ — คุณกำลังเลือกเส้นทางบนแผนที่ที่เปลี่ยนรูปตามการเลือกของตัวเอง

สาม — จำนวนช่องที่ใช้ได้จริงน้อยกว่าที่กฎหมายอนุญาต เพราะช่องที่อยู่ติดกันเกินไปยังรบกวนกันอยู่ และบางย่านมีคนอื่นใช้อยู่ก่อนแล้ว

11.4 ทำไมบทนี้ถึงเป็นจุดพีค

ย้อนกลับไปดูสิ่งที่เล่มนี้บอกไว้ตั้งแต่บทที่ 2: "ไม่มีความถี่ไหนดีที่สุด มีแต่ความถี่ที่เหมาะกับงานคนละแบบ"

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

เครือข่ายที่วิ่งคลื่นเดียวต้องเลือกว่าจะไกลหรือจะเร็ว เครือข่ายหลายคลื่นไม่ต้องเลือก — และนั่นคือคำตอบสุดท้ายของปริศนาข้อที่สามที่ปลูกไว้ในบทที่ 4

Read the full book