logo

חזור אחורה N - פרוטוקול חלון הזזה

Go-Back-N (GBN) הוא פרוטוקול ARQ של חלון הזזה המאפשר לשולח לשדר מסגרות מרובות (עד גודל חלון מוגדר) מבלי להמתין לאישורים בודדים.

דיאגרמת מחלקות java
  • אם חבילה אובדת או פגומה, השולח משדר מחדש את החבילה ואת כל החבילות הבאות בחלון.
  • דוגמה: אם מנות 1-5 נשלחות וחבילה 3 אבדה אז מנות 3 4 ו-5 משודרות מחדש.

מנגנון זה מבטיח אמינות אך עלול לבזבז רוחב פס אם מתרחשות שגיאות לעתים קרובות.

שלושת המאפיינים העיקריים של GBN הם:



1. גודל חלון השולח (W ס )

זה N עצמו. אם נגיד שהפרוטוקול הוא GB10 אז Ws = 10. N צריך להיות תמיד גדול מ-1 כדי ליישם צנרת. עבור N = 1 זה מצטמצם ל- פרוטוקול עצור והמתן .

יעילות של GBN = N/(1+2a)

אֵיפֹה

a = Tע/Tט
טע= עיכוב ריבוי
טט= עיכוב שידור של השולח

מה תהיה היעילות אם עיכוב תור של עיכוב עיבוד ועיכוב שידור של אישור אינו אפס?

יעילות = N * (זמן שימושי) / (זמן כולל)

שבו זמן שימושי=Tט

זמן כולל = Tט+ 2 * Tע+ Pר+ Pq + Tט(אק)

אֵיפֹה

  • ט ט =עיכוב שידור של צד השולח
  • ט ע = עיכוב ריבוי
  • Pr = עיכוב בעיבוד
  • Pq = עיכוב בתור
  • ט ט (אק) = עיכוב שידור של אישור

אם B הוא רוחב הפס של הערוץ אז

רוחב פס או תפוקה יעילים
= יעילות * רוחב פס
= (N/(1+2a)) * ב

2. גודל חלון מקלט (W ר )

  • תמיד 1 ב-GBN.
  • המקלט מקבל רק את החבילה הצפויה הבאה.
  • מנות שלא בהזמנה נזרקות.

3. תודות

אישורים (ACKs) הם אותות הנשלחים על ידי המקלט כדי לאשר קבלה מוצלחת של מנות נתונים. הם מבטיחים תקשורת אמינה בין השולח למקבל. אם ACK לא מתקבל תוך זמן מוגדר, השולח מניח שהחבילה אבדה ומשדר אותה מחדש.

סוגי ACKs

ACK מצטבר

  • אישור בודד מאשר קבלה של כל החבילות עד לנקודה מסוימת.
  • יִתרוֹן: פחות תנועה (פחות ACKs).
  • חִסָרוֹן: פחות אמין אם ACK אחד אובד. מספר מנות נראות ללא אישור.

ACK עצמאי

  • כל חבילה מקבלת אישור בנפרד.
  • יִתרוֹן: אמינות גבוהה.
  • חִסָרוֹן: תעבורה גבוהה יותר עקב יותר ACKs.

עבודה של פרוטוקול GB-N

עמוד שולח

  • שומר על חלון בגודל N (למשל, גודל חלון GB4 = 4).
  • יכול לשלוח עד N מנות לא מאושרות.
  • לכל חבילה משודרת יש טיימר.
  • אם מתקבל ACK, החלון מחליק קדימה.
  • אם מתרחש פסק זמן (עבור חבילה חסרה) השולח משדר מחדש את החבילה הזו ואת כל אלה שלאחר מכן בחלון.

צד המקלט

  • שומר על גודל חלון של 1 (WR = 1).
  • מקבל רק את החבילה הצפויה ברצף.
  • אם החבילה הנכונה מגיעה: שולח ACK ועובר למספר הרצף הצפוי הבא.
  • אם מגיעה חבילה לא בסדר: השליך אותה ושלח שוב ACK עבור החבילה האחרונה שהתקבלה כהלכה.
Sliding_SET_2-1' title=

קשר בין גודל חלון ומספרי רצף

ה גודל החלון ו מספרי רצף בפרוטוקול חלון הזזה כמו Go-Back-N או Selective Repeat קשורים קשר הדוק.

קוד אפור
  • ה גודל החלון קובע כמה מנות השולח יכול להעביר ללא צורך באישור. זה כמו הגבלה על כמה נתונים ניתן לשלוח לפני שהשולח יצטרך לעצור ולחכות לאישור.
  • מספרי רצף משמשים לתיוג מנות כך שהמקלט יודע את הסדר שלהם ויוכל לזהות מנות חסרות.

ה גודל החלון צריך להיות קטן או שווה לטווח הזמינים מספרי רצף . אם גודל החלון גדול מדי בהשוואה לטווח מספרי הרצף, המקלט עלול להתבלבל מכיוון שניתן לעשות שימוש חוזר באותו מספר רצף לפני אישור הראשון. זה יקשה לדעת אם חבילה חדשה או כפולה.

הקשר בין גודל החלון למספר הרצף ניתן על ידי הנוסחה:

INס+ Wר<= ASN

שבו Wסהוא גודל חלון השולח ו-Wרהוא גודל חלון המקלט ו-ASN הוא מספר רצף זמין.

INס+ 1<= ASN because Wר= 1 בפרוטוקול GB-N

אז מספרי רצף מינימליים הנדרשים ב-GBN = N + 1

סיביות נדרשות ב-GBN = ⌈ יומן2(N + 1)⌉

ה-1 הנוסף נדרש על מנת למנוע את הבעיה של מנות כפולות.

דוגמה של פרוטוקול GB-N

שקול דוגמה של GB4.

  • גודל חלון השולח הוא 4 ולכן אנו דורשים מינימום של 4 מספרי רצף כדי לתייג כל חבילה בחלון.
  • עכשיו נניח שהמקלט קיבל את כל החבילות (0 1 2 ו-3 שנשלחו על ידי השולח) ומכאן שהוא מחכה שוב לחבילה מספר 0 (אנחנו לא יכולים להשתמש ב-4 כאן מכיוון שיש לנו רק 4 מספרי רצף זמינים מאז N = 4).
  • כעת נניח שה-ack המצטבר עבור 4 החבילות לעיל אבד ברשת.
  • בצד השולח יהיה פסק זמן לחבילה 0 ומכאן שכל 4 החבילות ישודרו שוב.
  • הבעיה כעת היא שהמקלט ממתין לסט חדש של מנות שאמור היה להתחיל מ-0 אך כעת הוא יקבל את העותקים הכפולים של החבילות שהתקבלו בעבר.
  • על מנת להימנע מכך אנו זקוקים למספר רצף אחד נוסף.
  • כעת המקלט יכול לדחות בקלות את כל החבילות הכפולות שהתחילו מ-0 כי כעת הוא יחכה לחבילה מספר 4 (הוספנו מספר רצף נוסף כעת).

זה מוסבר בעזרת האיורים שלהלן. מנסה עם מספרי רצף 4.

Sliding_SET_2-3' loading='lazy' title=

עכשיו מנסה עם מספר רצף אחד נוסף.

Sliding_SET_2-4' loading='lazy' title=

עכשיו ברור למה אנחנו צריכים 1 bit נוסף בפרוטוקול GBN.

יתרונות פרוטוקול GBN

  • פשוט ליישום ויעיל לתקשורת אמינה.
  • ביצועים טובים יותר מפרוטוקולי עצור והמתנה לרשתות נטולות שגיאות או שגיאות נמוכות.

החסרונות של פרוטוקול GBN

  • לא יעיל אם השגיאות נפוצות, שכן ייתכן שיהיה צורך לשדר מחדש מספר פריימים שלא לצורך.
  • ניתן לבזבז רוחב פס עקב שידורים חוזרים מיותרים.
צור חידון