Ενημερώθηκε πριν από 1 μήνα
רספברי פאי יכולה לשדר את גביע העולם למיליון צופים. לא בגלל שיש לה חומרה יוצאת דופן, אלא כי עם multicast היא שולחת את השידור פעם אחת בלבד. הרשת מטפלת בשאר.
זו התובנה שהופכת את multicast לרעיון עמוק: העומס על השולח אינו גדל עם גודל הקהל. שולחים לעשרה, שולחים לעשרת אלפים — אותה עבודה, אותו רוחב פס, אותו עומס שרת. הרשת עצמה הופכת לחכמה, משכפלת נתונים רק היכן שצופים ממתינים להם.
מה זה Multicast?
Multicast היא תקשורת מאחד לרבים, שבה שולח יחיד משדר למספר מקבלים בו-זמנית. השולח מוציא זרם אחד לכתובת קבוצת multicast מיוחדת. התקני הרשת משכפלים ומעבירים זרם זה רק לקטעים שבהם קיימים מקבלים מעוניינים.
חשבו על זה כמו שידור רדיו: התחנה משדרת פעם אחת, וכל מי שמכוון לאותו תדר מקבל את האות. אבל בשונה מרדיו, מקבלי multicast חייבים להירשם במפורש על ידי הצטרפות לקבוצה.
אין רישום, אין זרם. זה מונע מהרשת להיחנק בתעבורה לא רצויה.
Unicast, Broadcast ו-Multicast
כדי להבין מה multicast פותר, כדאי להשוות אותו לאחיו:
Unicast הוא שיחה בין שני צדדים. שולח אחד, מקבל אחד. כך טוענים דף אינטרנט או שולחים דוא"ל. זה יעיל לתקשורת אחד-על-אחד, אבל מבזבז כאשר מקבלים רבים זקוקים לנתונים זהים. שידור וידאו של 5 Mbps ל-200 צופים דרך unicast דורש 1,000 Mbps — 200 זרמים נפרדים.
Broadcast משדר לכל מכשיר בקטע הרשת, בין אם הם רוצים בכך ובין אם לאו. שימושי לפרוטוקולי גילוי ("מי מחזיק בכתובת IP הזו?"), אבל לא מעשי להפצת תוכן. כל מכשיר חייב לעבד את התעבורה, גם אם אין לה כל קשר אליו.
Multicast מוצא את האיזון: זרם אחד מגיע למספר מקבלים מעוניינים מבלי להעמיס על מכשירים שאינם מעוניינים. אותו וידאו של 5 Mbps ל-200 צופים? עדיין 5 Mbps. היעילות אינה לינארית — היא קבועה.
מרחב הכתובות
IPv4 Multicast
IPv4 שומר את הטווח 224.0.0.0 עד 239.255.255.255 עבור multicast — כל טווח "Class D". לא כולו שווה:
224.0.0.0 עד 224.0.0.255 נשאר מקומי. נתבים לעולם לא יעבירו כתובות אלה מעבר לרשת המשנה שלכם. כאן תמצאו את כתובות הקבוצה הבסיסיות:
- 224.0.0.1 — כל המארחים בעלי יכולת multicast בקטע המקומי
- 224.0.0.2 — כל נתבי multicast בקטע המקומי
- 224.0.0.251 — Multicast DNS לגילוי שירותים מקומי
239.0.0.0/8 מיועד לשימוש ארגוני פרטי, בדומה לאופן שבו 10.0.0.0/8 עובד עבור unicast. ארגון יכול להשתמש בכתובות אלה פנימית ללא צורך בתיאום עם גורם חיצוני.
IPv6 Multicast
IPv6 נוקט גישה נקייה יותר: כל כתובת שמתחילה ב-ff היא multicast. ה-nibble הבא מקודד את הטווח — עד כמה ה-multicast אמור להתפשט:
- ff01:: — מקומי לצומת (נשאר בתוך מכשיר יחיד)
- ff02:: — מקומי לקישור (קטע הרשת שלכם)
- ff05:: — מקומי לאתר (קמפוס או בניין)
- ff08:: — מקומי לארגון
- ff0e:: — גלובלי
כך ff02::1 פירושו "כל הצמתים בקישור המקומי", בעוד ff0e::1 פירושו "כל הצמתים ברחבי העולם". אותו מזהה קבוצה, טווח שונה.
IPv6 גם מציג כתובות solicited-node — טריק חכם שבו קבוצת multicast נגזרת מכתובת unicast של המכשיר. זה יוצר קבוצות עם מעט מאוד חברים (לרוב רק אחד), ומאפשר פתרון כתובות יעיל ללא סערות broadcast.
כיצד מכשירים מצטרפים לקבוצות: IGMP
ל-multicast יש בעיית הביצה והתרנגולת: כיצד הרשת יודעת לאן לשלוח זרמים אם היא אינה יודעת מי רוצה אותם?
פרוטוקול ניהול קבוצות האינטרנט (IGMP) פותר זאת עבור IPv4. כך מארחים מודיעים לנתבים "אני רוצה לקבל את הקבוצה הזו", וכך נתבים מגלים אילו קבוצות יש להן חברים מעוניינים.
התהליך עובד כך:
- מכשיר רוצה לקבל זרם multicast, ולכן הוא שולח דיווח חברות כדי להצטרף לקבוצה
- נתבים שולחים שאילתות תקופתיות לרשת: "מי עדיין מעוניין במה?"
- מארחים מגיבים עם דיווחים על הקבוצות שהצטרפו אליהן
- כאשר מכשיר מפסיק להתעניין, הוא שולח הודעת עזיבה
- הנתב בודק אם מישהו אחר עדיין רוצה את הזרם לפני שמפסיק את המסירה
קיימות שלוש גרסאות, כל אחת מוסיפה יכולות:
IGMPv1 הציג את מודל השאילתה-תגובה הבסיסי.
IGMPv2 הוסיף הודעות עזיבה מפורשות, כך שנתבים יכולים להפסיק לספק זרמים לא רצויים מהר יותר.
IGMPv3 הביא סינון מקורות — מארחים יכולים לציין לא רק איזו קבוצה הם רוצים, אלא גם אילו מקורות בתוך אותה קבוצה הם מוכנים לקבל. זה חשוב כאשר מספר שרתים משדרים לאותה כתובת קבוצה.
IPv6 משתמש ב-Multicast Listener Discovery (MLD) במקום IGMP. אותו רעיון, פרוטוקול שונה, מובנה בתוך ICMPv6.
בעיית המתג: IGMP Snooping
כאן יש סיבוך: מתגים פועלים בשכבה 2 (מסגרות Ethernet), בעוד IGMP הוא פרוטוקול שכבה 3 (IP). מתג שאינו מבין IGMP רואה תעבורת multicast וחושב: "אני לא יודע מי רוצה את זה, אז אשלח לכולם." ה-multicast שלכם הופך ל-broadcast.
IGMP snooping מתקן זאת. המתג מאזין להודעות IGMP שעוברות דרכו ובונה טבלה: "פורט 5 רוצה קבוצה 239.1.1.1. פורט 12 רוצה קבוצה 239.1.1.2." עכשיו הוא יכול להעביר multicast בצורה חכמה.
בלי snooping, המתג שלכם הוא ממסר broadcast. עם snooping, הוא הופך לשותף פעיל ביעילות.
היכן Multicast מגיע לידי ביטוי
IPTV ושידור חי הוא מקרה השימוש הקלאסי. מלונות, בתי חולים, אוניברסיטאות וארגונים מספקים ערוצי טלוויזיה דרך multicast. שרת המקור לא מתעניין אם עשרה אנשים צופים או עשרת אלפים — בכל מקרה אותו עומס.
הזנות נתונים פיננסיות משתמשות ב-multicast להפצת מחירי מניות בזמן אמת, ספרי פקודות ונתוני מסחר לאלפי מסופים בו-זמנית. כאשר אלפיות שנייה חשובות, היעילות של multicast וסדר המסירה העקבי שלו חיוניים.
הפצת תוכנה בארגונים גדולים מעבירה עדכונים לאלפי מחשבים בבת אחת. במקום לרסק את השרת עם הורדות בודדות, זרם אחד מגיע לכולם.
מערכות ועידת וידאו משתמשות ב-multicast לפגישות פנימיות, ומאפשרות לוידאו באיכות גבוהה להגיע לעשרות משתתפים מבלי להכפיל את רוחב הפס.
שרתי משחק שולחים עדכוני מצב משחק לכל השחקנים בו-זמנית, ושומרים על תצוגת העולם של כולם מסונכרנת.
הפשרות
Multicast דורש בו-זמניות. כולם מקבלים את אותו הרגע באותו הזמן. אי אפשר להשהות. אי אפשר להריץ אחורה. אי אפשר להתחיל מהתחלה בעוד מישהו אחר צופה בסוף. זה לא באג — זו המגבלה הבסיסית שמאפשרת את היעילות.
Multicast גם דורש שיתוף פעולה מכל מכשיר בנתיב. הנתב הביתי שלכם כנראה תומך בו. ספק האינטרנט שלכם כמעט בוודאי לא מנתב אותו דרך האינטרנט הציבורי — מורכבות הניתוב הופכת אותו ללא-מעשי בקנה מידה של האינטרנט כולו. רוב ה-multicast חי בגבולות ארגוניים: רשתות תאגידיות, קמפוסים, מרכזי נתונים.
להפצה בקנה מידה של האינטרנט, רשתות הפצת תוכן (CDN) משיגות יעילות דומה דרך מטמון והפצה גאוגרפית — אבל עם גמישות של השמעה לפי דרישה. Multicast מוותר על הגמישות הזו למען משהו שרשתות CDN לא יכולות להציע: בו-זמניות אמיתית, שבה מיליון צופים חולקים בדיוק את אותו הרגע.
שאלות נפוצות על Multicast
מה ההבדל בין IGMP ל-MLD?
IGMP (Internet Group Management Protocol) מנהל את חברות קבוצות multicast עבור IPv4. MLD (Multicast Listener Discovery) עושה את אותו הדבר עבור IPv6. שניהם משרתים מטרות זהות, אך הם פרוטוקולים נפרדים — כי IPv6 בנה את MLD בתוך ICMPv6 במקום לאמץ את IGMP ישירות.
מדוע אני צריך IGMP snooping במתג שלי?
ללא IGMP snooping, מתג מתייחס ל-multicast כמו ל-broadcast — הוא מציף תעבורה מכל הפורטים כי אינו יודע אילו פורטים מכילים מקבלים מעוניינים. IGMP snooping מאפשר למתג להאזין להודעות חברות וללמוד לאן להעביר תעבורת multicast, ושומר על יתרונות היעילות של multicast גם בשכבה 2.
האם ניתן לאבטח תעבורת multicast?
Multicast כשלעצמו אינו מספק הצפנה — כל מי שמצטרף לקבוצה יכול לקבל את התעבורה שלה. לתוכן רגיש, יש להצפין את הזרם בשכבת האפליקציה (את התוכן עצמו) ולשלוט בחברות הקבוצה דרך בקרות גישה לרשת. תשתית ה-multicast מספקת את המטען המוצפן — אך אינה מגינה עליו.
מקורות
Ήταν χρήσιμη αυτή η σελίδα;