לדלג לתוכן

מה זה BGP מוסבר בגובה המתאים

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

הבעיה ש-BGP פותר

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

השאלה שBGP עונה עליה היא - איך רשת אחת בכלל יודעת דרך אילו רשתות אחרות לשלוח מידע כדי שהוא יגיע ליעד הנכון, בצורה יעילה יחסית?

איך BGP עובד ברמה הגבוהה

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

זה קצת דומה לאיך שידיעה עוברת מפה לאוזן בקהילה גדולה - כל אחד מוסיף לרשימה את מי שאמר לו, וככה אפשר בסופו של דבר לעקוב אחורה ולמצוא את המקור. ה"מרחק" ב-BGP נמדד במספר הקפיצות בין רשתות, ה-AS path, ולא במרחק פיזי או מהירות בפועל.

למה זה עובד על אמון

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

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

למה תקלות BGP כל כך דרמטיות

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

אז למה בכלל צריך להכיר את זה

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

לסיכום

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

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

יש לכם שאלה על BGP או ניתוב רשתי? בואו לדבר בדיסקורד.

הצטרפו לקהילה בדיסקורד