ARQ Lab  /  ITDS231 · Lecture 5.2

เฟรมหายแล้วไงต่อ ลองทำให้มันหายเอง

จำลอง Stop-and-Wait, Go-Back-N และ Selective Repeat คลิกเส้นที่กำลังวิ่งเพื่อทำให้เฟรมหรือ ACK หาย แล้วดูว่าผู้ส่งกับผู้รับจัดการกันอย่างไร

โหมด
บิต m
จำนวนเฟรม
ความเร็ว
ลองสถานการณ์
เพิ่มเหตุการณ์
Send window
Receive window
ส่งถึง/ได้ ACK แล้ว ส่งแล้ว รอ ACK (มีแถบ timer) ผู้รับเก็บ buffer อยู่ใน window (แถบบน)

คลิกเส้นเฟรมหรือ ACK ที่กำลังวิ่งอยู่เพื่อทำให้หาย (กดหยุดก่อนจะคลิกง่ายกว่า) หรือเพิ่มเหตุการณ์จากฟอร์มด้านบน

ผลของรอบนี้

0เฟรมที่ส่งทั้งหมด
0ส่งซ้ำ
0เวลารวม (tick)

ผลล่าสุดของแต่ละโหมด

โหมดส่งทั้งหมดซ้ำเวลาสถานการณ์

บันทึกเหตุการณ์

    เทียบ 3 ARQ ตารางที่ต้องจำ

    หัวข้อStop-and-WaitGo-Back-NSelective Repeat
    Pipeliningไม่มีมีมี
    Sender window1≤ 2^m − 1≤ 2^(m−1)
    Receiver window11 เสมอ≤ 2^(m−1)
    เฟรมผิดลำดับไม่มีกรณีนี้ทิ้ง ไม่ bufferรับไว้ + buffer
    แบบของ ACKpositive ACK ทีละตัวCumulative ACKIndividual ACK + NAK/SREJ
    Timer1 ตัว1 ตัว (เฟรมเก่าสุด)แยกทุกเฟรม
    ตอน timeoutส่งเฟรมเดิมซ้ำส่งใหม่ตั้งแต่ตัวเก่าสุด + ที่ตามมาทั้งหมดส่งใหม่เฉพาะเฟรมนั้น
    ข้อดีง่ายที่สุดผู้รับออกแบบง่าย (window = 1)ประหยัด bandwidth ที่สุด
    ข้อเสียช้ามาก สายว่างเปล่าเยอะerror บ่อย = ส่งซ้ำเยอะ เปลือง bandwidth และเพิ่ม delayผู้รับซับซ้อน ต้องมี buffer + timer หลายตัว

    คอลัมน์ที่สว่างขึ้นคือโหมดที่เลือกอยู่ในแล็บ

    สรุปให้จำ: Stop-and-Wait คือกรณีพิเศษของ Go-Back-N ที่ window = 1 และใช้เลขลำดับแค่ 0 กับ 1  ·  GBN มองเฟรมเป็น "กลุ่ม" ส่วน SR มองเฟรมเป็น "รายตัว"

    หลุมพรางข้อสอบ

    1. ขนาด window ของ GBN กับ SR ไม่เหมือนกัน

    GBN: sender = 2^m − 1 (เลขคี่เสมอ), receiver = 1 เสมอ
    SR: sender = receiver = 2^(m−1) (เลขคู่เสมอ)

    2. เลข ACK คือ "เฟรมที่รอถัดไป"

    ACK 1 แปลว่าได้ frame 0 แล้ว กำลังรอ frame 1 ไม่ใช่ "ได้ frame 1" และใน GBN ACK เป็นแบบสะสม เช่น ACK 4 = ได้ frame 0, 1, 2, 3 ครบแล้ว

    3. "ACK หาย" กับ "เฟรมหาย" ให้ผลต่างกัน

    เฟรมหาย: ผู้รับไม่รู้เรื่อง ไม่ตอบอะไร มีแต่ timeout ที่ช่วยได้
    ACK หาย/ช้า: ข้อมูลถึงแล้ว ผู้รับต้องทิ้งเฟรมซ้ำแต่ยังต้องตอบ ACK ใน GBN ถ้า ACK ตัวถัดไปมาทัน ก็ไม่ต้องส่งใหม่เลย

    4. เลขลำดับต้องวนเป็นวง

    ส่ง 20 เฟรมด้วย m = 4 ได้ 0, 1, …, 14, 15, 0, 1, 2, 3 ไม่ใช่ 16, 17, 18, 19

    5. อย่าสลับ REJ กับ SREJ

    REJ = NAK ของ Go-Back-N · SREJ = NAK ของ Selective Repeat
    RNR ไม่ใช่ error แต่เป็น flow control (ผู้รับบอกว่า "ได้แล้วนะ แต่ขอพักก่อน")

    เครื่องคิดเลข ใส่ตัวเลขแล้วดูทีละขั้น

    เวลารวม: Stop-and-Wait เทียบ Go-Back-N

    
            

    โจทย์ที่บอก "ไม่คิด transmission delay" ให้ใช้แค่ propagation delay ในการหา RTT

    Bandwidth-Delay Product และ Utilization

    
            

    ระวังหน่วย: ms → sec หาร 1000 · Mbps → bps คูณ 10⁶

    สรุปจากสไลด์ ITDS231 Lecture 5.2 (Flow Control, ARQ & HDLC) ตัวจำลองใช้เวลาเป็น tick: ส่ง 1 เฟรมต่อ tick, เดินทางทางเดียว 3 tick, timeout 8 tick ส่วน HDLC ยังไม่รวมในหน้านี้