מסמך עזר בנושא מאפייני מדיניות של נתיבי 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 של קידומת הקלט.

communitySets('regional')

(תצוגה מקדימה)

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

prefixSets('local')

(תצוגה מקדימה)

הפונקציה מחזירה את רשימת הקידומות שנקראו בערכת הקידומות local בנתב.

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

המבדילה של הנתיב בין נקודות יציאה מרובות (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.

ללא