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

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

הריצו את אותה בדיקת רדום בכל פעם

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

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

What you observeWhat it suggestsWhat it does not prove
server records no packet after the pausestate was lost upstream of the serverwhich hop dropped it
server answers, client never receivesreturn-path state or filteringthat the timer belongs to the client
client sends nothing at allclient-side timer or application behaviourthat the network path is healthy

השוואת מסלולים בלי לשנות חמישה דברים

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

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

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

מה יחזיק אות חיים ומה לא

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

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

שינוי אחד, ואז מדדו שוב

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

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

לכתוב ממצא שאפשר להגן עליו

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

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

מאמרים קשורים