Binary Exponential Backoff & ALOHA
สองครึ่งของข้อนี้ตอบคนละคำถาม — ครึ่งแรกถาม "ชนแล้วรอเท่าไร" (ช่วงสุ่มขยายเป็น 2 เท่าทุกรอบ) ครึ่งหลังถาม "ยิงมากแล้วได้มากไหม" (ไม่ได้ — กราฟเป็นโค้งคว่ำ)
ครึ่ง A เป็นการสุ่ม ดังนั้นอาจารย์ไม่มีทาง "เฉลย" ค่าที่สุ่มได้ — สิ่งที่ตรวจคือ ช่วงที่สุ่มของแต่ละรอบถูกไหม (2K − 1), คูณ Tslot หรือเปล่า และ อธิบายได้ไหมว่าทำไมช่วงต้องขยาย · ครึ่ง B เป็นกราฟที่มีจุดสูงสุด 2 จุดที่ต้องเขียนตัวเลขกำกับ — (0.5, 0.184) และ (1, 0.368) · กราฟที่ไม่มีตัวเลขกำกับ = ได้ครึ่งเดียว
โจทย์จริงจากข้อสอบปีที่แล้ว
Q12
A. จงแสดงการชนกันของสถานี 3 สถานี (A, B, C) โดยไล่ backoff 4–5 รอบ ว่าแต่ละรอบสุ่มจากช่วงไหน และใครส่งได้ก่อน
| รอบที่ (K) | ช่วงที่สุ่มค่า c |
|---|---|
| 1 | c ∈ {0, 1} |
| 2 | c ∈ {0, 1, 2, 3} |
| 3 | c ∈ {0, …, 7} |
| 4 | c ∈ {0, …, 15} |
โดย 0 ≤ C ≤ 2K − 1 และ TB = C × Tp (Backoff time = เวลาที่ใช้รอหลังตรวจพบ Collision)
B. วาดกราฟ throughput เทียบกับ G (ภาระโหลด) ของ ALOHA
คิดยังไง (แนวคิดใน 30 วินาที)
ครึ่ง A — Backoff คือ "การกระจายตัวออกจากกัน"
ปัญหาคือ ถ้าทุกคนส่งใหม่พร้อมกันก็ชนซ้ำตลอดกาล · ทางแก้คือให้แต่ละคนสุ่มเวลารอคนละค่า และยิ่งชนบ่อยยิ่งขยายช่วงสุ่ม เพื่อให้โอกาสชนซ้ำลดลงแบบทวีคูณ
ท่ามาตรฐาน: ① เขียนช่วงสุ่มของแต่ละรอบ ② สุ่มค่าให้ 3 สถานี ③ คนที่ได้ค่าน้อยที่สุดคนเดียวได้ส่งก่อน ④ ถ้าน้อยสุดซ้ำกัน → ชนซ้ำ → K+1 → ช่วงกว้างเป็น 2 เท่า ⑤ ทุกค่าต้องคูณ Tslot
ครึ่ง B — ALOHA คือ "ยิ่งยิงยิ่งเสีย"
กราฟที่ต้องวาดคือ โค้งคว่ำ 2 เส้น ที่ทั้งคู่ขึ้นแล้วตก · ตกเพราะเมื่อ G สูง แพ็กเก็ตชนกันเองจนไม่มีอะไรรอด
ท่ามาตรฐาน: ① แกน x = G, แกน y = S ② เขียนสูตรทั้งสองข้างกราฟ ③ จุดยอด Pure ที่ (0.5, 0.184) และ Slotted ที่ (1, 0.368) ④ ระบุว่า slotted สูงเป็น 2 เท่าของ pure
สูตร/ขั้นตอนที่ต้องใช้
{0, 1, …, 2K−1} · K = จำนวนครั้งที่สถานีนั้นชน (ครั้งแรก K = 1) · Tp = ความยาว 1 สล็อต (Ethernet 10 Mbps = 51.2 µs)
| สัญลักษณ์ | ความหมาย | หน่วย / ค่า |
|---|---|---|
K | จำนวนครั้งที่สถานีพยายามส่งแล้วชน (เริ่มนับ 1 ที่การชนครั้งแรก) | ครั้ง · สูงสุด 16 แล้วทิ้งเฟรม |
c | ค่าสุ่มจำนวนสล็อตที่ต้องรอ | จำนวนเต็ม 0 ถึง 2K − 1 |
Tslot | ความยาว 1 สล็อต · Ethernet 10 Mbps = 51.2 µs (512 bit times) | วินาที |
TB | เวลารอจริงก่อนลองส่งใหม่ | วินาที |
G | Offered load — ทราฟฟิกที่ยิงลงสายจริง รวมของที่ส่งซ้ำ | ไม่มีหน่วย (normalized) |
S | Throughput — สัดส่วนที่รอดถึงปลายทาง | ไม่มีหน่วย · S ≤ G เสมอ |
ครึ่ง A — Backoff ของ 3 สถานี
ตาราง 2K − 1 ทุกรอบ (ตารางนี้คือคำตอบครึ่งหนึ่งของข้อ A)
| รอบที่ (K) | ขอบเขต 2K − 1 | เซตของค่า c | มีกี่ค่า | เวลารอต่ำสุด – สูงสุด (Tslot = 51.2 µs) | โอกาสที่ 2 สถานีได้ค่าเท่ากัน |
|---|---|---|---|---|---|
| 1 | 21 − 1 = 1 | {0, 1} | 2 | 0 – 51.2 µs | 1/2 = 50% |
| 2 | 22 − 1 = 3 | {0, 1, 2, 3} | 4 | 0 – 153.6 µs | 1/4 = 25% |
| 3 | 23 − 1 = 7 | {0, …, 7} | 8 | 0 – 358.4 µs | 1/8 = 12.5% |
| 4 | 24 − 1 = 15 | {0, …, 15} | 16 | 0 – 768 µs | 1/16 = 6.25% |
| 5 | 25 − 1 = 31 | {0, …, 31} | 32 | 0 – 1,587.2 µs | 1/32 = 3.125% |
| … ชนครบ 16 ครั้ง (K > 15 ในผังงานรูปที่ 13.11) → ทิ้งเฟรม (discard) + แจ้ง error ขึ้นเลเยอร์บน | |||||
มาตรฐานจริงเรียกว่า truncated binary exponential backoff — รอบที่ 11 ถึง 16 ยังสุ่มจาก {0 … 1023} เท่าเดิม (ไม่ขยายต่อ) แล้วจึงยกเลิกเมื่อครบ 16 ครั้ง · ถ้าข้อสอบไม่บอกอะไรเพิ่ม ให้ตอบตามสูตร 2K − 1 ตรง ๆ ตามที่หนังสือและผังงานรูปที่ 13.11 เขียนไว้
จำลองการชนของ A, B, C — กดสุ่มใหม่ได้เรื่อย ๆ
ภาพนี้สุ่มจริงทุกครั้งที่กดปุ่ม — ลองกดหลาย ๆ ที จะเห็นว่าบางครั้งจบใน 2 รอบ บางครั้งลากไป 4–5 รอบ นั่นแหละคือคำตอบที่ถูกต้องของข้อนี้: ไม่มีคำตอบตายตัว มีแต่กติกาที่ตายตัว
ตารางคำตอบตามเฉลย — A กับ B ชนกัน 4 รอบ แล้ว C เข้ามาในรอบที่ 4
นี่คือตารางที่ต้องลอกลงกระดาษ · จุดที่กินคะแนนคือ C เพิ่งชนครั้งแรกในรอบที่ 4 ⇒ KC = 1 ไม่ใช่ 4 — K เป็นของใครของมัน ไม่ได้แชร์กัน
| รอบชน | โหนดที่ชนกัน | K (หลังเพิ่ม) | ช่วงสุ่ม {0, …, 2K−1} | ค่า C ที่สุ่มได้ | TB = C × Tp | ผลลัพธ์ |
|---|---|---|---|---|---|---|
| 1 | A, B | KA = 1 · KB = 1 | {0, 1} | CA = 1 · CB = 1 | 1Tp · 1Tp | เท่ากัน → ชนซ้ำ |
| 2 | A, B | KA = 2 · KB = 2 | {0, 1, 2, 3} | CA = 3 · CB = 3 | 3Tp · 3Tp | เท่ากัน → ชนซ้ำ |
| 3 | A, B | KA = 3 · KB = 3 | {0, …, 7} | CA = 6 · CB = 6 | 6Tp · 6Tp | เท่ากัน → ชนซ้ำ |
| 4 | A, B, C (C เข้ามาใหม่) | KA = 4 · KB = 4 · KC = 1 (ครั้งแรกของ C) | A, B: {0, …, 15}C: {0, 1} |
CA = 11 · CB = 4 · CC = 1 | 11Tp · 4Tp · 1Tp | ค่าไม่ซ้ำกันเลย → ไม่ชนอีก |
ทั้งสามค่า 1, 4, 11 ไม่ซ้ำกันเลย ⇒ ไม่เกิดการชนอีก · ลำดับที่ได้ส่งเรียงตามค่า C จากน้อยไปมาก: C (รอ 1Tp) → B (รอ 4Tp) → A (รอ 11Tp) · สังเกตว่า C ที่เพิ่งเข้ามาใหม่กลับได้ส่งก่อน เพราะช่วงสุ่มของมันแคบที่สุด ({0,1}) — นี่คือความไม่เป็นธรรมของ binary exponential backoff (capture effect) ที่ควรเขียนปิดท้ายถ้ามีเวลา
ค่าที่สุ่มได้เป็นเพียงตัวอย่างตามเฉลย — ในกระดาษให้เขียนกำกับว่า "สมมติสุ่มได้ …" แล้วเดินตามกติกาให้ถูกต้อง อาจารย์ตรวจที่ช่วงสุ่ม 0 ≤ C ≤ 2K−1 และการคูณ TB = C × Tp ไม่ใช่ที่ตัวเลขสุ่ม
เห็นเป็นเส้นเวลา — ใครรอเท่าไร ใครได้ส่งก่อน
ครึ่ง B — กราฟ Throughput ของ ALOHA
เลื่อนสไลเดอร์ G เพื่ออ่านค่า S จริงของทั้งสองเส้น · สังเกตว่าหลังจุดยอด ยิ่งยิงยิ่งได้น้อย
- แกน x เขียนว่า
G(offered load / ภาระโหลด) · แกน y เขียนว่าS(throughput) - เส้นโค้งคว่ำ 2 เส้น — เส้นหนึ่งเตี้ยและยอดอยู่ซ้าย (Pure) อีกเส้นสูงกว่าและยอดอยู่ขวา (Slotted)
- เขียนสูตรกำกับเส้น:
S = Ge−2GและS = Ge−G - จุดยอดพร้อมตัวเลข: Pure ที่
(G = 0.5, S = 0.184)· Slotted ที่(G = 1, S = 0.368) - ลากเส้นประจากจุดยอดลงแกน x และไปแกน y ให้เห็นว่าอ่านค่ายังไง
- เขียน 18.4% และ 36.8% กำกับ พร้อมประโยคเดียวว่า "slotted ดีกว่า pure 2 เท่า เพราะช่วงเสี่ยงลดจาก 2Tp เหลือ Tp"
Pure: S = Ge−2G → dS/dG = e−2G(1 − 2G) = 0 → G = 0.5 → S = 0.5·e−1 = 1/2e = 0.184
Pure ALOHA: เฟรมของ A จะพังถ้ามีใครเริ่มส่งก่อน A ไม่ถึง Tp (ท้ายเขาทับหัวเรา) หรือ เริ่มหลัง A แต่ก่อน A จะส่งจบ (หัวเขาทับท้ายเรา) → ช่วงอันตรายกว้าง 2Tp
Slotted ALOHA: บังคับให้เริ่มส่งได้เฉพาะที่ขอบสล็อต กรณี "เริ่มก่อนนิดหน่อย" จึงหายไปหมด เหลือแค่ "เลือกสล็อตเดียวกัน" → ช่วงอันตรายเหลือ Tp → เลขชี้กำลังจึงเป็น −G ไม่ใช่ −2G
กับดักที่ทำให้เสียคะแนน
คำตอบผิดที่เจอจริง: "รอบที่ 3 สุ่มจาก {0, …, 8}" — ต้องเป็น {0, …, 7} · เนื้อความในหนังสือพิมพ์เป็น 0 ≤ c ≤ 2K แต่ผังงานรูปที่ 13.11 เขียนชัดว่า "สุ่มค่า C ระหว่าง 0 ถึง 2K − 1" ซึ่งตรงกับ IEEE 802.3 และตรงกับที่โจทย์ให้มาในตาราง (รอบ 1 = {0,1} มี 2 ค่า ไม่ใช่ 3 ค่า) · วิธีตรวจเร็ว: จำนวนค่าต้องเป็น 2, 4, 8, 16 — เลขยกกำลังสองสวย ๆ ถ้านับได้ 3, 5, 9 แสดงว่าผิด
คำตอบผิดที่เจอจริง: "A ต้องรอ 5" — 5 อะไร? · c คือจำนวนสล็อต ไม่ใช่เวลา · เวลาจริงคือ TB = c × Tslot เช่น 5 × 51.2 µs = 256 µs · โจทย์เขียนสูตร TB = c × Tslot มาให้แล้ว การไม่ใช้มันคือการทิ้งคะแนนฟรี · ถ้าโจทย์ไม่ให้ค่า Tslot ก็ให้ตอบเป็นสัญลักษณ์ 5Tslot ก็ยังได้คะแนน
ในตารางเฉลย C เข้ามาชนครั้งแรกตอนรอบที่ 4 · คำตอบผิดที่เจอจริงคือเขียนว่า "รอบที่ 4 ทุกคนสุ่มจาก {0, …, 15}" — ผิด · K นับ "จำนวนครั้งที่สถานีนั้น ๆ ชน" ⇒ A กับ B ชนมาแล้ว 4 ครั้ง จึงได้ K = 4 → {0, …, 15} ส่วน C เพิ่งชนครั้งแรก จึงได้ KC = 1 → {0, 1} · วิธีกันพลาด: เขียนคอลัมน์ K แยกเป็น KA, KB, KC ในตารางเสมอ แล้วจะไม่มีทางสับสน · ผลพลอยได้คือได้อธิบาย capture effect ว่าสถานีมาใหม่มักได้เปรียบ
c = 0 แปลว่า รอ 0 สล็อต คือส่งทันที — และนี่คือสาเหตุที่รอบที่ 1 ชนซ้ำได้ง่ายมาก เพราะช่วงมีแค่ 2 ค่า โอกาสที่สองสถานีได้ 0 เหมือนกัน (หรือ 1 เหมือนกัน) สูงถึง 50% · ในการจำลอง 3 สถานี โอกาสที่รอบที่ 1 จะจบเรียบร้อย (มีคนได้ค่าน้อยสุดคนเดียว) มีแค่ 3/8 = 37.5% เท่านั้น
กราฟ ALOHA ต้องเป็นโค้งคว่ำที่ตกลงจนเกือบเป็นศูนย์ ไม่ใช่เส้นที่ขึ้นแล้วแบนราบ (แบบนั้นคือกราฟ throughput ของระบบที่ไม่มีการชน) · เหตุผล: G ที่สูงแปลว่าทุกคนแย่งกันยิง → ชนกันหมด → S ตกลง · ถ้าวาดเส้นแบน อาจารย์รู้ทันทีว่าไม่เข้าใจว่าทำไม ALOHA ถึงมีประสิทธิภาพแค่ 18%
จำผิดเป็น S = Ge−G สำหรับ pure จะได้ค่าสูงสุด 0.368 ซึ่งผิด · จำคู่กันไว้: pure เสี่ยง 2Tp → เลขชี้กำลัง −2G → ยอดที่ G = 0.5 ได้ S = 0.184 · ทุกอย่างของ pure คือครึ่งหนึ่งของ slotted (0.5 กับ 1 · 0.184 กับ 0.368) จำท่อนนี้ท่อนเดียวก็ไม่มีทางสลับ
เขียนยังไงให้ได้คะแนนเต็ม
ครึ่ง A — เช็กลิสต์
- เขียนกติกาก่อน: "ชนครั้งที่ K → สุ่ม C จาก
0 ≤ C ≤ 2K−1→ รอTB = C × Tp" - ตารางรอบชนครบ 4 รอบ โดยมีคอลัมน์: รอบชน · โหนดที่ชนกัน · K แยกรายสถานี · ช่วงสุ่ม · ค่า C · TB = C×Tp · ผลลัพธ์
- เขียน "สมมติสุ่มได้ …" แล้วไล่ทีละรอบว่าใครชนะ ใครชนซ้ำ
- ทุกรอบให้เขียน TB = C × Tp ของทุกสถานี (เช่น 11Tp, 4Tp, 1Tp) — ถ้าโจทย์ให้ Tp = 51.2 µs ก็คูณออกมาเป็น µs ด้วย
- วาดเส้นเวลา 3 เส้น (A, B, C) แสดงจุดชนที่ t = 0, jam, ช่วงรอ และช่วงส่งสำเร็จ
- ปิดท้ายด้วยประโยค: "ช่วงสุ่มขยาย 2 เท่าทุกรอบ ทำให้โอกาสชนซ้ำลดจาก 1/2 → 1/4 → 1/8 → 1/16" และ "รอบที่ 4 ค่า 11, 4, 1 ไม่ซ้ำกันเลย จึงไม่เกิดการชนอีก"
- เขียนเงื่อนไขจบ: ชนครบ 16 ครั้ง → ทิ้งเฟรม แจ้ง error
ครึ่ง B — เช็กลิสต์
- แกน x = G · แกน y = S (เขียนคำเต็มกำกับด้วย)
- สเกลแกน y ถึง 0.4 ก็พอ (ไม่ต้องถึง 1) เพราะยอดสูงสุดแค่ 0.368
- เส้น Pure: ยอดที่ (0.5, 0.184)
- เส้น Slotted: ยอดที่ (1, 0.368)
- เขียนสูตรกำกับแต่ละเส้น
- เขียน 18.4% / 36.8% และประโยค "slotted = 2 เท่าของ pure"
- ถ้ามีที่ว่าง เขียนวิธีหาจุดยอดด้วยอนุพันธ์ — ได้คะแนนเพิ่มแทบทุกครั้ง
โจทย์ฝึก 5 ข้อ
ไล่จากง่ายไปยากกว่าของจริงเล็กน้อย · ทุกตัวเลขคำนวณจริง ตรวจซ้ำได้
ข้อ 1 ง่าย — Ethernet 10 Mbps มี Tslot = 51.2 µs
(ก) สถานีชนไปแล้ว 3 ครั้ง และสุ่มได้ c = 5 ต้องรอนานเท่าไร
(ข) สถานีชนไปแล้ว 4 ครั้ง และสุ่มได้ c = 12 ต้องรอนานเท่าไร
(ค) ถ้ามีคนตอบว่า "K = 4 สุ่มได้ c = 20" ให้วิจารณ์
เฉลยข้อ 1
(ก) K = 3 → ช่วงสุ่มคือ {0, 1, …, 2³−1} = {0, …, 7} · c = 5 อยู่ในช่วง ✓
(ข) K = 4 → ช่วง {0, …, 15} · c = 12 อยู่ในช่วง ✓
(ค) K = 4 ให้ช่วงสุ่ม {0, …, 15} ซึ่งสูงสุดคือ 15 · c = 20 จึงเป็นไปไม่ได้ — ต้องชนอย่างน้อย K = 5 ({0, …, 31}) ถึงจะมีโอกาสสุ่มได้ 20 · นี่คือคำถามที่ข้อสอบชอบใช้ดักว่าเข้าใจขอบเขต 2K − 1 จริงหรือแค่ท่องสูตร
ข้อ 2 ง่าย–กลาง — สถานี 2 ตัวชนกัน
(ก) เขียนช่วงสุ่มของรอบที่ 1 ถึง 6 พร้อมจำนวนค่าในแต่ละรอบ
(ข) โอกาสที่ทั้งสองจะสุ่มได้ค่าเท่ากัน (ชนซ้ำ) ในแต่ละรอบเป็นเท่าใด
(ค) ถ้าชนต่อเนื่องจนถึงรอบที่ 16 จะเกิดอะไรขึ้น และเวลารอสูงสุดในรอบที่ 10 เป็นเท่าไร (Tslot = 51.2 µs)
เฉลยข้อ 2
(ก) และ (ข)
| รอบ K | ช่วง {0 … 2K−1} | จำนวนค่า 2K | P(ค่าเท่ากัน) = 1/2K |
|---|---|---|---|
| 1 | {0, 1} | 2 | 1/2 = 50% |
| 2 | {0 … 3} | 4 | 1/4 = 25% |
| 3 | {0 … 7} | 8 | 1/8 = 12.5% |
| 4 | {0 … 15} | 16 | 1/16 = 6.25% |
| 5 | {0 … 31} | 32 | 1/32 = 3.125% |
| 6 | {0 … 63} | 64 | 1/64 ≈ 1.56% |
ที่มาของ 1/2K: สถานีแรกสุ่มได้อะไรก็ได้ (ไม่สำคัญ) สถานีที่สองต้องสุ่มได้ค่าเดียวกันพอดี ซึ่งมีโอกาส 1 ใน 2K
(ค) ชนครบ 16 ครั้ง → สถานีทิ้งเฟรมนั้น (discard) และแจ้ง error ขึ้นไปเลเยอร์บน (ในผังงานรูปที่ 13.11 คือเงื่อนไข K > 15)
เวลารอสูงสุดในรอบที่ 10: ช่วงสุ่มคือ {0 … 2¹⁰−1} = {0 … 1023}
ลองเทียบดู — 52 มิลลิวินาที นานกว่าเวลาส่งเฟรม 1500 ไบต์ที่ 10 Mbps (1.2 ms) ถึง 43 เท่า · นี่คือเหตุผลที่ IEEE 802.3 หยุดขยายช่วงที่ K = 10 (truncated backoff) ไม่งั้นรอบที่ 16 จะรอกันเป็นวินาที
ข้อ 3 กลาง — ช่องสัญญาณ 1 Mbps ส่งเฟรมขนาด 1000 บิต (ดังนั้นความจุเชิงทฤษฎี = 1000 เฟรม/วินาที)
จงหา throughput เป็น เฟรม/วินาที ของทั้ง Pure และ Slotted ALOHA ที่ (ก) G = 0.5 (ข) G = 1.0 (ค) G = 2.0 · แล้วสรุปว่าแต่ละแบบควรคุม G ไว้ที่เท่าไร
เฉลยข้อ 3
ขั้นที่ 1 — แทนค่าในสูตร (S เป็นสัดส่วน ต้องคูณ 1000 เฟรม/วินาทีเพื่อได้จำนวนเฟรมจริง)
| G | Pure: S = Ge−2G | เฟรม/วินาที | Slotted: S = Ge−G | เฟรม/วินาที |
|---|---|---|---|---|
| 0.5 | 0.5 × e−1 = 0.1839 ← ยอด | 183.9 | 0.5 × e−0.5 = 0.3033 | 303.3 |
| 1.0 | 1 × e−2 = 0.1353 | 135.3 | 1 × e−1 = 0.3679 ← ยอด | 367.9 |
| 2.0 | 2 × e−4 = 0.0366 | 36.6 | 2 × e−2 = 0.2707 | 270.7 |
ขั้นที่ 2 — อ่านผล
- Pure ALOHA ควรคุม G ไว้ที่ 0.5 ได้ 183.9 เฟรม/วินาที (18.4% ของความจุ) · ถ้ายิงเป็น 2 เท่า (G = 1) กลับได้น้อยลงเหลือ 135.3 และถ้ายิง 4 เท่า (G = 2) เหลือแค่ 36.6 — ยิ่งยิงยิ่งเสีย
- Slotted ALOHA ควรคุม G ไว้ที่ 1 ได้ 367.9 เฟรม/วินาที (36.8%) · ทนโหลดเกินได้ดีกว่า pure มาก (ที่ G = 2 ยังได้ 270.7)
- ที่จุดยอดของแต่ละแบบ slotted ได้เป็น 2 เท่าของ pure พอดี (367.9 ≈ 2 × 183.9) ✓ ตรงกับทฤษฎี
ข้อ 4 กลาง
(ก) พิสูจน์ด้วยอนุพันธ์ว่า Slotted ALOHA มี S สูงสุดที่ G = 1 และ Pure ที่ G = 0.5
(ข) ที่จุดสูงสุดนั้น โดยเฉลี่ยต้องยิงกี่ครั้งต่อเฟรมที่ส่งสำเร็จ 1 เฟรม
(ค) ระบบมี 100 สถานี แต่ละสถานีส่งเฉลี่ย 1 เฟรมทุก 2 วินาที เฟรมละ 1000 บิต ช่องสัญญาณ 100 kbps · จงหา G และ throughput จริง (เฟรม/วินาที) ของ Pure ALOHA
เฉลยข้อ 4
(ก) พิสูจน์ — ใช้กฎผลคูณ d/dG [G·e−aG] = e−aG + G·(−a)e−aG = e−aG(1 − aG)
Smax = 1 · e−1 = 1/e = 0.3679
Pure (a = 2): dS/dG = e−2G(1 − 2G) = 0 → 1 − 2G = 0 → G = 0.5
Smax = 0.5 · e−1 = 1/2e = 0.1839
(ข) จำนวนครั้งที่ต้องยิงต่อ 1 เฟรมสำเร็จ = G / S (ยิงไปเท่าไร ÷ รอดเท่าไร)
Slotted: G/S = eG · ที่ G = 1 → e1 = 2.718 ครั้ง
ผลลัพธ์ที่สวยงาม: ที่จุดสูงสุด ทั้งสองแบบต้องยิงเฉลี่ย e ≈ 2.72 ครั้งต่อเฟรมที่รอด 1 เฟรมเท่ากันพอดี — ต่างกันตรงที่ slotted ทำแบบนั้นได้ที่โหลดสูงกว่า 2 เท่า จึงได้ throughput 2 เท่า
(ค) แทนค่าจริง
G = λT · Lp / R = (50 × 1000) / 100,000 = 0.5
S = G·e−2G = 0.5 × e−1 = 0.1839
throughput จริง = S × (R / Lp) = 0.1839 × 100 = 18.39 เฟรม/วินาที
อ่านผล: ยิงลงสาย 50 เฟรม/วินาที แต่รอดแค่ 18.4 เฟรม/วินาที — เสียไป 63% เพราะการชน · และนี่คือจุดที่ดีที่สุดแล้ว ถ้าเพิ่มสถานีเป็น 200 ตัว (G = 1) จะเหลือแค่ 13.5 เฟรม/วินาที — เพิ่มคน แต่ได้งานน้อยลง
ข้อ 5 ยากกว่าของจริง — สถานี A, B, C ชนกันที่ t = 0 บน Ethernet 10 Mbps (Tslot = 51.2 µs) สมมติค่าที่สุ่มได้เป็นดังนี้
รอบ 1: A = 1, B = 0, C = 0 · รอบ 2: A = 2, B = 3, C = 1 · รอบ 3: A = 5, B = 5 · รอบ 4: A = 11, B = 3 · รอบ 5: A = 7
(ก) ไล่ทีละรอบว่าเกิดอะไรขึ้น ใครได้ส่งเมื่อไร และ TB ของแต่ละคนเป็นเท่าไร
(ข) A ต้องรอรวมกี่ไมโครวินาที (นับเฉพาะเวลา backoff)
(ค) โอกาสที่รอบที่ 1 จะจบเรียบร้อย (มีผู้ชนะคนเดียว) สำหรับ 3 สถานีเป็นเท่าใด · แล้วรอบที่ 2 ล่ะ
เฉลยข้อ 5
(ก) ไล่ทีละรอบ — กติกา: ใครได้ค่าน้อยที่สุดคนเดียวได้ส่งก่อน ถ้าค่าน้อยสุดซ้ำกัน = ชนซ้ำ K เพิ่ม 1 ช่วงสุ่มกว้างเป็น 2 เท่า
| รอบ K | ช่วงสุ่ม | ค่าที่ได้ | ค่าน้อยสุด | ผล | TB ของผู้ชนะ |
|---|---|---|---|---|---|
| 1 | {0, 1} | A=1 · B=0 · C=0 | 0 (B และ C) | ชนซ้ำ — น้อยสุดไม่ unique | — |
| 2 | {0 … 3} | A=2 · B=3 · C=1 | 1 (C คนเดียว) | C ส่งสำเร็จ ออกจากการแข่ง | 1 × 51.2 = 51.2 µs |
| 3 | {0 … 7} | A=5 · B=5 | 5 (ทั้งคู่) | ชนซ้ำ | — |
| 4 | {0 … 15} | A=11 · B=3 | 3 (B คนเดียว) | B ส่งสำเร็จ | 3 × 51.2 = 153.6 µs |
| 5 | {0 … 31} | A=7 | 7 | เหลือคนเดียว A ส่งสำเร็จ | 7 × 51.2 = 358.4 µs |
ลำดับที่ได้ส่ง: C → B → A · สังเกตว่า C ซึ่งสุ่มได้ 0 ในรอบแรก (เร็วที่สุด) กลับต้องรอถึงรอบ 2 เพราะดันไปชนกับ B ที่ได้ 0 เหมือนกัน — ค่าน้อยไม่ได้แปลว่าชนะ ต้องน้อยแบบไม่ซ้ำใครเท่านั้น
(ข) เวลารอรวมของ A — A ผ่านทุกรอบ จึงต้องรอ backoff ทุกครั้งที่สุ่มได้ (รอบที่ตนแพ้ก็ยังต้องรอครบตามค่าที่สุ่มก่อนจะรู้ว่าสายไม่ว่าง)
TB,รวม = 26 × 51.2 µs = 1,331.2 µs ≈ 1.33 ms
เทียบให้เห็นภาพ: เวลาส่งเฟรม 1500 ไบต์ที่ 10 Mbps = 1.2 ms — แปลว่า A เสียเวลารอนานกว่าเวลาส่งจริงของตัวเอง นี่คือราคาของการแย่งช่องสัญญาณ
(ค) โอกาสที่รอบหนึ่งจะจบเรียบร้อย (3 สถานี) — ต้องมีสถานีเดียวที่ได้ค่าต่ำสุด
แบบที่มีผู้ชนะคนเดียว = "มีคนได้ 0 พอดี 1 คน อีก 2 คนได้ 1" = 3 แบบ (เลือกว่าใครได้ 0)
(ถ้าได้ 0 สองคนขึ้นไป → ชน · ถ้าได้ 1 ทั้งสามคน → ชน)
⟹ P = 3/8 = 37.5% · โอกาสชนซ้ำสูงถึง 62.5%
รอบ 2 ช่วง {0 … 3} มี 4 ค่า → ผลลัพธ์ 4³ = 64 แบบ
นับตามค่าต่ำสุด m: จำนวนแบบ = 3 × (จำนวนค่าที่มากกว่า m)²
m = 0 → 3 × 3² = 27 · m = 1 → 3 × 2² = 12 · m = 2 → 3 × 1² = 3 · m = 3 → 0
รวม = 42 แบบ ⟹ P = 42/64 = 65.6%
บทเรียน: โอกาสจบเรียบร้อยพุ่งจาก 37.5% → 65.6% → (รอบ 3) 82.0% → (รอบ 4) 90.8% เพียงเพราะช่วงสุ่มกว้างขึ้นเป็น 2 เท่าทุกรอบ — นี่คือเหตุผลทั้งหมดที่อัลกอริทึมนี้ชื่อว่า exponential backoff และเป็นประโยคปิดท้ายที่ควรเขียนในข้อสอบ
เช็คความเข้าใจ
{0, 1, …, 2K − 1} = {0, …, 31} · มี 25 = 32 ค่า (เพราะนับ 0 ด้วย) แต่ค่ามากที่สุดคือ 31 · สองตัวเลขนี้ต่างกัน 1 เสมอ ซึ่งเป็นจุดที่คนสับสนบ่อยที่สุด — จำนวนค่า = 2K · ค่าสูงสุด = 2K − 1S = G·e−2G = 1 × e−2 = 0.1353 · จุดยอดของ pure อยู่ที่ G = 0.5 (S = 0.184) ส่วน G = 1 เป็นจุดยอดของ slotted เท่านั้น · ที่ G = 1 pure จึงเลยยอดมาแล้วและกำลังตกลง — ยิงเป็น 2 เท่าแต่ได้น้อยลง 26% นี่คือใจความทั้งหมดของกราฟข้อ Bc = 0 เหมือนกัน จะเกิดอะไรขึ้น?c = 0 แปลว่า "รอ 0 สล็อต = ส่งทันที" ดังนั้นสองสถานีที่ได้ 0 เหมือนกันจะส่งพร้อมกันและชนซ้ำ · ผลคือ K ของทั้งคู่เพิ่มเป็น 2 และช่วงสุ่มขยายเป็น {0, 1, 2, 3} ทำให้โอกาสชนซ้ำลดจาก 1/2 เหลือ 1/4 · ไม่มีการใช้ MAC address ตัดสิน (นั่นคือ STP ไม่ใช่ CSMA/CD) และการชนซ้ำก็ไม่ได้ทำให้ทิ้งเฟรม — จะทิ้งก็ต่อเมื่อชนครบ 16 ครั้ง0 ≤ C ≤ 2K − 1— จำนวนค่า = 2K (2, 4, 8, 16) แต่ค่าสูงสุด = 2K − 1- TB = C × Tp — ห้ามตอบ C เปล่า ๆ · Ethernet 10 Mbps: Tp = 51.2 µs
- ตารางเฉลย 4 รอบ: รอบ 1–3 A กับ B ได้ค่าเท่ากัน (1,1 → 3,3 → 6,6) ชนซ้ำตลอด · รอบ 4 C เข้ามาใหม่ (KC = 1) ได้ 11, 4, 1 ไม่ซ้ำกัน → จบ
- K เป็นของแต่ละสถานี ไม่ใช่ของระบบ — สถานีที่เพิ่งชนครั้งแรกได้
K = 1เสมอ - ชนซ้ำเมื่อค่าน้อยสุดซ้ำกัน ·
c = 0= ส่งทันที ไม่ใช่ไม่ส่ง · ชนครบ 16 ครั้ง → ทิ้งเฟรม + แจ้ง error - Pure: S = Ge−2G → ยอด (0.5, 0.184) = 18.4% · Slotted: S = Ge−G → ยอด (1, 0.368) = 36.8%
- กราฟต้องเป็นโค้งคว่ำที่ตกลง พร้อมตัวเลขกำกับจุดยอดทั้งสอง — ไม่มีตัวเลข = ได้ครึ่งเดียว
- เลข 2 ใน
e−2Gมาจากช่วงเสี่ยง 2Tp ของ pure ALOHA