Network Fundamental สายและคลื่น
เพดานของช่องสัญญาณ — ตัวเลขที่ข้ามไม่ได้
ปี 1948 มีคนพิสูจน์ว่าช่องสัญญาณทุกช่องมีเพดานที่คำนวณได้จากความกว้างกับเสียงรบกวน และไม่มีวิธีเข้ารหัสใดข้ามมันได้
· หมวด 2 · สายและคลื่น · 8 นาที
บทความ ชั้นกายภาพ จบด้วยความจริงที่ว่าสายเป็นของอนาล็อก มีเสียงรบกวน และมีระยะจำกัด
คำถามที่ตามมาคือ แล้วสายเส้นหนึ่งส่งข้อมูลได้เร็วที่สุดเท่าไหร่
คนส่วนใหญ่คิดว่าคำตอบขึ้นกับว่าวิศวกรเก่งแค่ไหน — เข้ารหัสฉลาดขึ้น บีบอัดดีขึ้น ก็เร็วขึ้นเรื่อย ๆ
ไม่ใช่ ปี 1948 Claude Shannon พิสูจน์ว่ามีเพดานที่คำนวณได้จากสองอย่างเท่านั้น คือความกว้างของช่องกับอัตราส่วนสัญญาณต่อเสียงรบกวน และไม่มีวิธีเข้ารหัสใด ๆ ในจักรวาลนี้ข้ามมันได้
บทความนี้จะคำนวณเพดานนั้นให้ดู แล้วเทียบกับความเร็วที่วัดได้จริงจาก Wi-Fi ของเครื่องที่ใช้เขียน
ถ้ายังไม่เคยคิดเรื่องนี้ เริ่มตรงนี้
สูตรทั้งหมดมีบรรทัดเดียว และคำนวณได้ในหัวถ้าคุ้นกับ log ฐานสอง
$ python3 -c "
import math
B, snr_db = 80e6, 28
print(B * math.log2(1 + 10**(snr_db/10)) / 1e6, 'Mbps')"
ได้ 744.3 Mbps — นั่นคือเพดานทางทฤษฎีของลิงก์ Wi-Fi ที่เครื่องนี้ต่ออยู่ ซึ่งกว้าง 80 MHz และมี SNR 28 dB ตามที่บทความ Wi-Fi วัดไว้
ความเร็วที่วัดได้จริงคือ 390 Mbps หรือราวครึ่งหนึ่งของเพดาน และนั่นคือ ประสิทธิภาพที่ดีมากแล้ว
Nyquist — ความกว้างกำหนดว่าเปลี่ยนค่าได้กี่ครั้งต่อวินาที
ก่อน Shannon ยี่สิบสี่ปี Harry Nyquist ที่ Bell Labs ตอบคำถามที่ง่ายกว่า — ถ้าไม่มีเสียงรบกวนเลย ส่งได้เร็วแค่ไหน
คำตอบคือช่องที่กว้าง B เฮิรตซ์ เปลี่ยนค่าสัญญาณได้ 2B ครั้งต่อวินาที เร็วกว่านั้นแล้วปลายทางแยกไม่ออกว่าเปลี่ยนกี่ครั้ง
ทางเดียวที่จะได้บิตมากขึ้นโดยไม่เพิ่มความกว้าง คือใส่ข้อมูลหลายบิตในหนึ่ง สัญลักษณ์ ด้วยการใช้หลายระดับ
levels bits/symbol 3100 Hz -> kbps
2 1 6.2
4 2 12.4
16 4 24.8
256 8 49.6
ถ้าไม่มีเสียงรบกวน เพิ่มระดับไปเรื่อย ๆ ก็ได้เร็วไม่จำกัด ซึ่งฟังดูดีเกินจริง และมันก็เกินจริง
Shannon — เสียงรบกวนกำหนดว่าใช้ได้กี่ระดับ
Claude Shannon ตีพิมพ์ A Mathematical Theory of Communication ในวารสารของ Bell Labs เมื่อกรกฎาคมและตุลาคม 1948 และในนั้นมีทฤษฎีบทที่ 17
"Theorem 17: The capacity of a channel of band W perturbed by white thermal noise power N when the average transmitter power is limited to P is given by C = W log (P+N)/N"
เขียนในรูปที่คุ้นตากว่าคือ
C = B x log2(1 + S/N)
โดย B คือความกว้างเป็นเฮิรตซ์ และ S/N คืออัตราส่วนกำลังสัญญาณต่อเสียง รบกวน ซึ่งมักเขียนเป็นเดซิเบล
สิ่งที่ทฤษฎีบทนี้พูดจริง ๆ คือมีเส้นที่ข้ามไม่ได้ ไม่ใช่ว่ายังไม่มีใครทำได้ แต่ว่าทำไม่ได้ ไม่ว่าจะฉลาดแค่ไหน
สังเกตรูปแบบของสูตร — B อยู่นอก log ส่วน S/N อยู่ใน log
เพิ่มความกว้างช่องสองเท่า เพดานเพิ่มสองเท่าตรง ๆ
เพิ่มกำลังส่งสองเท่า เพดานเพิ่มขึ้นนิดเดียว
นี่คือเหตุผลที่ Wi-Fi รุ่นใหม่ไล่เพิ่มความกว้างช่องจาก 20 เป็น 40 เป็น 80 เป็น 160 MHz แทนที่จะเพิ่มกำลังส่ง การเพิ่มกำลังให้ผลตอบแทนที่ลดลงเรื่อย ๆ และยังไปรบกวนคนอื่นด้วย
ประกอบสองอย่างเข้าด้วยกัน
Nyquist บอกว่าเปลี่ยนค่าได้กี่ครั้ง Shannon บอกว่าแต่ละครั้งแยกออกได้กี่ระดับ เอามาต่อกันได้ตัวเลขที่ใช้จริง
SNR ceiling levels usable
20 dB 20.6 kbps 10.0
30 dB 30.9 kbps 31.6
40 dB 41.2 kbps 100.0
ตัวเลขในคอลัมน์ขวาคือคำตอบว่าทำไมโมเด็มถึงไปได้แค่นั้น สายโทรศัพท์กว้างราว 3100 Hz และมี SNR ราว 30 dB ซึ่งแปลว่าแยกได้ราว 32 ระดับ และเพดานอยู่ที่ ราว 31 kbps
แล้วโมเด็ม 56k ทำได้ยังไง
โมเด็มอนาล็อกที่เร็วที่สุดในยุคนั้นคือ 33.6 kbps ซึ่งใกล้เพดานที่คำนวณได้มาก และนั่นไม่ใช่ความบังเอิญ
แล้ว 56k ที่โฆษณากันล่ะ
คำตอบคือ มันไม่ได้วิ่งบนช่องอนาล็อกทั้งเส้น ในยุคนั้นชุมสายโทรศัพท์เป็น ดิจิทัลอยู่แล้ว ฝั่งผู้ให้บริการจึงป้อนค่าดิจิทัลเข้าไปตรง ๆ ขาลงจึงไม่ต้อง ผ่านการแปลงอนาล็อกเป็นดิจิทัลที่เพิ่มเสียงรบกวน ส่วนขาขึ้นยังผ่านการแปลงนั้น อยู่ จึงยังติดเพดานเดิมที่ราว 33.6 kbps
56k จึงไม่ได้ชนะ Shannon มันแค่เปลี่ยนช่องสัญญาณ ซึ่งเป็นสิ่งเดียวที่ทำได้
สิ่งที่ยังไม่ได้พิสูจน์ — คำอธิบายเรื่องขาลงกับขาขึ้นนี้ผมยังไม่ได้ยืนยัน จากเอกสารกำหนดของ V.90 เอง เพราะเอกสารของ ITU-T ตอนที่เขียนบทความนี้ดาวน์โหลด ไม่ได้ สิ่งที่ยืนยันได้คือเพดาน 31 kbps ที่คำนวณจากทฤษฎีบทของ Shannon และ ความจริงที่ว่าอัตรา 56k ไม่สมมาตร
เทียบกับ Wi-Fi ที่วัดได้จริง
ทฤษฎีจะน่าสนใจก็ต่อเมื่อเอาไปเทียบกับของจริงได้ ผมเอาค่าที่วัดจากเครื่องนี้ ในบทความ Wi-Fi มาเข้าสูตร
situation B SNR ceiling
measured link 80 MHz 28 dB 744.3 Mbps
crowded room 80 MHz 15 dB 402.2 Mbps
far from the AP 80 MHz 5 dB 164.6 Mbps
อัตราที่วัดได้จริงคือ 390 Mbps เทียบกับเพดาน 744 Mbps คือราว 52%
ตัวเลขนี้ไม่ได้แปลว่าอุปกรณ์ห่วย มันแปลว่าราคาที่จ่ายไปกับส่วนหัว การตอบรับ ทุกเฟรม การเว้นช่วงระหว่างส่ง และการเผื่อความผิดพลาด รวมกันแล้วกินไปครึ่งหนึ่ง ของสิ่งที่ฟิสิกส์อนุญาต
และแถวที่สองอธิบายเรื่องที่บทความ Wi-Fi วัดได้ — เมื่อ SNR ตกจาก 28 เหลือ 15 เพดานหายไปเกือบครึ่ง ทั้งที่ขีดสัญญาณบนหน้าจออาจไม่เปลี่ยนเลย
เมื่อมันโกหก
"เข้ารหัสให้ฉลาดกว่านี้ก็เร็วขึ้นได้" ไม่ได้ ถ้าถึงเพดานแล้ว ทฤษฎีบทที่ 17 บอกว่าเพดานนั้นเป็นสมบัติของช่องสัญญาณ ไม่ใช่ของวิธีเข้ารหัส
"บีบอัดข้อมูลแล้วผ่านช่องได้มากขึ้น" จริง แต่คนละเรื่อง การบีบอัดลดจำนวนบิต ที่ต้องส่ง ไม่ได้เพิ่มความจุของช่อง และข้อมูลที่บีบอัดมาแล้วจะบีบซ้ำได้น้อยมาก
"เพิ่มกำลังส่งแล้วเร็วขึ้นมาก" เพิ่มได้ แต่เป็นลอการิทึม จาก SNR 28 เป็น 31 dB คือเพิ่มกำลังสองเท่า ได้เพดานเพิ่มราว 10% เท่านั้น
"สายไฟเบอร์ไม่มีเพดาน" มีเหมือนกัน แค่ B ใหญ่กว่ามหาศาลจนเพดานอยู่ไกล เกินกว่าอุปกรณ์ปัจจุบันจะไปถึง
"ตัวเลขบนกล่องคือความเร็วจริง" ตัวเลขนั้นเป็นอัตราบิตบนสื่อ ซึ่งอยู่ใต้ เพดานของ Shannon อยู่แล้ว และยังต้องหักค่าโสหุ้ยของทุกชั้นออกอีกตามที่บทความ ชั้นของโปรโตคอล คำนวณไว้
ตัวอย่างจริงจากงานจริง
กรณีที่ 1 — ประเมินว่าลิงก์นี้ยังพอมีที่เหลือไหม
สถานการณ์ ลิงก์ไร้สายช้าลง ต้องตัดสินใจว่าจะแก้ที่สัญญาณหรือที่อื่น
คำสั่ง อ่าน SNR แล้วเข้าสูตร
$ python3 -c "
import math
B, snr = 80e6, 28
print(round(B*math.log2(1+10**(snr/10))/1e6,1), 'Mbps ceiling')"
อ่านอย่างไร ถ้าอัตราที่ได้จริงต่ำกว่าเพดานมาก ปัญหาไม่ได้อยู่ที่สัญญาณ แต่อยู่ที่การแย่งเวลาออกอากาศหรือค่าโสหุ้ย การย้ายเข้าใกล้จะไม่ช่วย ถ้าอัตรา ที่ได้จริงใกล้เพดานแล้ว การจะเร็วขึ้นต้องเพิ่มความกว้างช่องหรือลดเสียงรบกวน
สิ่งที่ยังไม่ได้พิสูจน์ ค่า SNR ที่เครื่องรายงานเป็นค่าที่ไดรเวอร์เลือกจะ บอก และวัดที่ฝั่งเราเท่านั้น เพดานที่คำนวณจึงเป็นค่าประมาณ ไม่ใช่ค่าที่วัดได้ โดยตรง
กรณีที่ 2 — อธิบายว่าทำไมเพิ่มกำลังส่งไม่ช่วย
สถานการณ์ มีคนเสนอให้เพิ่มกำลังส่งของจุดกระจายสัญญาณ
อ่านอย่างไร ให้ดูตำแหน่งของตัวแปรในสูตร B อยู่นอก log จึงให้ผลเป็น เส้นตรง ส่วน S/N อยู่ใน log จึงให้ผลลดลงเรื่อย ๆ การเพิ่มกำลังสองเท่าที่ SNR สูงอยู่แล้วแทบไม่ได้อะไร และยังทำให้เพื่อนบ้านมีเสียงรบกวนสูงขึ้นด้วย ซึ่งลด SNR ของทุกคนรวมทั้งของเราเอง
สิ่งที่ยังไม่ได้พิสูจน์ ข้อสรุปนี้ใช้กับกรณีที่ SNR ดีอยู่แล้ว ถ้าจุดที่ มีปัญหาคือมุมที่สัญญาณอ่อนมากจริง ๆ การเพิ่มกำลังอาจช่วยได้ ต้องวัด SNR ที่ จุดนั้นก่อน ไม่ใช่ที่จุดกระจาย
กรณีที่ 3 — ตัดสินว่าตัวเลขในใบเสนอราคาเป็นไปได้ไหม
สถานการณ์ ผู้ขายเสนออุปกรณ์ที่อ้างความเร็วสูงมากบนช่องแคบ
อ่านอย่างไร เอาความกว้างช่องกับ SNR ที่เป็นไปได้จริงมาเข้าสูตร ถ้าตัวเลข ที่อ้างสูงกว่าเพดาน แปลว่าต้องมีอะไรที่ไม่ตรงกับที่เข้าใจ — อาจนับรวมหลาย ช่องพร้อมกัน อาจเป็นอัตราหลังบีบอัด หรืออาจเป็นผลรวมของหลายเสาอากาศ
สิ่งที่ยังไม่ได้พิสูจน์ เพดานที่คำนวณได้ตัดสินว่าอะไรเป็นไปไม่ได้ แต่ ไม่ได้ตัดสินว่าอะไรเป็นไปได้จริง อุปกรณ์ที่อยู่ใต้เพดานอาจยังทำไม่ได้ด้วย เหตุผลอื่นอีกหลายอย่าง
เมื่อเพดานยังไม่ใช่ปัญหา
ในงานจริงส่วนใหญ่ ลิงก์ไม่ได้ชนเพดานของ Shannon ตัวเลขที่วัดได้ข้างบนอยู่ที่ ครึ่งเดียว และสิ่งที่กินอีกครึ่งคือค่าโสหุ้ยกับการแย่งกันใช้สื่อ ซึ่งเป็น ปัญหาทางวิศวกรรมที่แก้ได้
เพดานมีค่าตรงที่มันบอกว่า เมื่อไหร่ควรเลิกพยายามแก้ที่เดิม ถ้าคำนวณแล้ว พบว่าอยู่ที่ 90% ของเพดาน การไล่หาการตั้งค่าที่ดีกว่าไม่คุ้มแล้ว ต้องไปเปลี่ยน ช่องสัญญาณแทน
อ้างอิง
ต้นฉบับ
- Shannon, C. E., A Mathematical Theory of Communication Bell System Technical Journal เล่ม 27 กรกฎาคมและตุลาคม 1948 — ทฤษฎีบทที่ 17 ที่ยกมาอ้างในบทความนี้อยู่ในเอกสารฉบับนี้
- เอกสารของ Nyquist ที่ Shannon อ้างถึงในเชิงอรรถแรกของตัวเอง คือ Certain Factors Affecting Telegraph Speed ปี 1924 และ Telegraph Transmission Theory ปี 1928
คำนวณเอง
- ตารางเพดานทุกตารางในบทความนี้คำนวณจากสูตร
C = B log2(1 + S/N)โดยตรง - ค่าความกว้างช่อง 80 MHz และ SNR 28 dB มาจากการวัดในบทความ Wi-Fi บนเครื่องเดียวกัน