מידע על ניהול תעבורה

סקירה כללית

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

הסברים על המונחים

בדף הזה מופיעים המונחים הבאים:

Service Function (SF)

פונקציית שירות היא רכיב תוכנה שפועל על מנות הנתונים שהתקבלו. שכבת שירות יכולה לפעול בכל שכבה של מודל ה-OSI, החל משכבה 2 (שכבת קישור הנתונים).

אפשר לסווג את פונקציות השירות באופן כללי לקטגוריות הבאות:

  • חומות אש לאבטחה
  • שרתי proxy לבקרת גישה
  • האצת WAN לשיפור המהירות,
  • בדיקת מנות לעומק (DPI) לניתוח תוכן
  • יירוט חוקי (LI) לצורך מעקב וחקירה
  • תרגום כתובות רשת (NAT) לכתובות IP פרטיות וציבוריות
  • HTTP להעשרת כותרות
  • מאזני עומסים לחלוקת תנועה יעילה

מונחים חלופיים לפונקציות שירות כוללים:

  • מכשירי חשמל במכולות
  • מכשירים וירטואליים
  • פונקציות רשת וירטואליות (NFV)
  • פונקציות רשת בקונטיינרים (CNF)
  • פונקציות רשת מבוססות-ענן (CNF)

ב-Service Steering, אובייקט Service מייצג פונקציית שירות (SF).

שרשרת פונקציות שירות (SFC)

שרשרת פונקציות שירות (SFC) היא סדרה של פונקציות שירות כמו חומות אש, שרתי proxy או מאזני עומסים שמקושרים יחד כדי לעבד תנועת רשת בסדר מסוים. השרשרת הזו פועלת כמו צינור עיבוד נתונים, שבו כל פונקציית שירות מבצעת משימה מסוימת בתנועה לפני שהיא מעבירה אותה לפונקציה הבאה.

שרשרת פונקציות שירות (SFC) נקראת גם שרשרת שירות (SC).

ב-Service Steering, אובייקט ServiceFunctionChain מייצג שרשרת של פונקציות שירות (SFC).

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

Service Steering

התכונה Service Steering מעבירה מנות נתונים לפונקציית השירות שנבחרה באופן שקוף לחלוטין למקור וליעד. המושג הזה נקרא לפעמים 'ניתוב מבוסס מדיניות', 'הפניית תנועה' או 'העברת פונקציות שירות'. הניתוב השקוף מתבצע באמצעות Geneve + NSH encapsulation (ראו RFC 8926, ‏ RFC 8300, ‏ Geneve + NSH IETF Draft).

אלה חלק מהמאפיינים החשובים של ניהול תעבורה בין שירותים:

  • איזון עומסים בין ה-Pods של הקצה העורפי של פונקציית שירות: פונקציות שירות פועלות לרוב בכמה Pods כדי לשפר את יכולת ההתאמה ואת המהימנות. התכונה Service Steering מפזרת את תעבורת הרשת הנכנסת באופן שווה בין ה-Pods האלה כדי למנוע עומס יתר על אף אחד מהם.
  • תמיכה בהצמדה של זרימה עם 5 טפלים (כל הקפיצות הביניים צריכות להיות יציבות עבור זרימה נתונה): זרימה עם 5 טפלים היא דרך לזהות זרם ספציפי של תעבורת רשת על סמך כתובת ה-IP של המקור, יציאת המקור, כתובת ה-IP של היעד, יציאת היעד והפרוטוקול. התכונה Service Steering עוזרת להבטיח שכל החבילות באותו זרם יופנו באופן עקבי לאותה קבוצה של פונקציות שירות (דילוגים).
  • הפעלת נתיב נתונים סימטרי להחזרה: נתיב נתונים סימטרי להחזרה אומר שתנועת התגובה חוזרת למקור באותו נתיב שבו עברה תנועת הבקשה המקורית. התכונה 'הפניית תעבורה לשירותים' עוזרת להבטיח את הסימטריה הזו, שהיא חשובה לכמה פרוטוקולי רשת ואפליקציות.

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

תרחישים לדוגמה

התכונה GKE Service Steering משלבת ניתוב על סמך מדיניות באשכולות שלכם. היא מאפשרת את תרחישי השימוש העיקריים הבאים:

שירותי אבטחה בניהול עצמי:

ארגונים יכולים לבנות תשתית אבטחה משלהם באמצעות פונקציות רשת מבוססות קונטיינרים (CNF), כמו חומות אש וירטואליות (vFW), חומות אש וירטואליות מהדור הבא (vNG-FW) ומערכות וירטואליות לזיהוי פריצות (vIDS). התכונה 'הכוונת תנועה לשירותים' עוזרת לוודא שהתנועה מנותבת דרך הפונקציות האלה של CNF לפני שהיא מגיעה ליעד המיועד שלה, וכך מספקת שכבת הגנה ושליטה.

ספקי אבטחה מנוהלים (MSP):

ספקי MSP יכולים להשתמש ב-GKE Service Steering כדי לנתב את התעבורה שלכם דרך שרשרות שירותי האבטחה שלהם שמבוססות על ענן. כך הם יכולים להציע פתרונות אבטחה מקיפים, כולל Secure Web Gateways‏ (SWG),‏ SASE‏ (Secure Access Service Edge) ופונקציות SD-WAN‏ (Software-Defined Wide Area Network).

טלקומוניקציה ורשתות 5G:

התכונה Service Steering מנהלת את זרימת התנועה עבור פונקציות רשת שונות בתשתיות טלקום ו-5G. אתם יכולים לתזמן נתבים וירטואליים (vRouters), בקרי גבולות וירטואליים של סשנים (vSBCs) ופונקציות ליבה של רשת 5G כדי להבטיח ניהול יעיל של התנועה, איזון עומסים ואכיפה של מדיניות אבטחה או איכות שירות ספציפית.

איך פועל ניהול התנועה בין שירותים

בקטע הזה מוסבר איך פועלים הרכיבים השונים של Service Steering.

פונקציית השירות

  1. זיהוי של זרימת התנועה ברשת: התכונה 'הפניית תנועה לשירותים' ב-GKE מזהה כל חיבור לרשת באמצעות מזהה זרימה ייחודי, שהוא גיבוב (hash) של 5 טופלים של כתובת ה-IP של המקור של החבילה, יציאת המקור, כתובת ה-IP של היעד, יציאת היעד והפרוטוקול.

  2. עוזר להבטיח את הקשר בין זרימת הנתונים לבין השירות: התכונה 'הפניית תנועה לשירותים' עוזרת להבטיח את הקשר בין זרימת הנתונים לבין השירות על ידי הפניית כל החבילות עם אותו מזהה זרימה דרך אותו נתיב של פונקציות שירות (SF).

  3. שינוי מנות כדי ליצור זרימות חדשות: אם פונקציית שירות משנה שדות של 5-tuple במנה. לדוגמה, אם NAT משנה את כתובת ה-IP של המקור, נוצר זרימה חדשה.

  4. בחירת תנועה לזרימות חדשות: תהליך בחירת התנועה מעריך את הזרימה החדשה כדי לקבוע את הנתיב שלה דרך שאר Service Functions, ויכול להיות שהיא תעבור בנתיב שונה מהזרימה המקורית.

  5. מטפל בשרתי proxy וב-NAT כשני זרמים: תעבורה דרך שרתי proxy או NAT נחשבת לשני זרמים נפרדים: מהמקור ל-proxy/NAT ומ-proxy/NAT ליעד. התכונה 'ניתוב שירותים' לא מבטיחה את אותו נתיב לשני התהליכים האלה.

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

  7. שומר על שקיפות של האנקפסולציה: Service Steering משתמש באנקפסולציית Geneve לתעבורה בין SF, אבל פודים של פונקציות שירות לא מודעים לכך. החבילות עוברות הסרת אנקפסולציה לפני שהן נכנסות ל-Pod, מה שמפשט את פיתוח פונקציות השירות.

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

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

מחזור החיים של משאבים

המשאבים TrafficSelector ו-ServiceFunctionChain נמחקים מיד אחרי שהם מסומנים למחיקה. אין וווב-הוקים או finalizers שמונעים או מעכבים את מחיקת המשאב.

תנועה מ-Pod לשירות

התכונה 'הפניית תנועה לשירותים' בוחרת את התנועה אחרי שהיא מזהה את כתובת ה-IP הווירטואלית של השירות. אפשר לבחור את התנועה שמנותבת לשירות באמצעות ClusterIP לניתוב שירותים, אם כתובת ה-IP של ה-Pod של היעד נמצאת בטווח ה-CIDR שצוין בשדה .egress.to.ipBlock אחרי שכתובת ה-IP הווירטואלית נפתרה.

אכיפת NetworkPolicy

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

יתרונות

השימוש ב-GKE Service Steering, יחד עם המעבר לטכנולוגיות מבוססות-ענן, מניב את היתרונות הבאים:

  • מוצר ב-Marketplace: צדדים שלישיים יכולים להציע את המוצר שלהם שמבוסס על קונטיינרים ב-Google Cloud Marketplace ולהשתמש בממשקי Service Steering API. הם יכולים לספק מדריך לפריסה שמבוסס על API מובנה של Kubernetes, ש-GKE מספק ומנהל.
  • גרנולריות של Kubernetes: אתם יכולים לשלוט בתנועה בתוך אשכול Kubernetes. אתם יכולים לסווג את התנועה שאתם רוצים להפנות. אתם יכולים לבחור עומסי עבודה שבהם אתם רוצים להחיל את התכונה 'הפניית תנועה לשירותים' באופן סלקטיבי.
  • דו-כיווניות: התכונה 'הפניית תנועה לשירותים' ב-GKE היא דו-כיוונית. כלומר, עבור זרימה נתונה, נתיב החזרה סימטרי לנתיב ההעברה. זה חשוב כשפורסים את פונקציות השירות (SF) כקבוצה של רפליקות. חשוב לוודא שאותו תהליך עובר דרך אותו סט של רפליקות כדי לשמור על מצב.
  • תמיכה בכמה רשתות: רוב פונקציות השירות דורשות כמה ממשקי Pod כדי להפריד בין מישור הנתונים לבין מישור הבקרה והניהול. חלק מהפונקציות של השירות כוללות כמה ממשקי משתמש כחלק מהארכיטקטורה שלהן. התכונה Service Steering ב-GKE כוללת שילוב עם Multi-Network on Pods. באמצעות התכונה הזו, משתמש יכול ליצור Service Steering ברשת Pod ספציפית.
  • מסירת מנות גולמיות לאפליקציה: התכונה Service Steering ב-GKE מכילה את המנה המקורית ומעבירה אותה ישירות ל-Pod. כך לא צריך לבצע פעולת הסרת אנקפסולציה, והאפליקציה יכולה לפעול ישירות על החבילה המקורית.

המאמרים הבאים