เหตุใดการสื่อสารไร้สาย UDP Broadcast ของฉันจึงถูก จำกัด ที่ 1MB


10

ฉันกำลังพยายามใช้การเข้ารหัสเครือข่ายผ่านเครือข่ายแบบตาข่าย ดังนั้นฉันต้องส่งแพ็คเก็ตไปยังจุดหมายปลายทางหลายแห่งนี่คือวิธีที่ฉันใช้แพ็กเก็ตออกอากาศ แต่ฉันไม่สามารถเข้าใจได้ว่าทำไมสิ่งนี้ถึงถูก จำกัด ที่ ~ 990KB

มีการกำหนดค่าที่ต้องทำบ้างไหม?


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

4
@ytti สำหรับฉันนี้ไม่ได้ดูเหมือนคำถาม dev แต่มันอยู่ในใจของฉันอย่างชัดเจนคำถามพื้นฐาน 802.11 แต่เดี๋ยวก่อนฉันอาจจะผิด (และเป็นภรรยาของฉันชี้ให้เห็นมักจะ)
YLearn

โปรดเพิ่ม: การกำหนดค่าที่เกี่ยวข้อง, ข้อมูล HW / เฟิร์มแวร์และอาจเป็นไดอะแกรมหรือไม่
Mike Pennington

คำตอบ:


11

ใน 802.11 แบบไร้สาย (ซึ่งฉันถือว่าเป็นกรณีของคุณ), โดยทั่วไปแล้วเฟรมคาสต์ / มัลติแคสต์ (รวมถึงเฟรมการจัดการจำนวนมาก) จะถูกส่งที่อัตราข้อมูลพื้นฐาน / พื้นฐาน / ต่ำสุดที่ต้องการ สิ่งนี้แยกจากอัตราข้อมูลที่รองรับ

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

ผู้ขายบางรายยังรวมการแปลง multicast-to-unicast เพื่อติดตามไคลเอนต์ multicast ด้วย multicast snooping บางรูปแบบ แต่ฉันรู้ว่าไม่มีวิธีที่คล้ายกันสำหรับการออกอากาศ (อุปกรณ์ไร้สายไม่สามารถรู้ไคลเอ็นต์ทั้งหมดที่อาจจำเป็นต้องใช้ ในการเข้าถึง).

หากคุณกำลังพูดถึงเครือข่าย ad-hoc mesh บ่อยครั้งที่คุณไม่สามารถควบคุมสิ่งนี้ได้ในการตั้งค่าไดรเวอร์


7

อัตรามัลติคาสต์จะต้องเป็นตัวหารร่วมที่ต่ำที่สุดเพื่อให้อุปกรณ์ทั้งหมดสามารถรับได้สำเร็จ ไม่สามารถยอมรับเฟรมแบบหลายผู้รับ [1] ดังนั้นหากเพียร์ล้มเหลวในการรับเฟรมผู้ส่งจะไม่ทราบและจะไม่ส่งเฟรมอีกครั้ง การมีอัตราการสูญเสียมากกว่า 1% ต่อผู้รับเป็นเรื่องปกติ อัตราการสูญเสียที่สูงขึ้นสามารถคาดหวังได้หากมีการรับส่งข้อมูลแบบ unicast จำนวนมากที่เกิดขึ้นในช่องทางเดียวกัน

หากคุณเพิ่มอัตรามัลติคาสต์พื้นฐานคุณจะเพิ่มอัตราการสูญเสียด้วย แต่เนื่องจากคุณต้องรวมแพ็กเก็ตดั้งเดิมและแนะนำความซ้ำซ้อนเพื่อชดเชยอัตราการสูญเสียที่แท้จริงเครือข่ายของคุณจะสามารถอยู่รอดได้ โปรดทราบว่าเฟรมการจัดการ multicast 802.11 (รวมถึงบีคอน) ไม่ได้ออกแบบมาเพื่อรองรับอัตราการสูญเสียสูง

บน Linux ไดรเวอร์ mac802.11 ส่วนใหญ่ควรรองรับการตั้งค่าอัตราแบบหลายผู้รับ เมล็ดที่เพิ่งผ่านมาไม่จำเป็นต้องทำสิ่งนี้ในเวลาเข้าร่วมสำหรับทั้ง IBSS และตาข่าย iwมีmcast-rateตัวเลือกสำหรับibss joinและmesh joinคำสั่ง

แต่ถ้าคุณบังเอิญใช้เคอร์เนลล่าสุดและiwสนับสนุนทั้งคู่NL80211_CMD_SET_MCAST_RATEคุณก็สามารถเปลี่ยนเคอร์เนลได้ตลอดเวลาและมันก็ง่ายเหมือน

iw dev wlanX set mcast_rate 6

เพื่อตั้งค่าอัตรามัลติคาสต์ 6Mbps

[1] บางทีตอนนี้พวกเขาสามารถทำได้ มีการเสนอแก้ไขมาตรฐาน 802.11 เพื่อรับทราบเฟรมมัลติคาสต์: ทุกสถานีหลังจากรับเฟรมมัลติคาสต์ได้สำเร็จจะเลือกแบ็คออฟสุ่มและส่ง ack ไปยังตัวส่ง Acks สามารถชนกันได้แน่นอนดังนั้นตัวส่งสัญญาณจะส่งสัญญาณใหม่และอนุญาตให้มีการถอยกลับที่ใหญ่กว่าจนกว่าตัวรับสัญญาณทั้งหมดจะยอมรับเฟรมได้สำเร็จ


1

เป็นไปได้จริงที่จะปรับเปลี่ยนอัตราบิตโดยบังคับใช้อัตราบนการ์ดไร้สาย บน Linux คำสั่งคือ:

sudo iwconfig wlan0 อัตรา 11 ล


3
iwconfigล้าสมัยแล้ว ioctls ทั้งหมดที่ใช้จะถูกแฮ็กหรือปลอมทั้งหมดหรือแม้กระทั่งไม่มีตัวเลือก อย่างไรก็ตามสิ่งที่คำสั่งเฉพาะนี้ทำนั้นน่ากลัว และไม่ใช่สิ่งที่คุณต้องการ: สิ่งนี้ จำกัด อัตราที่มีอยู่ แต่ไม่ได้แก้ไขในทางใดทางหนึ่ง และฉันไม่แน่ใจด้วยซ้ำว่าการตั้งค่านี้จะอยู่ได้นานในกรณีของ IBSS
BatchyX

2
แม้ว่าจะให้เอฟเฟ็กต์การอนุญาตให้ออกอากาศของคุณเกิน 1Mbps แต่ก็ไม่ใช่คำตอบที่ถูกต้องสำหรับคำถามที่ถูกวางซึ่งโดยพื้นฐานแล้ว "ทำไมการออกอากาศแบบไร้สายถึงที่ 1MB?" สิ่งที่คุณทำคือบอกให้ระบบไร้สายทำงานที่อัตราข้อมูลเดียวและต้องมีอัตราข้อมูลพื้นฐาน / ขั้นพื้นฐาน / อย่างน้อยหนึ่งอย่าง ในขณะที่คุณได้รับการออกอากาศที่สูงขึ้นคุณจะสูญเสียความสามารถในการลดอัตราการรับส่งข้อมูล (เพื่อรักษาการเชื่อมต่อที่ดีเมื่อสัญญาณอ่อนกว่า) หรือเพื่อเพิ่มอัตราการรับส่งข้อมูล ในสาระสำคัญนี่เป็นการแก้ไขด่วนที่ไม่เหมาะกับโลกแห่งความจริง
YLearn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.