הסבר על פורמט GENEVE

Generic Network Virtualization Encapsulation‏ (GENEVE) הוא פרוטוקול אנקפסולציה ברשת שמבצע אנקפסולציה של החבילה המקורית עם מטא-נתונים נוספים. המטא-נתונים הנוספים האלה עוזרים להפעיל וירטואליזציה גמישה וניתנת להרחבה של הרשת.

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

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |Ver|  Opt len  |O|C|   Rsvd.   |         Protocol type         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |        Virtual network identifier (VNI)       |     Rsvd.     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

בטבלה הבאה מתוארים שדות הכותרת של GENEVE שמוצגים בתרשים שלמעלה:

שדה תיאור אורך השדה
Ver הגרסה של פרוטוקול GENEVE. הגרסה הנתמכת היחידה היא אפס (0). מידע נוסף זמין במאמר בנושא שדות כותרת של מנהור. ‫2 ביטים
אורך האפשרות האורך של שדות האפשרויות, בערכים שהם כפולות של 4 בייטים, לא כולל את כותרת המנהרה הקבועה של 8 בייטים. למידע נוסף, ראו שדות של כותרות מנהור. ‫6 ביטים
O הביט של מנת הבקרה. מידע נוסף זמין במאמר בנושא שדות כותרת של מנהור. 1-ביט
C הביט של האפשרויות הקריטיות. מידע נוסף זמין במאמר בנושא שדות כותרת של מנהור. 1-ביט
Rsvd שדה שמור, הערך שלו חייב להיות אפס (0) בזמן השידור, וחובה להתעלם ממנו בזמן הקבלה. למידע נוסף, ראו שדות של כותרות מנהור. ‫6 ביטים
סוג הפרוטוקול סוג הפרוטוקול מאפשר ethertype: ‏IPv4 (0x0800) או IPv6 (0x86DD). ‫16 ביט
מזהה רשת וירטואלית (VNI) מזהה ייחודי של רכיב ברשת וירטואלית. ה-VNI מוגדר לאפס (0). מידע נוסף מופיע במאמר בנושא אפשרויות GENEVE. ‫24 ביט
Rsvd שדה שמור, הערך שלו חייב להיות אפס (0) בזמן השידור, וחובה להתעלם ממנו בזמן הקבלה. למידע נוסף, ראו שדות של כותרות מנהור. ‫8 ביטים

אפשרויות GENEVE ל-רפליקציה של חבילות נתונים ברשתות VPC של ULL

הכותרת של GENEVE משתמשת בפורמט Type-Length-Value (TLV) לאפשרויות שלה. כל אפשרות מקודדת עם מזהה סוג, שדה אורך שמציין את גודל הערך והערך עצמו. הפורמט הזה גמיש וניתן להרחבה, כך שאפשר להוסיף אפשרויות חדשות בלי לשבש הטמעות קיימות. בקטעים הבאים מפורטות האפשרויות. מספר האפשרויות והסדר שלהן עשויים להשתנות, ולכן צריך לנתח את הכותרת GENEVE על סמך שדות ה-TLV כדי להבטיח תאימות קדימה להטמעה של המכשיר.

אלה האפשרויות של GENEVE שספציפיות לרפליקציה של חבילות נתונים ב-ULL:

  • מזהה רשת (קובץ Cookie של הרשת)
  • חותמת הזמן
  • מזהה רשת יציב
  • כתובת ה-IP הראשית

מזהה הרשת

האפשרות 'מזהה רשת', שנקראת גם 'קובץ Cookie של רשת', מזהה את הרשת הווירטואלית שמשויכת לתעבורה שעברה אנקפסולציה של GENEVE ברפליקציה של חבילות הנתונים ב-ULL. האפשרות הזו מזוהה לפי מחלקת האפשרויות 0x0132 (Google) והסוג 0x1 (מזהה רשת).

ברפליקציה של חבילות נתונים ב-ULL, קובץ ה-Cookie של הרשת מוגדר לאפס (0). נתוני האפשרות מכילים 32 ביטים. 31 הביטים הראשונים שמורים, והביט האחרון מציין את הכיוון של המנה המקורית.

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

בתרשים הבא מוצג פורמט האפשרויות בחבילת GENEVE.

       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |    Type=01    |R|R|R|  Len=1  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                            Reserved                         |D|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

בטבלה הבאה מתוארים שדות האפשרויות שמוצגים בתרשים שלמעלה:

שדה תיאור אורך השדה
Option class מזהה את הארגון או הישות שהגדירו את האפשרות. הערך 0x0132 מציין ש-Google היא הישות המגדירה. ‫16 ביט
סוג מזהה את סוג האפשרות בתוך מחלקה. הערך 0x1 מציין את האפשרות 'מזהה רשת'. מידע נוסף זמין במאמר בנושא אפשרויות של מנהור. ‫8 ביטים
R דגלי הבקרה של האפשרויות שמורים לשימוש עתידי. הביטים האלה צריכים להיות אפס (0) בזמן השידור, וצריך להתעלם מהם בזמן הקבלה. ‫3 ביטים
Len אורך המטען הייעודי (payload) של האפשרות במדרגות של 4 בייטים. מטען הייעוד של מזהה הרשת הוא 32 ביט (4 בייט), ולכן האורך של האפשרות הזו מוגדר כ-1. ‫5 ביטים
שמור הערך צריך להיות אפס (0) בהעברה וצריך להתעלם ממנו בקבלה. ‫31 ביט
D מציין את הכיוון של החבילה המקורית. אפס (0) מציין מנות נכנסות (ingress) ואחד (1) מציין מנות יוצאות (egress) במשאב המקורי המשוכפל. 1-ביט

חותמת הזמן

האפשרות 'חותמת זמן' מציינת את הזמן המקורי של לכידת החבילות בנקודת הלכידה (המכונה של Compute Engine שבה החבילה נלכדה או שוכפלה). האפשרות הזו מזוהה לפי מחלקת האפשרויות 0x0132 (Google) והסוג 0x0f (Timestamp).

בתרשים הבא מוצג פורמט האפשרויות בחבילת GENEVE.

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option class=0x0132 (Google) |   Type=0x0f   |R|R|R|  Len=2  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                           Timestamp                           +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

בטבלה הבאה מתוארים שדות האפשרויות שמוצגים בתרשים שלמעלה:

שדה תיאור אורך השדה
Option class מזהה את הארגון או הישות שהגדירו את האפשרות. הערך 0x0132 מציין ש-Google היא הישות המגדירה. ‫16 ביט
סוג מזהה את סוג האפשרות בתוך מחלקה. הערך 0x0f מציין את האפשרות של חותמת הזמן. מידע נוסף זמין במאמר בנושא אפשרויות של מנהור. ‫8 ביטים
R דגלי הבקרה של האפשרויות שמורים לשימוש עתידי. הביטים האלה צריכים להיות אפס (0) בזמן השידור, וצריך להתעלם מהם בזמן הקבלה. ‫3 ביטים
Len אורך המטען הייעודי (payload) של האפשרות במדרגות של 4 בייטים. מטען הייעודי (payload) של חותמת הזמן הוא 64 ביט (8 בייט), ולכן האורך של האפשרות הזו מוגדר כ-2. ‫5 ביטים
חותמת הזמן זמן הלכידה של החבילה המקורית, שמיוצג כננו-שניות מאז ראשית התקופה. הגרנולריות של הננו-שנייה לא מבטיחה דיוק של ננו-שנייה. ‫64 ביט

מזהה רשת יציב

האפשרות Network stable ID (מזהה רשת יציב) מזהה את הרשת של המופע המשוכפל. האפשרות הזו מזוהה לפי מחלקת האפשרויות 0x0132 (Google) והסוג 0x10 (מזהה יציב של רשת).

בתרשים הבא מוצג פורמט האפשרויות בחבילת GENEVE. המזהה היציב של הרשת כולל מספר פרויקט ומזהה רשת.

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option class=0x0132 (Google) |   Type=0x10   |R|R|R|  Len=4  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                       Project Number                          +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                         Network ID                            +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

בטבלה הבאה מתוארים שדות האפשרויות שמוצגים בתרשים שלמעלה:

שדה תיאור אורך השדה
Option class מזהה את הארגון או הישות שהגדירו את האפשרות. הערך 0x0132 מציין ש-Google היא הישות המגדירה. ‫16 ביט
סוג מזהה את סוג האפשרות בתוך מחלקה. הערך 0x10 מציין את האפשרות 'מזהה יציב של הרשת'. מידע נוסף זמין במאמר בנושא אפשרויות של מנהור. ‫8 ביטים
R דגלי הבקרה של האפשרויות שמורים לשימוש עתידי. הביטים האלה צריכים להיות אפס (0) בזמן השידור, וצריך להתעלם מהם בזמן הקבלה. ‫3 ביטים
Len אורך המטען הייעודי (payload) של האפשרות במדרגות של 4 בייטים. מטען הייעודי (payload) של מזהה הרשת הוא 64 ביט (8 בייט), ולכן האורך של האפשרות הזו מוגדר כ-4. ‫5 ביטים
מספר הפרויקט מספר הפרויקט של פרויקט Google Cloud . ‫64 ביט
מזהה הרשת המזהה של רשת ה-VPC של ULL. ‫64 ביט

כתובת ה-IP הראשית

האפשרות Primary IP Address (כתובת ה-IP הראשית) מזהה את כתובת ה-IP של נקודת הלכידה (המכונה של Compute Engine שבה החבילה נלכדה או שוכפלה). האפשרות הזו מזוהה לפי מחלקת האפשרויות 0x0132 (Google) והסוג 0x11 (כתובת IP ראשית).

בתרשים הבא מוצג פורמט האפשרויות בחבילת GENEVE.

       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option class=0x0132 (Google) |   Type=0x11   |R|R|R|  Len=1  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                       Primary IP Address                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

בטבלה הבאה מתוארים שדות האפשרויות שמוצגים בתרשים שלמעלה:

שדה תיאור אורך השדה
Option class מזהה את הארגון או הישות שהגדירו את האפשרות. הערך 0x0132 מציין ש-Google היא הישות המגדירה. ‫16 ביט
סוג מזהה את סוג האפשרות בתוך מחלקה. הערך 0x11 מציין את האפשרות 'כתובת ה-IP הראשית'. ‫8 ביטים
R דגלי הבקרה של האפשרויות שמורים לשימוש עתידי. הביטים האלה צריכים להיות אפס (0) בזמן השידור, וצריך להתעלם מהם בזמן הקבלה. ‫3 ביטים
Len אורך המטען הייעודי (payload) של האפשרות במדרגות של 4 בייטים. המטען הייעודי (payload) של כתובת ה-IP הוא 32 ביט (4 בייט), ולכן האורך של האפשרות הזו מוגדר כ-1. ‫5 ביטים
כתובת ה-IP הראשית כתובת ה-IP הראשית של מכונת Compute Engine של המקור. ‫32 ביט

פורמטים של כותרות GENEVE

בקטע הזה מתוארים פורמטים של כותרות GENEVE שמשמשים את רפליקציה של חבילות נתונים ברשתות VPC של ULL.

כותרת IPv4

פורמט חבילת ה-GENEVE מבצע אנקפסולציה של כותרת קומפקטית של מנהרה ב-UDP על IPv4. כותרת קטנה וקבועה של מנהרה מספקת מידע על אמצעי בקרה, יכולות בסיסיות ויכולת פעולה הדדית.

בתרשים הבא מוצגים שדות הכותרת של IPv4 עבור חבילת GENEVE.

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |Version|  IHL  |Type of service|          Total length         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |         Identification        |Flags|     Fragment offset     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Time to live | Proto=17 (UDP)|        Header checksum        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                         Source address                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                      Destination address                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

בטבלה הבאה מתוארים שדות הכותרת של IPv4 הספציפיים Google Cloudשמוצגים בתרשים הקודם. מידע על שדות כותרת נפוצים של IPv4 זמין ב-RFC 8926.

שדה תיאור
‫Proto=17 (תמיד UDP ל-GENEVE) מציין שהמטען הייעודי (payload) שעבר אנקפסולציה משתמש בפרוטוקול UDP.
כתובת המקור כתובת ה-IP של השער של התת-רשת המקומית.
כתובת היעד כתובת ה-VIP של מאזן העומסים בבעלות הלקוח.

כותרת UDP

הכותרת של פרוטוקול UDP‏ RFC 0768 מכילה נתונים תוך שמירה על הסמנטיקה של אתרנט וכתובות IP ללא חיבור. הוא מספק גם אנטרופיה לנתבים שמבצעים ריבוי נתיבים בעלות שווה (ECMP).

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

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |      Source port = <hash>     |   Dest port = 6081 (Geneve)   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |           UDP length          |          UDP checksum         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

בטבלה הבאה מתוארים שדות הכותרת של UDP שמוצגים בדיאגרמה הקודמת:

שדה תיאור
יציאת המקור גיבוב אטום על פני כל הטווח של 16 ביט. הערך זהה לכל החבילות ששייכות לזרימה אחת שעברה אנקפסולציה (בשני הכיוונים).
יציאת היעד מספר יציאת היעד שמוגדר לתעבורת GENEVE, שהוא 6081.
אורך ה-UDP האורך הכולל של חבילת הנתונים של UDP, כולל כותרת ה-UDP וחבילת ה-GENEVE שעברה אנקפסולציה.
סיכום ביקורת (checksum) של UDP ערך הצ'קסום של חבילת הנתונים של UDP, שמשמש לזיהוי שגיאות.

אפשרויות GENEVE

אפשרויות ה-GENEVE Google Cloudהספציפיות שמשמשות ברפליקציה של חבילות הנתונים ברשתות VPC של ULL הן קובץ Cookie של הרשת, חותמת זמן, מזהה יציב של הרשת, כתובת ה-IP הראשית וחותמת זמן של עיבוד הוגן של ההזמנה. מידע נוסף זמין במאמר בנושא אפשרויות GENEVE לרפליקציה של חבילות נתונים ברשתות VPC עם זמן אחזור נמוך במיוחד.

בתרשים הבא מוצג אופן השימוש Google Cloudבאפשרויות GENEVE ספציפיות ב-Packet Mirroring עבור רשתות VPC עם ULL.

       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |    Type=01    |R|R|R|  Len=1  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                          Network Cookie                     |D|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |   Type=0x0f   |R|R|R|  Len=2  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                           Timestamp                           +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |    Type=0x10   |R|R|R|  Len=4  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                         Project Number                        +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                           Network ID                          +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |   Type=0x11   |R|R|R|  Len=1  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                       Primary IP Address                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |   Type=0x13   |R|R|R|  Len=2  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                Fair order processing timestamp                +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

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

דרישות לגבי GENEVE encapsulation ו-MTU

יחידת השידור המקסימלית (MTU) היא הגודל, בבייטים, של חבילת ה-IP הגדולה ביותר שאפשר להכניס למסגרת Ethernet, כולל כותרות IP, כותרות פרוטוקול של שכבה 4 ונתונים של שכבה 4. מידע נוסף זמין במאמר בנושא יחידת שידור מקסימלית.

ברשתות VPC של ULL, ה-MTU המקסימלי הוא 1,500 בייט. עם זאת, רפליקציה של חבילות נתונים של ULL דורשת 308 בייטים בשביל תקורה של GENEVE encapsulation. כדי לוודא שתעבורת הנתונים המשוכפלת מגיעה למכונות ה-Collector שלכם בלי פרגמנטציה, ברשת שבה נמצא ה-Collector צריך להיות MTU של לפחות 1,808 בייט (1,500 בייט לתעבורת נתונים רגילה ועוד 308 בייט לתקורה של GENEVE encapsulation).

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