AWDL://CRSE MODULE 00 / 07 TOPIC 802.11 · MAC STATUS FOUNDATION SIGNAL_LIVE
// MODULE_00 FOUNDATIONS PREREQ_FOR_ALL

الأساسيات:
IEEE 802.11 وطبقة MAC.

حجر الأساس. كل قيد ستراه لاحقاً — لماذا نحتاج active monitor، لماذا الـ ACK يجب أن يأتي من العتاد، لماذا القفز بين القنوات حسّاس للتوقيت — ينبع مباشرةً من تفاصيل هذه الوحدة. لا تتجاوزها.

لماذا الاتصال المباشر بين الأجهزة صعب أصلاً؟

شبكات Wi-Fi التقليدية تعمل بنمط البنية التحتية (Infrastructure mode): كل الأجهزة (Stations / STA) تتصل عبر نقطة وصول مركزية (Access Point / AP). الـ AP هو «المنسّق»: يحدّد القناة، يوزّع التوقيت عبر إطار الـ Beacon، ويعرف من المتصل (Association). هذا يبسّط كل شيء لأن هناك مرجع زمني ومكاني واحد.

الاتصال المباشر (peer-to-peer) بين جهازين بدون AP يفقد هذا المنسّق المركزي، فيظهر سؤالان جوهريان لا بد من حلّهما:

PROBLEM_01

التزامن (Synchronization)

إذا كان كل جهاز سيقفز بين قنوات متعددة (وهو ما يفعله AWDL)، فكيف يضمن جهازان أنهما على نفس القناة في نفس اللحظة؟ بدون ساعة مشتركة، سيتحدّثان في الفراغ.

PROBLEM_02

التنسيق (Coordination)

من يتكلم متى؟ في غياب AP، يجب أن تتفق الأجهزة على قواعد للوصول للوسط (الهواء) دون أن تتصادم إشاراتهم.

البروتوكولات المختلفة تحلّ هاتين المشكلتين بطرق مختلفة:

البروتوكولالجهةآلية التزامن/التنسيقملاحظة
AWDLApple (خاص)Master election + Availability Windows + channel hopping متزامنDRILL_TARGET
Wi-Fi Direct (P2P)Wi-Fi Allianceأحد الأجهزة يصير «Group Owner» يلعب دور AP افتراضيقياسي مفتوح
Wi-Fi Aware (NAN)Wi-Fi Allianceعناقيد (clusters) متزامنة بإطارات discovery دوريةيستخدمه Android
IBSS / Ad-hocIEEE 802.11كل الأجهزة تتشارك BSSID وتولّد Beacons بالتناوبقديم/نادر
BLEBluetooth SIGإعلانات دورية على 3 قنواتللاكتشاف لا للنقل الثقيل
// MENTAL_MODEL

AWDL لا يخترع طبقة فيزيائية جديدة. هو طبقة منطقية فوق 802.11 العادي، يعيد استخدام نفس الإطارات والـ PHY، لكنه يفرض جدول قفز قنوات ونظام توقيت خاصاً به. لذلك فهم 802.11 = فهم AWDL.

معمارية 802.11: الطبقات المعنية

نتعامل مع طبقتين فقط في هذه الدورة:

تنقسم MAC إلى وظيفتين تاريخياً:

تشريح إطار 802.11

كل ما يطير في الهواء هو إطار من أحد ثلاثة أصناف رئيسية. معرفة أيّ صنف نحقن وأيّ صنف نلتقط = جوهر المحاكاة.

FIG_0.3a802.11 MAC FRAME ANATOMY
IEEE 802.11 MAC FRAME (general) 2 2 6 6 6 2 6 0–2312 4 bytes Frame Control Duration / ID Addr 1 RA Addr 2 TA Addr 3 BSSID Seq Ctrl [Addr 4] opt Frame Body payload / mgmt info FCS CRC-32 FRAME CONTROL (zoom) Type 2 bits Subtype 4 bits flags: ToDS · FromDS · Retry · PowerMgt · MoreData · ... 10 bits TYPE values: 00 = Management (Beacon, Probe, Action) 01 = Control (RTS, CTS, ACK) 10 = Data (QoS-Data ← AWDL payload)
التركيب العام لإطار 802.11. اللون الأخضر يبرز الحقول الحيوية لـ AWDL؛ الأحمر يبرز Frame Control.

الأصناف الثلاثة بالتفصيل

① Management frames (Type=00)

لإدارة الاتصال والاكتشاف.

② Control frames (Type=01)

إطارات قصيرة جداً تنظّم تدفّق البيانات.

③ Data frames (Type=10)

تحمل الحمولة الفعلية (IP، UDP، TCP...).

دلالة العناوين الثلاثة

نظام العنونة في 802.11 يربك المبتدئين لأنه يستخدم 3 عناوين (وأحياناً 4). تفسيرها يعتمد على بِتّي ToDS/FromDS. للحالة الشائعة في الاتصال المباشر (لا توجد DS / شبكة سلكية خلفية):

// AWDL_SIGNATURE

في AWDL تحديداً، الـ BSSID قيمة ثابتة محجوزة 00:25:00:FF:94:73 لكل إطارات AWDL. هذا «التوقيع» يجعل التعرّف على حركة AWDL في ملف التقاط سهلاً جداً — فلتر بسيط: wlan.bssid == 00:25:00:ff:94:73.

آلية الوصول للوسط: CSMA/CA و DCF

الهواء وسط مشترك؛ لو أرسل جهازان معاً، تتصادم الإشارتان وتُفقدان. الإيثرنت السلكي يكتشف التصادم (Collision Detection). الراديو لا يستطيع السماع أثناء الإرسال، فيلجأ 802.11 لـ تجنّب التصادم (Collision Avoidance) عبر CSMA/CA:

FIG_0.4aCSMA/CA — TRANSMISSION CYCLE
t → DIFS channel idle backoff random slot countdown DATA FRAME from STA-A → STA-B SIFS 16 µs HW-only ACK B → A DIFS backoff… ① sense → ② wait DIFS → ③ random backoff → ④ TX frame → ⑤ wait SIFS → ⑥ RX ACK if no ACK arrives → assume loss → retransmit with doubled CW
دورة إرسال كاملة في DCF: لاحظ فجوة الـ SIFS الضيقة جداً بين الإطار والـ ACK. هذه الفجوة هي مفتاح كل شيء.
  1. Carrier Sense: قبل الإرسال، استمع للقناة.
  2. إن كانت مشغولة → انتظر حتى تفرغ.
  3. إن كانت فارغة لمدة فاصل زمني محدّد (DIFS) → ابدأ Backoff عشوائياً: اختر رقماً عشوائياً ضمن نافذة التنافس (Contention Window / CW) وعُدّ تنازلياً، وأرسل عند الوصول للصفر.
  4. بعد الإرسال الناجح، ينتظر المرسل ACK من المستقبل. لا ACK = افتراض فقدان = إعادة إرسال مع مضاعفة CW (binary exponential backoff).
// CRITICAL_CONSEQUENCE

النقطة 4 قاتلة: إذا أرسل لك جهاز Apple إطاراً وأنت (المحاكي) لم تردّ بـ ACK خلال المهلة، سيظن أن الإطار ضاع، يعيد إرساله عدة مرات، ثم يعتبرك غير موجود (unreachable) ويتجاهلك. لهذا «الاستماع فقط» (passive monitor) لا يكفي للمشاركة الحقيقية في الشبكة.

المسافات بين الإطارات (IFS) — قلب معضلة التوقيت

الفجوات الزمنية بين الإطارات ليست عشوائية؛ هي مُعرّفة بدقّة وتُنشئ نظام أولويات. من الأقصر (الأعلى أولوية) للأطول:

الفاصلالمدة (5 GHz OFDM)الغرض
SIFS (Short IFS)16 µsأقصر فجوة؛ بين الإطار والـ ACK المقابل له، وبين RTS/CTS
SIFS (2.4 GHz / 802.11b)10 µsنفس الغرض بترميز أقدم
PIFSSIFS + slotأولوية متوسطة (PCF)
DIFSSIFS + 2 × slotالفجوة قبل بدء التنافس في DCF
AIFSمتغيّر حسب فئة QoSنسخة DCF الواعية بجودة الخدمة

قاعدة SIFS — الجملة الواحدة التي تحكم الدورة كلها

عندما تستقبل محطة إطاراً موجّهاً إليها ويمرّ سليماً (FCS صحيح)، يجب أن تبدأ إرسال الـ ACK بالضبط بعد SIFS — أي 16 ميكروثانية في 5 GHz. ليس 20، وليس 50.

FIG_0.5aTHE 16µs BUDGET — WHY CPU CAN'T DO IT
end of incoming frame SIFS BUDGET = 16 µs FCS check ~1 µs addr match ~1 µs RX→TX RF switch ~5 µs build ACK ~2 µs TX start ≤16 µs CPU interrupt + DMA + scheduler = 50–200 µs → overshoots SIFS by 10–50× → ACK never makes it in time ∴ ACK generation MUST live in chip firmware, not in your code.
ميزانية الـ 16 ميكروثانية ومراحلها. زمن المقاطعة وحده يحرق الميزانية مرتين قبل أن تتحرّك حلقة برمجية واحدة.

ميزانية الـ 16 ميكروثانية يجب أن تتّسع لكل هذا:

[نهاية استقبال الإطار] ├─ فحص FCS والتأكد من سلامة الإطار ├─ مطابقة عنوان الوجهة مع عنواني (هل ACK مطلوب؟) ├─ تبديل سلسلة الراديو RX → TX (يأكل ميكروثانيات وحده) ├─ بناء إطار ACK └─ بدء البثّ [يجب أن يكتمل البدء قبل 16 µs]

لماذا يستحيل على CPU عام تحقيق هذا؟

// IRON_LAW

توليد الـ ACK بتوقيت SIFS لا بد أن يحدث داخل firmware / MAC processor الشريحة. لا يمكن لأي ترقيع في الـ driver أن يضيف هذه القدرة إن لم تكن آلات الحالة والمؤقتات موجودة في السيليكون نفسه.

النطاقات والقنوات والمجالات التنظيمية

2.4 GHz

قنوات 1–14 (متاحة جزئياً حسب البلد)، مزدحمة وبطيئة. AWDL يستخدمه ثانوياً.

5 GHz

قنوات كثيرة (36، 40، 44، 48، 149، 153، …)، أعرض وأسرع. AWDL يفضّل 5 GHz لأداء أعلى.

root@recon: ~ · regulatory domain
# تحقّق من المجال الحالي
$ iw reg get
country US: DFS-FCC
        (2402 - 2472 @ 40), (N/A, 30), (N/A)
        (5170 - 5250 @ 80), (N/A, 23), (N/A), AUTO-BW
        ...

# بدّله إن لزم (يتطلّب CRDA)
$ sudo iw reg set US

نقاط ارتكاز الوحدة 0

  • AWDL = منطق فوق 802.11، وليس PHY جديداً → إتقان 802.11 شرط.
  • الإطارات 3 أصناف: Management (ومنها Action = جسد AWDL)، Control (ومنها ACK = عقدة المشكلة)، Data (ومنها QoS-Data = ناقل بيانات AWDL).
  • BSSID ثابت لـ AWDL: 00:25:00:FF:94:73.
  • CSMA/CA يفرض أن غياب ACK = «الجهاز غير موجود».
  • SIFS ≈ 16 µs قيد عتادي صارم يحكم كل قرارات اختيار العتاد لاحقاً.

تمارين الوحدة 0

  1. ارسم مخطط تسلسل (sequence diagram) لتبادل إطار Data واحد ناجح يتضمّن DIFS، Backoff، الإطار، SIFS، ثم ACK.
  2. لماذا لا يصلح أسلوب «Collision Detection» للراديو؟ اشرح فيزيائياً.
  3. افتح ملف pcap لأي حركة Wi-Fi (متوفر أمثلة كثيرة) في Wireshark وطبّق الفلتر wlan.fc.type == 1 ثم wlan.fc.type_subtype == 0x1d. ماذا ترى؟ كم حجم إطار الـ ACK؟