מסמך עזר בנושא מאפייני מדיניות של נתיבי BGP

בדף הזה מוצגות דוגמאות למדיניות של נתיבי BGP, באמצעות Common Expression Language ‏ (CEL) ל-Cloud Router.

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

מאפיינים להתאמה

בטבלה הבאה מפורטים מאפייני ההתאמה שזמינים למדיניות של נתיבי BGP:

מאפיינים

תיאור

communities

רשימת הקהילות שמשויכות לנתיב BGP

destination

טווח כתובות ה-IP של נתיב ה-BGP

פעולות שקשורות למשחקים

בטבלה הבאה מתוארות פעולות ההתאמה שזמינות למדיניות של נתיבי BGP:

פעולה

תיאור

communities.matchesEvery('65001:1234')

הפונקציה מחזירה את הערך True אם הקהילות הן קבוצת-על של הרשימה '65001:1234'.

community_value הוא שדה של 32 ביט שמחולק לשני קטעים של 16 ביט. לפי המוסכמה, 16 הביטים הראשונים של הערך מקודדים את מספר המערכת האוטונומית (AS) של הרשת שממנה הקהילה נוצרה, אבל Cloud Router לא אוכף את המוסכמה הזו. ‫16 הביטים השנייים של הערך מקודדים מספר ייחודי שהוקצה על ידי מערכת AS המקורית.

הגישה מוגבלת לייבוא בלבד.

destination == '192.168.0.0/24'

הפונקציה מחזירה את הערך true אם נתיב BGP תואם ל-192.168.0.0/24 (התאמה מדויקת).

destination != '192.168.0.0/24'

הפונקציה מחזירה true אם מסלול BGP לא תואם ל-192.168.0.0/24 (התאמה מדויקת).

destination.inAnyRange(r)

הפונקציה מחזירה true אם נתיב BGP נמצא בטווח r, כאשר r הוא אחד מהערכים הבאים:

  • מחרוזת עם קידומת שמקודדת ב-CIDR, כמו 192.168.0.0/24.
  • הסוג המופשט שמוחזר על ידי prefix(), או אחת מהשיטות הרהוטות שאפשר להפעיל ב-prefix(), כמו longer().
  • רשימה הטרוגנית שבה כל רכיב חייב להיות אחד מהערכים שתוארו קודם.

אפשר להשתמש ב! כדי לשלול את התנאי.

prefix('192.168.0.0/24')

מחזירה אובייקט קידומת שמייצג את טווח ה-CIDR‏ 192.168.0.0/24, שמשמש עם destination.inAnyRange().

prefix('192.168.0.0/24').longer()

הפונקציה מחזירה אובייקט של טווח קידומת שהוא עותק של prefix() עם סוף הטווח שמוגדר למקסימום של משפחה לכל כתובת של קידומת הקלט (/32 או /128), ותחילת הטווח שמוגדר לאורך של קידומת הקלט בתוספת אחד.

prefix().orLonger()

מחזירה אובייקט של טווח קידומות שהוא עותק של prefix() עם סוף הטווח שמוגדר למקסימום לכל משפחה של כתובות של קידומת הקלט (/32 או /128).

prefix().lengthRange(20, 30)

הפונקציה מחזירה אובייקט של טווח קידומת שהוא עותק של prefix() עם הגדרת ההתחלה של הטווח ל-‎ /20 והסיום ל-‎ /30.

prefix().upTo(30)

מחזירה אובייקט של טווח קידומת שהוא עותק של prefix() עם סוף הטווח שמוגדר לקידומת הקלט /30.

x || y

הפונקציה מחזירה את הערך true אם x או y הם true.

הפרמטרים x ו-y חייבים להיות ביטויים בוליאניים שמשתמשים במאפיין communities או במאפיין destination.

בגלל הכללים של פעולות || (OR), כל התנאים הם למעשה אפס או יותר פעולות התאמה של destination שמחוברות באמצעות OR.

(D0 || D1 || ... || Dm)

בטבלה הבאה מוצגת דוגמה לשימוש ב-prefix כדי ליצור ביטויים רגולריים מורכבים, בהשוואה לכמה ספקי נתבים:

Cloud Router Cisco ערער הסבר

'192.168.0.1'

192.168.0.1

192.168.0.1

התאמה מדויקת לקידומת 192.168.0.1/32

'192.168.0.0/24'

prefix('192.168.0.0/24')

192.168.0.0/24

192.168.0.0/24 exact

התאמה מדויקת לקידומת 192.168.0.0/24

prefix('192.168.0.0/24').longer()

192.168.0.0/24 ge 25 le 32

192.168.0.0/24 longer

התאמת הטווח בתוך 192.168.0.0/25 אל 192.168.0.0/32

prefix('192.168.0.0/24').orLonger()

192.168.0.0/24 le 32

192.168.0.0/24 orlonger

התאמת הטווח בתוך 192.168.0.0/24 אל 192.168.0.0/32

prefix('192.168.0.0/24').lengthRange(25, 30)

192.168.0.0/24 ge 25 le 30

192.168.0.0/24 prefix-length-range /25-/30

התאמת הטווח בתוך 192.168.0.0/25 אל 192.168.0.0/30

prefix('192.168.0.0/24').upTo(30)

192.168.0.0/24 le 30

192.168.0.0/24 up to /30

התאמת הטווח בתוך 192.168.0.0/24 אל 192.168.0.0/30

התאמה לכל המסלולים

בטבלה הבאה מתוארות דוגמאות שתואמות לכל המסלולים בביטוי ההתאמה של מדיניות מסלולי BGP:

פעולה

תיאור

communities.matchesEvery([])

תואם לכל הנתיבים של מדיניות הייבוא.

destination.inAnyRange(prefix('0.0.0.0/0').orLonger())

התאמה לכל כתובות ה-IPv4 במדיניות ייבוא או ייצוא.

destination.inAnyRange(prefix('::/0').orLonger())

התאמה לכל כתובות IPv6 במדיניות ייבוא או ייצוא.

destination.inAnyRange([prefix('0.0.0.0/0').orLonger(), prefix('::/0').orLonger()])

התנאי תואם לכל המסלולים במדיניות ייבוא או ייצוא.

מאפייני הפעולה

בטבלה הבאה מפורטים מאפייני הפעולה שזמינים למדיניות של נתיבי BGP:

מאפיין

תיאור

הגבלות

asPath

רשימת מספרי ה-AS שהעדכון של נתיב ה-BGP עבר דרכם

ייצוא וייבוא של מדיניות

communities

רשימת הקהילות בנתיב

ייצוא של כללי מדיניות בלבד

med

המבדיל (discriminator) של הנתיב ליציאות מרובות (MED)

ייצוא וייבוא של מדיניות

פעולות של פעולות

בטבלה הבאה מפורטות פעולות הפעולה שזמינות למדיניות של נתיבי BGP:

פעולה

תיאור

הגבלות

accept()

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

ללא

drop()

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

ללא

nextPolicy()

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

ללא

asPath.prependSequence([1, 2, 3])

מוסיפה לרשימה של מספרי AS את מאפיין AS-PATH, כרצף.

הארגומנטים חייבים להיות מספרים שלמים בטווח של 32 ביט.

ללא

communities.add('65001:1234')

הערך של הקהילה יתווסף לרשימת הקהילות.

הערך של הקהילה יכול להיות קהילה אחת או רשימה של קהילות.

‫Cloud Router מתעלם מכל ערכי הקהילה של קהילות פרטיות שממופים למספרי מערכות אוטונומיות (ASN) שבבעלות Google:

‫6432, ‏ 15169, ‏ 16550, ‏ 16591, ‏ 19448, ‏ 19527, ‏ 22859, ‏ 26910, ‏ 32381, ‏ 36039, 36384, ‏ 36385, ‏ 36492, ‏ 55023

ייצוא של כללי מדיניות בלבד

communities.remove('65001:1234')

הסרת הערך של הקהילה מהרשימה של הקהילות.

הערך של הקהילה יכול להיות קהילה אחת או רשימה של קהילות.

‫Cloud Router מתעלם מכל ערכי הקהילה של קהילות פרטיות שממופים למספרי מערכות אוטונומיות (ASN) שבבעלות Google:

‫6432, ‏ 15169, ‏ 16550, ‏ 16591, ‏ 19448, ‏ 19527, ‏ 22859, ‏ 26910, ‏ 32381, ‏ 36039, 36384, ‏ 36385, ‏ 36492, ‏ 55023

ייצוא של כללי מדיניות בלבד

communities.replaceAll(['65001:1234'])

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

מערכת Cloud Router מתעלמת מכל ערכי הקהילה של קהילות פרטיות שממופים למספרי מערכות אוטונומיות (ASN) שבבעלות Google:

‫6432, ‏ 15169, ‏ 16550, ‏ 16591, ‏ 19448, ‏ 19527, ‏ 22859, ‏ 26910, ‏ 32381, ‏ 36039, 36384, ‏ 36385, ‏ 36492, ‏ 55023

ייצוא של כללי מדיניות בלבד

med.set(12345)

הגדרת MED ל-12345.

הערך של MED צריך להיות מספר שלם לא חתום בין 0 לבין 232.

ללא

med.add(12345)

הערך 12345 מתווסף לערך המוגדר של MED.

הערך של MED צריך להיות מספר שלם לא חתום בין 0 לבין 232. אם התוצאה של הפעולה גדולה מ-232 – 1, הפעולה הזו מגדירה את MED לערך 232 - 1.

ללא

med.subtract(12345)

הפונקציה מחסרת את 12345 מהערך המוגדר של MED.

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

ללא