nets4 - Reliable Transmission - ‫‪:Reliable...

Info icon This preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: ‫‪:Reliable Transmission‬‬ ‫‪‬‬ ‫‪‬‬ ‫‪‬‬ ‫‪‬‬ ‫ה ‪ frames‬נפגמים מדי פעם במהלך ההעברה‪.‬‬ ‫לתיקון שלהם יש ‪ overhead‬גדול ולכן הם נזרקים‪.‬‬ ‫פרוטוקול של רמת הלינק צריך להיות אמין‪ ,‬כלומר לדעת מה לעשות כאשר ‪ frames‬הולכים לאיבוד או‬ ‫נזרקים‪.‬‬ ‫הטיפול בזה נעשה באמצעות ‪ ,(acknowledgment (ACK‬ו ‪:timeout‬‬ ‫‪ ACK – frame‬בקרה קטן )רק ‪ header‬ללא מידע( שמודיע על קבלת ‪ frame‬ספציפי לשולח‪.‬‬ ‫‪o‬‬ ‫‪ – Timeout‬הזמן ששולח מוכן לחכות ל ‪ ACK‬עבור ‪ frame‬מסוים‪ .‬אם בסוף ה ‪ timeout‬לא התקבל‬ ‫‪o‬‬ ‫‪ ACK‬ה ‪ frame‬יישלח שוב‪.‬‬ ‫קיימות ‪ 3‬אסטרטגיות לשימוש ב ‪ ACK‬ו ‪:timeout‬‬ ‫‪.1‬‬ ‫‪:Stop And Wait‬‬ ‫אחרי שליחת כל ‪ frame‬השולח ממתין ל ‪ ACK‬ע"מ לשלוח את ה ‪ frame‬הבא‪.‬‬ ‫אם עבר ה ‪ timeout‬שנקבע אז ה ‪ frame‬נשלח שוב‪.‬‬ ‫בעיה אפשרית – ‪ ACK‬לא יגיע לצד השולח‪ ,‬הוא ישלח את ההודעה מחדש‪ ,‬הצד המקבל יחשוב שמדובר ב‬ ‫‪ frame‬הבא וזה יגרום לקבלת אותה חבילה מספר פעמים‪.‬‬ ‫פתרון – שמים ב ‪ header‬של כל ‪ frame‬ביט נוסף בעל ערך שיאותחל לסירוגין ב‪ 0-‬או ‪ .1‬כאשר השולח‬ ‫ישלח מחדש את ה ‪ , frame‬המקבל יוכל לקבוע שהוא קיבל את החבילה ולא להתייחס אליה )בכל זאת‬ ‫ישלח ‪ ACK‬נוסף(‪.‬‬ ‫הבעיה הראשית של אלגוריתם זה הוא בכך שזה מאפשר לשולח לשלוח רק ‪ frame‬אחד על ה‪ link-‬בזמן נתון‬ ‫וזה בזבוז של יכולת ה‪.link -‬‬ ‫דוגמא‪ 1.5Mbps link :‬עם ‪,45ms RTT‬‬ ‫ל‪ link-‬יש ‪ delay x bandwidth product‬של ‪ 67.5Kb‬שזה בערך ‪) 8KB‬מייצג את כמות המידע שיכולה‬ ‫להישלח(‬ ‫מאחר והשולח יכול לשלוח רק ‪ frame‬אחד בכל ‪ RTT‬בגודל ‪ 1KB‬אז מקסימום הקצב יהיה‪:‬‬ ‫‪BitsPerFrame / timePerFrame = 1024*8/ 0.045 = 182Kbps‬‬ ‫שזה למעשה שמינית מיכולת הלינק ואנו רוצים את כל היכולת‪....‬‬ ‫‪.2‬‬ ‫‪:Sliding Window‬‬ ‫‪.Figure: Time-line for Sliding Window algorithm‬‬ ‫בהמשך לדוגמה הקודמת של ‪ - Delay x bandwidth product‬אנו מעוניינים שהשולח ישלח את ה ‪ frame‬ה‬ ‫– ‪ 9‬שלו בערך באותו זמן בו נשלח ה – ‪ ACK‬של ה ‪ frame‬הראשון‪.‬‬ ‫אלגוריתם ה ‪) sliding window‬אין לי כוונה ללחוץ שוב ושוב על ה ‪ ALT SHIFT‬ולכן ייקרא מעכשיו‬ ‫"החלון החשמלי"(‪:‬‬ ‫‪ ‬השולח קובע מספר לכל ‪.frame‬‬ ‫‪ ‬השולח מתחזק ‪ 3‬משתנים‪:‬‬ ‫‪ – SendWindowSize – SWS‬החסם העליון למספר ה ‪ frames‬שיכולים להישלח ללא‬ ‫‪o‬‬ ‫קבלת ‪.ACK‬‬ ‫‪ LAR – Last Acknowledgment Received‬מחזיק את המספר של ה ‪ ACK‬האחרון‬ ‫‪o‬‬ ‫שהתקבל‪.‬‬ ‫‪ – LFS – Last Frame Sent‬המספר של ה ‪ frame‬האחרון שנשלח‪.‬‬ ‫‪o‬‬ ‫‪LFS – LAR <= SWS‬‬ ‫‪.Figure: Sliding Window on sender‬‬ ‫‪ ‬המקבל מתחזק את ‪ 3‬המשתנים הבאים‪:‬‬ ‫‪ – RWS – Receive Window sizeחסם עליון למספר ה ‪) frames‬בסדר לא עוקב( שהמקבל‬ ‫‪o‬‬ ‫מוכן לקבל‪ Frame .‬שיגיע לא לפי הסדר – יתקבל )אם יהיה עבורו מקום( אך לא יישלח‬ ‫עליו ‪.ACK‬‬ ‫‪ – LFA‬המספר המקסימלי של ה ‪ frame‬שהמקבל מוכן לקבל‪.‬‬ ‫‪o‬‬ ‫‪ – LFR‬המספר של ה ‪ frame‬האחרון שהתקבל‪.‬‬ ‫‪o‬‬ ‫‪LAF – LFR <= RWS‬‬ ‫‪.Figure: Sliding Window on receiver‬‬ ‫בעת קבלה של ‪ – frame‬בודקים עבור המספר הסידורי שלו )‪:(Seq-num‬‬ ‫אם ‪SeqNum < NFE or SeqNum > LFA‬‬ ‫אז לא מקבלים את ה ‪ frame‬החדש‪.‬‬ ‫אם >= ‪SeqNum <= LFA NFE‬‬ ‫אז מקבלים אותו והמקבל מחליט אם לשלוח ‪ ACK‬או לא‪.‬‬ ‫דוגמה‪:‬‬ ‫‪) LFR = 5‬ה ‪ ACK‬האחרון שהמקבל שלח הוא ‪(.5‬‬ ‫‪RWS = 4‬‬ ‫‪LFA = 9‬‬ ‫אם ‪ frame 7/8‬יגיעו אז הם יישמרו‪ ,‬אך לא יישלח ‪ ACK‬מאחר ו ‪ frame 6‬עדיין לא הגיע‪) .‬זה מה שנקרא –‬ ‫בסדר הלא נכון(‪.‬‬ ‫באופן טכני המקבל יכול לשלוח ‪ ACK‬נוסף על ‪ ,frame 5‬כאשר ‪ 7/8‬הגיע‪.‬‬ ‫כעת‪ ,‬אם ‪ frame 6‬יגיע אז המקבל ישלח ‪ ACK‬על ‪ ,6‬על ‪ 7‬ועל ‪ ,frame 8‬יכניס ‪ 8‬ל ‪ ,LFR‬ו ‪ 12‬ל ‪.LFA‬‬ ‫הערה ‪ – 1‬בעת ‪ timeout‬כמות המידע שעוברת )‪ (Pipe‬יורדת מאחר והשולח לא יכול לקדם את החלון שלו‪.‬‬ ‫הערה ‪ – 2‬המקבל יכול לשלוח ‪) NAK‬אישור שלילי( לגבי מספר ‪ ,6‬אבל זה מסרבל את האלגוריתם‪ ,‬ולכן‬ ‫הוא יכול במקום זה לשלוח ‪ ACK‬על מס' ‪ ,5‬מה שירמוז לשולח על עיכוב ב ‪.6‬‬ ‫הערה ‪ – 3‬אפשרות אחרת היא שליחת ‪ ACK‬על כל ‪ .frame‬במקרה הזה הוא ישלח ‪ ACK‬על ‪ .8 ,7‬זה פותר‬ ‫את בעיית ה ‪ Pipe‬הלא מנוצל‪ ,‬אך שוב מסרבל את האלגוריתם של המקבל כי צריך לבדוק מה הגיע ומה‬ ‫לא‪..‬‬ ‫מספר סידרתי סופי בבעיית החלון החשמלי‪:‬‬ ‫בפועל אי אפשר לקבוע סידרת הודעות אינסופית‪.‬‬ ‫‪o‬‬ ‫נניח ונקבע ‪ 3bit‬לייצוג הודעה – אז יש ‪ 0-7‬מספרי הודעה אפשריים‪.‬‬ ‫מחייב שימוש מחדש במספרים או מספרים סדרתיים עטופים יחד‪.‬‬ ‫‪o‬‬ ‫נניח ש ‪) SWS <= MaxSeqNum – 1‬מספר המספרים שניתן לקבוע – במקרה שלנו ‪ 3‬ביט = ‪(8‬‬ ‫האם זה מספיק? תלוי ב ‪!RWS‬‬ ‫אם ‪ RWS = 1‬אז זה מספיק‪ .‬אם ‪ RWS = SWS‬אז זה לא טוב‪...‬‬ ‫דוגמה למה שמנסים למנוע‪:‬‬ ‫‪SWS = RWS = 7‬‬ ‫השולח שולח הודעות ‪ 0-6‬אשר מגיעות בהצלחה אך ה ‪ ACKs‬שלהם הלכו לאיבוד‪.‬‬ ‫המקבל מצפה להודעות ‪ ,7‬ואז ‪ 0-5‬החדשים‪ ,‬אבל אצל השולח עבר ה ‪ timeout‬ולכן הוא ישלח את‬ ‫‪ 0-6‬הראשונים כאשר המקבל מצפה ל ‪ 0-5‬החדשים )מהסיבוב השני(‬ ‫פיתרון‪ :‬מוסיפים מגבלה ‪) SWS <= (MaxSeqNum +1) / 2 -‬במקרה ש ‪(SWS = RWS‬‬ ‫החלון החשמלי משיג ‪ 3‬מטרות‪:‬‬ ‫‪ .1‬מעבר הודעות בצורה אמינה על קישור לא אמין‪.‬‬ ‫‪ .2‬שמירת סדר ההודעות‪.‬‬ ‫‪ .3‬תמיכה ב ‪ ,flow control‬הרעיון הוא שהשולח לא ישלח יותר הודעות ממה שהמקבל יכול‬ ‫להחזיק בזמן נתון‪.‬‬ ‫‪.3‬‬ ‫‪Concurrent Logical Channels:‬‬ ‫זהו פרוטוקול שמשתמשים בו ב ‪.ARPANET‬‬ ‫מאפשר לשמור על ‪ full pipe‬למרות שהוא משתמש באלגוריתם ‪.stop and wait‬‬ ‫הרעיון הוא לרבב מספר ערוצים לוגים לקו נל"ן אחד ולהריץ את האלגוריתם של ‪stop and wait‬‬ ‫על כל ערוץ בנפרד‪.‬‬ ...
View Full Document

{[ snackBarMessage ]}

What students are saying

  • Left Quote Icon

    As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

    Student Picture

    Kiran Temple University Fox School of Business ‘17, Course Hero Intern

  • Left Quote Icon

    I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

    Student Picture

    Dana University of Pennsylvania ‘17, Course Hero Intern

  • Left Quote Icon

    The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

    Student Picture

    Jill Tulane University ‘16, Course Hero Intern