ข้อสอบเก่า · Q13

CSMA/CD — Collision Window ที่ 10 Mbps

ข้อที่รวมทุกอย่างของครึ่งหลังไว้ในข้อเดียว — คำนวณ delay สองตัว แล้ววาดให้เห็นว่าทำไมสองสถานีที่ "ฟังสายก่อนส่ง" แล้วยังชนกันได้ · ตัวเลขที่ต้องได้คือ t_prop = 4 µs และ t_x = 40 ms จุดที่ชนกันจริงคือ t = 3.5 µs ที่ระยะ x = 700 m จาก A และเวลาที่ทั้งคู่รู้ตัวว่าชนคือ 4 µs กับ 7 µs

ระดับยาก (มีทั้งคำนวณและวาดรูป) ควรใช้ ~20 นาที 6 คะแนน (2 + 4) อ่านคู่กับ บทที่ 13 (CSMA/CD) กฎ 64 ไบต์: บทที่ 14 สูตร delay: Q4
ทำไมข้อนี้ยากกว่าที่คิด

ครึ่งแรก (2 คะแนน) เป็นการแทนสูตรธรรมดา ใครก็ทำได้ · ครึ่งหลัง (4 คะแนน) ต่างหากที่คนตกกันเยอะ เพราะโจทย์สั่งว่า "แสดงเวลาที่ใช้ทั้งหมด ระบุเวลาที่ชัดเจน" ⇒ ต้องเขียนเวลา 4 µs (C รู้ว่าชน) และ 7 µs (A รู้ว่าชน) ให้ถูก · ตัวเลข 7 µs คือจุดที่แยกคนได้ 4 คะแนนออกจากคนได้ 2 คะแนน

โจทย์จริงจากข้อสอบปีที่แล้ว

Q13 (20 นาที)

สมมติให้การสื่อสารที่ความเร็ว 10 Mbps ระหว่าง A กับ C โดยระยะทางระหว่าง A กับ C อยู่ที่ 800 เมตร โดยมีค่า propagation speed อยู่ที่ 2×10⁸ m/s โดยขนาดของข้อมูลที่ส่งมีขนาด 50000 byte

a. ระบุค่า transmission delay และ propagation delay การส่งข้อมูลจาก A ไปยัง C ในรูป (2 คะแนน)

b. สมมติให้ A เริ่มส่งที่ t₁ = 0; และ C เริ่มส่งที่ t₂ = 3 micro-sec โดยการส่งข้อมูลขนาด 50000 bytes เท่ากัน แสดงรูปแบบการส่งบน CSMA แสดงเวลาที่ใช้ทั้งหมด ระบุเวลาที่ชัดเจน (4 คะแนน)

คิดยังไง (แนวคิดใน 30 วินาที)

คำถามที่แท้จริงของข้อนี้คือ: "C ฟังสายก่อนส่งแล้วนี่ ทำไมยังชนได้?" — คำตอบอยู่ในตัวเลขเดียว

tprop = 4 µs   แต่   C เริ่มส่งที่ 3 µs สัญญาณของ A ยังเดินทางไปไม่ถึง C ⇒ C "ได้ยิน" ว่าสายว่าง ทั้งที่ A ส่งอยู่แล้ว

① ฟังสายไม่ได้แปลว่าปลอดภัย

การ sense บอกได้แค่ "ณ จุดที่ฉันยืน ตอนนี้เงียบ" ไม่ได้บอกว่า "ทั้งสายเงียบ" · ข้อมูลในบทที่ 13 ระบุตรง ๆ ว่า B เข้าใจว่าส่งได้ เนื่องจากสัญญาณจาก A ยังมาไม่ถึงจุดที่ B ตรวจสอบ

② สองฝ่ายรู้ตัวคนละเวลา

C รู้ก่อน (ที่ 4 µs — ตอนสัญญาณ A มาถึง) · A รู้ทีหลัง (ที่ 7 µs — สัญญาณ C ออกตอน 3 µs แล้วใช้เวลาเดินทางอีก 4 µs) · ข้อสอบต้องการตัวเลขทั้งสองนี้

③ ช่วงอันตราย = 2 × tprop

กรณีเลวร้ายที่สุดคือ C เริ่มส่งก่อนสัญญาณ A มาถึงเสี้ยววินาที ⇒ A จะรู้ว่าชนช้าที่สุดที่ ≈ 2tprop · นี่คือที่มาของกฎเฟรมต่ำสุด 64 ไบต์ของอีเทอร์เน็ต

สูตร/ขั้นตอนที่ต้องใช้

tprop = dv   ·   tx = L (บิต)R = 8 × L (ไบต์)R สองสูตรนี้ตอบข้อ a. ได้ทั้งข้อ
สัญลักษณ์ความหมายหน่วยค่าในโจทย์นี้
dระยะทางระหว่าง A กับ Cเมตร800 m
vPropagation speed — ความเร็วที่สัญญาณวิ่งในสายm/s2×10⁸ m/s
RBit rate ของช่องสัญญาณbps10 Mbps = 10×10⁶ bps
Lขนาดข้อมูล — โจทย์ให้เป็นไบต์ ต้องคูณ 8ไบต์ → บิต50000 B = 400000 บิต
tpropเวลาที่สัญญาณเดินทางจาก A ถึง Cวินาที4 µs
txเวลาที่ใช้ยิงบิตทั้งเฟรมขึ้นสายวินาที40 ms
TslotSlot time ของ Ethernet 10 Mbps (ใช้ในสูตร backoff)วินาที51.2 µs = 512 บิต = 64 ไบต์
จุดที่คนพลาดบ่อยที่สุดของทั้งข้อ — ลืมคูณ 8

โจทย์ให้ 50000 byte แต่ bit rate เป็น bps ⇒ ต้องแปลงเป็นบิตก่อน · ถ้าลืมคูณ 8 จะได้ 50000/10×10⁶ = 5 ms ซึ่งผิดไป 8 เท่า และทำให้ข้อ b. ผิดตามไปทั้งข้อ · เขียนบรรทัด "50000 B × 8 = 400,000 บิต" ให้เห็นชัด ๆ ในกระดาษ — บรรทัดนี้อย่างเดียวก็มีคะแนนของมัน

เฉลยละเอียดทีละขั้น

ข้อ a. — transmission delay และ propagation delay (2 คะแนน)

  1. Propagation delay — ระยะทางหารความเร็วสัญญาณ

    tprop = d / v = 8002 × 108 = 4 × 10−6 s = 4 µs
  2. Transmission delay — แปลงไบต์เป็นบิตก่อน แล้วหารด้วย bit rate

    L = 50000 ไบต์ × 8 = 400,000 บิต
    tx = L / R = 400,00010 × 106 = 0.04 s = 40 ms
  3. เวลาที่บิตสุดท้ายไปถึง C = tx + tprop = 40 ms + 4 µs = 40.004 ms

คำตอบข้อ a. tprop = 4 µs  ·  tx = 40 ms  ·  รวม = 40.004 ms สังเกตว่า tx ใหญ่กว่า tprop ถึง 10,000 เท่า — จำตัวเลขนี้ไว้ใช้อธิบายข้อ b.
จุดที่คนพลาดบ่อย — วาดรูปไม่ตรงกับที่โจทย์ขอ

โจทย์เขียนว่า "ในรูป" ⇒ ต้องมีรูป ไม่ใช่แค่ตัวเลข · รูปที่ถูกต้องต้องแยกให้เห็นชัดว่า tx คือ "แถบหนา" บนเส้นตั้งของ A (ช่วงที่ A กำลังยิงบิตขึ้นสาย) ส่วน tprop คือ "ความเอียง" ของลูกศร (ช่วงที่สัญญาณเดินทาง) · และต้องเขียนกำกับว่า รูปไม่ได้วาดตามสเกล เพราะ tprop เล็กกว่า tx ถึงหมื่นเท่า จะวาดตามสัดส่วนจริงไม่ได้

ข้อ b. — เกิดอะไรขึ้นเมื่อ A ส่งที่ 0 และ C ส่งที่ 3 µs (4 คะแนน)

ก่อนอื่นตอบคำถามสำคัญ: ทำไม C ถึงเริ่มส่งได้ทั้งที่ A ส่งอยู่

สัญญาณของ A จะถึง C ที่ t = tprop = 4 µs   แต่ C เริ่มส่งที่ t₂ = 3 µs < 4 µs ณ เวลา 3 µs ที่ตำแหน่งของ C ยังเงียบสนิท — C จึง sense ว่า "สายว่าง" และเริ่มส่งอย่างถูกกติกาทุกประการ
เวลาเกิดอะไรขึ้นที่มาของตัวเลข
0A ฟังสาย — ว่าง ⇒ A เริ่มส่งโจทย์ให้ t₁ = 0
2 µsสัญญาณของ A เดินทางมาถึงกึ่งกลางสาย (400 m)400 / 2×10⁸
3 µsC ฟังสาย — ยังเงียบ (สัญญาณ A จะมาถึงตอน 4 µs) ⇒ C เริ่มส่ง ⇒ เกิดการชนกันโจทย์ให้ t₂ = 3 µs
3.5 µs💥 เกิดการชนกันจริง — หน้าคลื่นของทั้งสองสถานีเจอกันที่ตำแหน่ง x = 700 เมตรจาก A (A วิ่งมา 700 m · C วิ่งมา 100 m)2×10⁸·t = 800 − 2×10⁸(t−3µs)
⇒ 4×10⁸t = 1400 ⇒ t = 3.5 µs
x = 2×10⁸ × 3.5×10⁻⁶ = 700 m
4 µsC รู้ว่าชน (สัญญาณของ A มาถึง C) ⇒ C หยุดส่งส่วนที่เหลือของเฟรม แล้วยิง jam signaltprop = 4 µs
7 µsA รู้ว่าชน (สัญญาณของ C ที่ออกตอน 3 µs เดินทางถึง A) ⇒ A หยุดส่ง แล้วยิง jam signalt₂ + tprop = 3 + 4
7 µsA ส่งไปได้แค่ 7 µs × 10 Mbps = 70 บิต ≈ 8.75 ไบต์ — ยังห่างจาก 64 ไบต์มาก จึงยังส่งอยู่และตรวจจับได้ทันนี่คือเหตุผลของกฎ 64 ไบต์
— จากนั้นทั้งคู่เข้าสู่ Exponential Backoff (ดูรายละเอียดที่ Q12) —
ค่ามาตรฐานของ Ethernet ที่ใช้คำนวณเวลาช่วงหลัง (ส่วนขยาย — หนังสือไม่ได้ระบุตัวเลข)

หนังสือบอกแค่ว่าเมื่อชนแล้ว "สเตชันหยุดส่งส่วนที่เหลือของเฟรม พร้อมทั้งส่ง jamming signal" โดยไม่ได้ให้ขนาด · ค่ามาตรฐานของ IEEE 802.3 คือ jam = 48 บิต = 4.8 µs ที่ 10 Mbps และ interframe gap = 96 bit times = 9.6 µs · ในห้องสอบให้เขียนกำกับว่าสมมติค่าเหล่านี้ หรือจะละไว้แล้วตอบเวลารวมแบบปัดก็ได้ — สิ่งที่อาจารย์ตรวจแน่ ๆ คือ 4 µs, 7 µs และ 40 ms

เวลาที่ใช้ทั้งหมด (ตอบส่วน "แสดงเวลาที่ใช้ทั้งหมด")

สมมติผลการ backoff รอบแรก (K = 1 ⇒ c ∈ {0, 1}, TB = c × Tslot) ได้ว่า A ได้ c = 0 และ C ได้ c = 1:

เวลาเหตุการณ์ที่มา
4.0 µsC เริ่มยิง jam signalตอนที่ C รู้ว่าชน
7.0 µsA เริ่มยิง jam signalตอนที่ A รู้ว่าชน
8.8 µsC ยิง jam จบ (4.0 + 4.8) แล้วเข้า backoff · ได้ c = 1 ⇒ ต้องรอ 1 × 51.2 = 51.2 µsjam 48 บิต
11.8 µsA ยิง jam จบ (7.0 + 4.8) · ได้ c = 0 ⇒ ไม่ต้องรอ แต่ต้องรอให้สายว่างก่อนjam 48 บิต
12.8 µsบิตสุดท้ายของ jam ที่ C ส่ง (ออกตอน 8.8) เดินทางถึง A ⇒ สายว่างที่ฝั่ง A ⇒ A เริ่มส่งเฟรมใหม่8.8 + 4
16.8 µsสัญญาณของ A ถึง C ⇒ C ฟังสายแล้วไม่ว่าง ⇒ C ต้องเลื่อนการส่งออกไป (แม้ backoff จะครบตอน 60 µs ก็ตาม)12.8 + 4
40.0128 msA ส่งเฟรมจบ (12.8 µs + 40 ms)+ tx
40.0168 msบิตสุดท้ายของ A ถึง C ⇒ สายว่างที่ฝั่ง C+ tprop
40.0264 msC เริ่มส่งเฟรมของตัวเอง (รอ interframe gap 9.6 µs)+ 9.6 µs
80.0304 msบิตสุดท้ายของ C ถึง A ⇒ จบทั้งหมด40.0264 + 40 + 0.004 ms
คำตอบข้อ b. C เริ่มส่งที่ 3 µs · ชนกันที่ t = 3.5 µs ตำแหน่ง x = 700 m จาก A · C รู้ที่ 4 µs · A รู้ที่ 7 µs · ส่งครบทั้งสองเฟรมที่ ≈ 80.03 ms เวลาที่เสียไปกับการชนทั้งหมด ≈ 12.8 µs ซึ่งเป็นเพียง 0.03% ของเวลาส่งจริง 80 ms — นี่คือเหตุผลที่ CSMA/CD ใช้งานได้จริง: การชนแพงมากถ้าเฟรมสั้น แต่ถูกมากเมื่อเฟรมยาว
ถ้าเวลาไม่พอ ให้ตอบแบบย่อ

ถ้าเหลือเวลาน้อย ให้เขียนแค่: "หลัง backoff สถานีหนึ่งได้ส่งก่อน ใช้เวลา tx = 40 ms อีกสถานีต้องรอจนสายว่างแล้วจึงส่ง ใช้อีก 40 ms ⇒ เวลารวม ≈ 80 ms โดยมี overhead จากการชนและ backoff เพียงประมาณ 13 µs ซึ่งน้อยมากเมื่อเทียบกับ 80 ms" — ได้คะแนนเกือบเต็มโดยไม่ต้องไล่ทุกบรรทัด

ทำไม collision window = 2 × tprop

ในโจทย์นี้ C เริ่มส่งที่ 3 µs · แต่ถ้าถามว่า "ช้าที่สุดที่ยังชนได้คือเมื่อไร" คำตอบคือก่อน 4 µs เสี้ยวเดียว (t₂ = tprop − ε) เพราะถ้าถึง 4 µs พอดี C จะได้ยินสัญญาณของ A แล้วและจะไม่ส่ง

กรณีเลวร้ายที่สุด: C เริ่มส่งที่   t₂ = tprop − ε
สัญญาณของ C จะเดินทางถึง A ที่   t = (tprop − ε) + tprop ≈ 2 tprop ⇒ A อาจไม่รู้ว่าเฟรมของตัวเองชน จนกระทั่งผ่านไปแล้วถึง 2 tprop
Collision window (vulnerable time) = 2 × tprop = 2 × 4 = 8 µs

และเพราะ CSMA/CD ต้องการให้ผู้ส่ง "ยังส่งอยู่" ตอนที่รู้ว่าชน (ไม่งั้นจะหยุดส่ง + ยิง jam ไม่ได้ และจะไม่มีทางรู้ว่าเฟรมของตัวเองหายเพราะอะไร) จึงต้องมีเงื่อนไข:

tx  ≥  2 × tprop เวลาที่ใช้ยิงเฟรมขึ้นสาย ต้องนานกว่าเวลาไป-กลับสุดปลายสาย

แปลงเป็นขนาดเฟรมขั้นต่ำ (tx = 8L/R):

8LR ≥ 2dv  ⟹  L ≥ R · d4v L = ขนาดเฟรมขั้นต่ำเป็นไบต์
กรณีtprop2 tpropขนาดเฟรมขั้นต่ำที่ต้องใช้ผล
โจทย์ข้อนี้ (800 m)4 µs8 µs10×10⁶ × 800 / (4 × 2×10⁸) = 10 ไบต์เฟรม 50000 ไบต์ ≫ 10 ⇒ ตรวจจับได้สบาย ๆ
Ethernet 10 Mbps มาตรฐาน (2500 m)12.5 µs25 µs25 µs × 10 Mbps = 250 บิต = 31.25 ไบต์มาตรฐานตั้งไว้ 64 ไบต์ เผื่อ delay ของ repeater
กฎที่ต้องจำ64 ไบต์ = 512 บิต ที่ 10 Mbps ใช้เวลา 512 / 10×10⁶ = 51.2 µs = slot time ของ Ethernet ⇒ ระยะทางสูงสุดตามทฤษฎี d = 4vL/R = 5,120 เมตร
ประโยคที่เชื่อมข้อนี้เข้ากับกฎ 64 ไบต์ (เขียนแล้วได้คะแนนแน่)

"เนื่องจากผู้ส่งอาจรู้ว่าเฟรมของตนชนช้าที่สุดที่เวลา 2tprop (collision window) ผู้ส่งจึงต้องยังส่งอยู่ ณ เวลานั้นเพื่อหยุดส่งและยิง jam signal ได้ทัน จึงต้องมีเงื่อนไข tx ≥ 2tprop ⇒ อีเทอร์เน็ตกำหนดขนาดเฟรมต่ำสุด 64 ไบต์ (512 บิต = 51.2 µs ที่ 10 Mbps) และใช้ฟิลด์ Pad เติมให้ครบเมื่อข้อมูลสั้นกว่านั้น (ดู บทที่ 14)"

กับดักที่ทำให้เสียคะแนน

กับดัก 1 — ลืมคูณ 8 (ไบต์ → บิต)

คำตอบผิดที่พบมากที่สุด: tx = 50000 / 10×10⁶ = 5 ms — ผิดไป 8 เท่า · ที่ถูกคือ 50000 × 8 = 400,000 บิต ⇒ tx = 40 ms · วิธีกันพลาด: เขียนหน่วยกำกับทุกตัวเลข เมื่อเห็น ไบต์ / bps จะรู้ทันทีว่าหน่วยไม่ตรงกัน

กับดัก 2 — ตอบว่า A รู้ว่าชนที่ 4 µs

หลายคนตอบ 4 µs ทั้งสองฝั่ง เพราะจำแค่ว่า "tprop = 4 µs" · ผิด — C รู้ที่ 4 µs (สัญญาณ A ที่ออกตอน 0 มาถึง C) แต่ A รู้ที่ 7 µs เพราะสัญญาณของ C เพิ่งออกตอน 3 µs แล้วใช้เวลาเดินทางอีก 4 µs ⇒ 3 + 4 = 7 · ตัวเลข 7 µs นี้คือหัวใจของ 4 คะแนน

กับดัก 3 — วาดรูปตามสเกลจริง

tx = 40 ms ใหญ่กว่า tprop = 4 µs ถึง 10,000 เท่า ⇒ ถ้าวาดตามสัดส่วนจริง ลูกศรจะแบนเป็นเส้นตรงจนมองไม่เห็นการชนเลย · ให้วาดแบบไม่ตามสเกลแล้วเขียนกำกับว่า "not to scale" พร้อมเขียนตัวเลขเวลาจริงกำกับทุกจุด — อาจารย์ตรวจตัวเลข ไม่ได้ตรวจสัดส่วน

กับดัก 4 — ตอบว่า "C ผิดที่ส่งตอน 3 µs"

C ไม่ได้ทำอะไรผิดเลย — C ฟังสายตามกติกาของ CSMA แล้วพบว่าว่างจริง ๆ ณ ตำแหน่งของตัวเอง · ประเด็นของข้อสอบคือข้อจำกัดเชิงกายภาพของการ sense ไม่ใช่ความผิดของสถานี · คำตอบที่ดีต้องมีประโยคว่า "เนื่องจากสัญญาณจาก A ยังมาไม่ถึงจุดที่ C ตรวจสอบ C จึงเข้าใจว่าสามารถเริ่มส่งเฟรมได้"

กับดัก 5 — ลืม jam signal และ backoff

โจทย์บอกว่า "แสดงรูปแบบการส่งบน CSMA แสดงเวลาที่ใช้ทั้งหมด" ⇒ รูปที่จบแค่ตรงจุดชนยังไม่ตอบโจทย์ · ต้องเขียนต่อว่า หยุดส่ง → ยิง jam signal → เข้า exponential backoff (c สุ่มจาก {0,1} ในรอบแรก, TB = c × Tslot) → ส่งใหม่ แล้วสรุปเวลารวม ≈ 80 ms

เขียนยังไงให้ได้คะแนนเต็ม

✓ต้องมีในกระดาษเขียนว่าอะไร
☐บรรทัดแปลงหน่วย50000 B × 8 = 400,000 บิต
☐สูตรก่อนแทนค่าtprop = d/v และ tx = L/R — เขียนสูตรเปล่าก่อนเสมอ มีคะแนนของมัน
☐คำตอบข้อ a. พร้อมหน่วยtprop = 4 µs · tx = 0.04 s = 40 ms (ตีกรอบ)
☐รูปของข้อ a.เส้นตั้ง A / C · แถบหนา = tx · ลูกศรเอียง = tprop · เขียน "not to scale"
☐เหตุผลที่ C ส่งได้"สัญญาณ A จะถึง C ที่ 4 µs แต่ C ส่งที่ 3 µs ⇒ ที่ C ยังเงียบ จึง sense ว่าว่าง"
☐จุดที่ชนกันจริงt = 3.5 µs ที่ x = 700 m จาก A พร้อมแสดงสมการ 2×10⁸t = 800 − 2×10⁸(t−3µs)
☐เวลาที่ C รู้ว่าชนt = tprop = 4 µs
☐เวลาที่ A รู้ว่าชนt = t₂ + tprop = 3 + 4 = 7 µs
☐jam signal + backoff"ทั้งคู่หยุดส่งส่วนที่เหลือ ยิง jam signal แล้วเข้า exponential backoff · c ∈ {0,1}, TB = c × Tslot"
☐เวลารวม"≈ 80 ms (สองเฟรม × 40 ms) + overhead จากการชน ≈ 13 µs"
☐Collision window2 tprop = 8 µs + ประโยคเชื่อมกับ เฟรมต่ำสุด 64 ไบต์

ลำดับการลงกระดาษ (18 นาที)

  1. 0:00–3:00 ข้อ a. — แปลงหน่วย เขียนสูตร แทนค่า ตีกรอบคำตอบสองตัว

  2. 3:00–6:00 วาดรูปของข้อ a. (เส้นตั้ง 2 เส้น + แถบ tx + ลูกศร tprop + "not to scale")

  3. 6:00–11:00 ข้อ b. — วาดสองเส้นตั้ง A/C ใหม่ (หรือเพิ่มเส้นกึ่งกลาง) ลากสัญญาณของ A จาก t = 0 และของ C จาก t = 3 µs ให้เห็นว่าตัดกัน

  4. 11:00–14:00 เขียนเวลาสำคัญ 4 จุด: 0 · 3 µs · 4 µs · 7 µs พร้อมคำอธิบายสั้น ๆ ข้างละบรรทัด

  5. 14:00–16:30 เขียน jam + backoff + เวลารวม ≈ 80 ms

  6. 16:30–18:00 เขียนกล่องสรุป: collision window = 2tprop = 8 µs และ tx ≥ 2tprop ⇒ เฟรมต่ำสุด 64 ไบต์

โจทย์ฝึก 5 ข้อ

ไล่จากง่ายไปยากกว่าของจริงเล็กน้อย · ทุกข้อใช้ v = 2×10⁸ m/s เว้นแต่จะระบุเป็นอย่างอื่น

ข้อ 1 อุ่นเครื่อง — Ethernet 100 Mbps ระยะ 200 เมตร ส่งเฟรมขนาด 1500 ไบต์
(ก) tprop (ข) tx (ค) collision window (ง) CSMA/CD ตรวจจับการชนได้หรือไม่

เฉลยข้อ 1

(ก) Propagation delay

tprop = 2002 × 108 = 1 × 10−6 s = 1 µs

(ข) Transmission delay — อย่าลืมคูณ 8

tx = 1500 × 8100 × 106 = 12,000108 = 1.2 × 10−4 s = 120 µs

(ค) collision window = 2 × 1 = 2 µs

(ง) tx = 120 µs ≥ 2tprop = 2 µs ⇒ ตรวจจับได้แน่นอน (เหลือเฟือถึง 60 เท่า) · ผู้ส่งยังส่งอยู่อีกนานตอนที่สัญญาณชนกลับมาถึง

ข้อ 2 ง่าย–กลาง — โจทย์เดิมของ Q13 ทุกอย่าง (10 Mbps · 800 m · 50000 B) แต่คราวนี้ C เริ่มส่งที่ t₂ = 5 µs
(ก) เกิดการชนหรือไม่ เพราะอะไร (ข) C จะทำอย่างไรแทน (ค) ค่า t₂ ที่ใหญ่ที่สุดที่ยังชนได้คือเท่าไร

เฉลยข้อ 2

(ก) ไม่ชน — สัญญาณของ A เดินทางถึง C ที่ t = tprop = 4 µs · เมื่อ C มา sense ที่ t₂ = 5 µs สัญญาณของ A มาถึงก่อนแล้ว 1 µs ⇒ C ได้ยินว่าสายไม่ว่าง

(ข) ตามหลักการของ CSMA แบบ 1-persistent C จะเฝ้าฟังต่อไปจนกว่าสายจะว่าง แล้วจึงส่งทันที ⇒ C ต้องรอจนบิตสุดท้ายของ A ผ่านไป คือที่ tx + tprop = 40.004 ms · (ถ้าเป็น non-persistent จะสุ่มเวลารอแล้วค่อยกลับมา sense ใหม่ — ดู บทที่ 13)

(ค) ชนได้เมื่อ t₂ < tprop ⇒ ค่าที่ใหญ่ที่สุดคือ เกือบ 4 µs (เขียนเป็น t₂ = 4 µs − ε) · ที่ t₂ = 4 µs พอดีคือกรณีขอบ — สัญญาณเพิ่งมาถึงพอดี ในห้องสอบให้เขียนกำกับว่า "ถือว่า C ตรวจพบสัญญาณแล้วจึงไม่ส่ง" · ช่วง 0 ≤ t₂ < 4 µs นี้เองคือ collision window ครึ่งแรก

ข้อ 3 กลาง — Ethernet 10 Mbps ที่ความยาวสายสูงสุดตามมาตรฐาน 2500 เมตร
(ก) collision window เป็นเท่าไร (ข) ขนาดเฟรมขั้นต่ำที่ทฤษฎีต้องการคือกี่ไบต์ (ค) แล้วทำไมมาตรฐานถึงกำหนดไว้ที่ 64 ไบต์

เฉลยข้อ 3

(ก)

tprop = 25002 × 108 = 12.5 µs  ⟹  2tprop = 25 µs

(ข) ต้องให้ tx ≥ 2tprop

L (บิต) = 2tprop × R = 25 × 10−6 × 10 × 106 = 250 บิต
L (ไบต์) = 250 / 8 = 31.25 ไบต์

(ค) มาตรฐานตั้งไว้ 64 ไบต์ (512 บิต = 51.2 µs) ซึ่งเผื่อไว้ประมาณ 2 เท่า ของค่าทฤษฎี เหตุผล:

  • สาย 2500 เมตรของ Ethernet ประกอบด้วย หลายเซกเมนต์ต่อผ่าน repeater ซึ่งแต่ละตัวมี delay ของตัวเอง — ไม่ใช่แค่ delay ของสายเปล่า
  • ต้องเผื่อเวลาที่ใช้ยิง jam signal ให้ทุกสถานีได้ยินด้วย
  • ตัวเลขกลม ๆ ที่เป็นกำลังของสอง (512 บิต) ทำให้วงจรนับง่าย

ตรวจย้อนกลับ: ถ้ายอมให้เฟรมต่ำสุดเป็น 64 ไบต์ ระยะทางสูงสุดตามทฤษฎีคือ d = 4vL/R = 4 × 2×10⁸ × 64 / 10×10⁶ = 5,120 เมตร ⇒ มาตรฐาน 2,500 เมตรจึงปลอดภัยมาก

ข้อ 4 ต่อยอดจากของจริง — โจทย์เดิมของ Q13 (A ส่งที่ 0, C ส่งที่ 3 µs) แต่ผล backoff สลับกัน: A ได้ c = 1 และ C ได้ c = 0
(ก) ใครได้ส่งก่อน และเริ่มส่งเมื่อไร (ข) อีกฝ่ายเริ่มส่งเมื่อไร (ค) เวลารวมเปลี่ยนไปไหม
(ใช้ jam = 4.8 µs, Tslot = 51.2 µs, interframe gap = 9.6 µs)

เฉลยข้อ 4

ขั้นที่ 1 — เวลารู้ตัวและ jam (เหมือนเดิมทุกประการ)

รู้ว่าชนที่ยิง jam จบที่
C4.0 µs4.0 + 4.8 = 8.8 µs
A7.0 µs7.0 + 4.8 = 11.8 µs

ขั้นที่ 2 — backoff · C ได้ c = 0 ⇒ ไม่ต้องรอ · A ได้ c = 1 ⇒ ต้องรอ 1 × 51.2 = 51.2 µs

(ก) C ได้ส่งก่อน — แต่ต้องรอให้สายว่างที่ตำแหน่งของ C ก่อน คือหลังจากบิตสุดท้ายของ jam ที่ A ส่ง (ออกตอน 11.8 µs) เดินทางมาถึง

C เริ่มส่งที่ t = 11.8 + 4 = 15.8 µs

(ข) A ได้ c = 1 ⇒ backoff ครบตอน 11.8 + 51.2 = 63.0 µs · แต่สัญญาณของ C มาถึง A แล้วตั้งแต่ 15.8 + 4 = 19.8 µs ⇒ A ฟังสายแล้วไม่ว่าง ต้องเลื่อนออกไป

เวลาเหตุการณ์
15.8 µsC เริ่มส่ง
40.0158 msC ส่งจบ (15.8 µs + 40 ms)
40.0198 msบิตสุดท้ายของ C ถึง A ⇒ สายว่างที่ฝั่ง A
40.0294 msA เริ่มส่ง (รอ interframe gap 9.6 µs)
80.0334 msบิตสุดท้ายของ A ถึง C ⇒ จบ

(ค) เวลารวมแทบไม่เปลี่ยน — 80.0334 ms เทียบกับกรณีเดิม 80.0304 ms ต่างกันแค่ 3 µs · บทเรียน: ใครจะได้ส่งก่อนไม่มีผลต่อเวลารวมเลย เพราะเวลาทั้งหมดถูกครอบงำโดย 2 × tx = 80 ms · ทั้ง collision, jam, backoff รวมกันยังไม่ถึง 0.1% ของเวลาทั้งหมด — ประโยคนี้เขียนใต้รูปได้คะแนน

ข้อ 5 ยากกว่าของจริง — จงหาสูตรทั่วไปในรูปสัญลักษณ์ (bit rate R, ระยะ d, ความเร็วสัญญาณ v, ขนาดเฟรม L ไบต์)
(ก) เงื่อนไขที่ CSMA/CD ตรวจจับการชนได้ (ข) ขนาดเฟรมขั้นต่ำ Lmin (ค) ระยะทางสูงสุด dmax เมื่อ L = 64 ไบต์ · แล้วแทนค่าที่ 10, 100 และ 1000 Mbps (v = 2×10⁸ m/s)

เฉลยข้อ 5

(ก) เงื่อนไข — ผู้ส่งต้องยังส่งอยู่ตอนที่สัญญาณชนกลับมาถึง

tx ≥ 2 tprop  ⟹  8LR ≥ 2dv

(ข) ขนาดเฟรมขั้นต่ำ — จัดรูปหา L

Lmin = R · d4 vไบต์ · (ถ้าอยากได้เป็นบิตให้คูณ 8 ⇒ Lmin(bit) = 2Rd/v)

ตรวจกับโจทย์จริง: 10×10⁶ × 800 / (4 × 2×10⁸) = 8×10⁹ / 8×10⁸ = 10 ไบต์ ✓ (เฟรม 50000 ไบต์ ผ่านสบาย)

(ค) ระยะทางสูงสุด — จัดรูปหา d

dmax = 4 v LR
ความเร็ว Rdmax ที่ L = 64 ไบต์ของจริงเป็นอย่างไร
10 Mbps4 × 2×10⁸ × 64 / 10×10⁶ = 5,120 mมาตรฐานตั้งไว้ 2,500 m — เผื่อ repeater
100 Mbps512 mFast Ethernet จริงจำกัดที่ ~200 m
1000 Mbps51.2 mสั้นเกินไปจนใช้งานไม่ได้!

ข้อสังเกตที่ทำให้ได้คะแนนพิเศษ: dmax แปรผกผันกับ bit rate ⇒ ยิ่งเร็วยิ่งเดินสายได้สั้น · ที่ Gigabit ระยะเหลือแค่ 51 เมตรซึ่งใช้งานไม่ได้จริง · (ส่วนขยาย: Gigabit Ethernet จึงแก้ด้วยการเพิ่ม carrier extension ให้เฟรมยาวขั้นต่ำ 512 ไบต์ ทำให้ dmax กลับมาเป็น ~410 เมตร · และในทางปฏิบัติทุกวันนี้ทุกอย่างเป็น full-duplex บนสวิตช์ ซึ่งไม่มีการชนเลย จึงไม่ต้องใช้ CSMA/CD อีกต่อไป — หัวข้อนี้ไม่ได้อยู่ในหนังสือ)

เช็คความเข้าใจ

A เริ่มส่งที่ t = 0 · C เริ่มส่งที่ t = 3 µs · tprop = 4 µs · A จะรู้ว่าเกิดการชนเมื่อไร
สัญญาณของ C เพิ่งออกจาก C ตอน 3 µs แล้วใช้เวลาเดินทางอีก tprop = 4 µs จึงจะถึง A ⇒ 3 + 4 = 7 µs · ส่วน 4 µs คือเวลาที่ C รู้ (สัญญาณของ A ที่ออกตั้งแต่ 0 มาถึง C) · และ 8 µs คือ collision window ซึ่งเป็นค่าสูงสุดในกรณีเลวร้ายที่สุด (ถ้า C ส่งที่ ~4 µs) ไม่ใช่กรณีนี้
ทำไม C ถึงเริ่มส่งที่ t = 3 µs ได้ ทั้งที่ A กำลังส่งอยู่แล้ว
C ทำ carrier sense ตามกติกาทุกประการ — แต่การ sense บอกได้แค่สถานะ ณ ตำแหน่งของ C เท่านั้น · เนื่องจาก tprop = 4 µs สัญญาณของ A จะไปถึง C ที่ 4 µs ⇒ ที่เวลา 3 µs ตำแหน่งของ C ยังเงียบสนิทจริง ๆ · นี่คือข้อจำกัดเชิงกายภาพ ไม่ใช่ความผิดของสถานีใด และเป็นเหตุผลที่ CSMA เฉย ๆ ยังไม่พอ ต้องมี CD เพิ่ม
เงื่อนไข tx ≥ 2 tprop มีไว้เพื่ออะไร
ผู้ส่งอาจรู้ว่าเฟรมของตนชนช้าที่สุดที่ 2tprop (collision window) ⇒ ถ้า tx < 2tprop ผู้ส่งจะส่งจบไปแล้ว ก่อนที่จะรู้ว่าชน ⇒ ตรวจจับไม่ได้ เฟรมหายเงียบ ๆ · แปลงเป็นตัวเลขได้ ขนาดเฟรมต่ำสุด 64 ไบต์ (512 บิต = 51.2 µs ที่ 10 Mbps) ซึ่งเป็นที่มาของฟิลด์ Pad ในเฟรม 802.3 · ส่วน ACK เป็นเรื่องของ ARQ ไม่เกี่ยวกับ CSMA/CD
เก็บก่อนออกจากข้อนี้
  • สองสูตร: tprop = d/v = 800/2×10⁸ = 4 µs · tx = 8L/R = 400,000/10×10⁶ = 40 ms — ห้ามลืมคูณ 8
  • สี่เวลาบนรูป: 0 (A ส่ง) · 3 µs (C ส่ง เพราะยังเงียบ) · 4 µs (C รู้ว่าชน) · 7 µs = 3 + 4 (A รู้ว่าชน)
  • Collision window = 2tprop = 8 µs ⇐ กรณีเลวร้ายที่สุดคือ C ส่งก่อนสัญญาณ A มาถึงเสี้ยววินาที
  • เชื่อมกับ 64 ไบต์: tx ≥ 2tprop ⇒ L ≥ Rd/(4v) ⇒ Ethernet ตั้งไว้ 64 ไบต์ = 512 บิต = 51.2 µs = slot time
  • เวลารวม ≈ 80 ms (สองเฟรม × 40 ms) — overhead จากการชนราว 13 µs คือแค่ 0.03%
  • อย่าลืมเขียน jam signal → exponential backoff (c ∈ {0,1}, TB = c × Tslot) ต่อท้าย ไม่งั้นไม่ครบตามที่โจทย์สั่ง