BGP Regular Expression
התמונה באה להמחיש, זה לא מדענות חלל.. :)
בגדול בעולם שלנו (עולם התקשורת) ברוב המקרים אנחנו משתמשים בפונקציה זו על מנת לפלטר\למצוא ניתובים שנמצאים תחת (AS (Autonomous System מסוים בפרוטוקול BGP, לכן המאמר ברובו הולך להתייחס לשימוש שלנו באמצעות Regexp בתוך BGP.
** חשוב לציין כי דרושה היכרות עם פרוטקול BGP על מנת להבין לעומק את המדובר במאמר.
בגדול בעולם שלנו (עולם התקשורת) ברוב המקרים אנחנו משתמשים בפונקציה זו על מנת לפלטר\למצוא ניתובים שנמצאים תחת (AS (Autonomous System מסוים בפרוטוקול BGP, לכן המאמר ברובו הולך להתייחס לשימוש שלנו באמצעות Regexp בתוך BGP.
** חשוב לציין כי דרושה היכרות עם פרוטקול BGP על מנת להבין לעומק את המדובר במאמר.
ה-Regular Expressions תואם את ערך ה-AS_PATH, שדה ה- AS_PATH יכול להרכיב את האלמנטים הבאים כגון: AS_SET (רשימה לא מסודרת של מספרי ה-ASים), AS_SEQUENCE (רשימה מסודרת של ה-ASים), AS_CONFED_SET, AS_CONFED_SEQUENCE שזה אותו דבר רק פה זה
בתוך Confederations .
על מנת לתחום את ערך
מאפיין ה-AS_PATH יש להסתכל על הערך שמגיע מהשכן עם מספר
ה-AS
משמאל לימין.
על מנת לתחום את הנתב
שמייצר את הניתוב יש להסתכל מימין לשמאל בערך ה-AS_PATH.
· כאשר
תוחמים את ערך מאפיין ה-AS_SET יש לסגור את מספרי ה-AS בתוך סוגריים מסולסלות – {100,200,300}.
כאשר תוחמים נתיב בתוך Confederation יש לסגור את מספרי ה-AS בתוך סוגריים תוך שימוש
ב-Backslash על מנת להימנע מהשימוש המיוחד בתו - " \(100\) "
כאשר תוחמים נתיב בתוך Confederation יש לסגור את מספרי ה-AS בתוך סוגריים תוך שימוש
ב-Backslash על מנת להימנע מהשימוש המיוחד בתו - " \(100\) "
אנחנו הולכים לדון בתבניות היעילות ביותר בעת שימוש ב- Regular Expressions אשר מתאימות לעולם האמיתי.
תחילה ניזכר בערכים הבסיסיים של Regular
Expressions:
" . " – נקודה – משמע כל ערך.
" ? " – סימן שאלה – משמע חזור על הערך הקודם פעם אחת או אפס פעמים.
" ? " – סימן שאלה – משמע חזור על הערך הקודם פעם אחת או אפס פעמים.
" * " – כוכבית –
משמע חזור על הערך הקודם אפס או מספר פעמים.
" + " – פלוס –
משמע חזור על הערך הקודם פעם אחת או יותר.
" ^ " - פסיק עליון – תואם את תחילת הערך (הערך השמאלי
ביותר).
" $ " – דולר –
תואם את סוף הערך (הערך הימני ביותר)
" [ ] " –
סוגריים מרובעות – משמע טווח של מספרים.
" _ " – קו
תחתון – משמע זהו תו שתואם לרווח שמפריד בין ASים או
הסוף של רשימת ה-AS PATH.
פונקציה נוספת וחשובה מאוד ב- Regular Expressions כולל יצירת קבוצות והתייחסות לאחור.
ישנה אפשרות להשתמש בסוגריים על מנת לתחום מספרי ASים בצורה הבאה: (123 124 1+) ולכל קבוצה מוצמד מספר שמתחיל משמאל לימין.
פונקציה נוספת וחשובה מאוד ב- Regular Expressions כולל יצירת קבוצות והתייחסות לאחור.
ישנה אפשרות להשתמש בסוגריים על מנת לתחום מספרי ASים בצורה הבאה: (123 124 1+) ולכל קבוצה מוצמד מספר שמתחיל משמאל לימין.
לדוגמא הערך 1 2 (3 4) 5 6 (7 8) הקבוצה הראשונה היא קבוצה מספר 1 והקבוצה
השנייה היא מספר 2.
ניתן לאחר מכן להחזיר את הקיבוץ באמצעות פקודות \1 \2 וכו'.. עבור מספרי הקבוצות.
עכשיו ניקח דוגמאות פרקטיות:
·
^$ - ערך זה משמעו- מאפיין
ה- AS PATH ריק, מה שאומר – ניתובים שנוצרו ב-AS המקומי.
·
^254_ - ערך זה משמעו ניתובים
שנתקבלו ישירות מ-AS 254.
יש לשים לב לקו התחתון " _ " שהוא חשוב מאוד, כיוון שיכול להיות AS סמוך שמתחיל במספר 254.
יש לשים לב לקו התחתון " _ " שהוא חשוב מאוד, כיוון שיכול להיות AS סמוך שמתחיל במספר 254.
·
_254_ - ערך זה משמעו ניתובים
שעוברים דרך AS 254, סימן הקו התחתון מחייב
על מנת להפריד בין ה-ASים.
·
_254$ - משמע ניתובים שנוצרו ב-AS 254 – הביטוי תואם את ה-AS הימני ביותר (שם נוצר הניתוב).
·
^ ([0-9] +) _254 – משמע
ניתובים מ-AS 254 רק כאשר הם במרחק של HOP אחד בלבד.
·
^254_ ([0-9]
+)
– משמע ניתובים משכן שהוא מקושר ישירות (DC) ל-AS 254.
·
^(254_) +
([0-9]+) – משמע ניתובים מהקליינטים
הסמוכים ל-AS 254 עם לקיחה בחשבון ש-AS 254 מבצע Prepend
·
^254_ ([0-9]
+_) + - משמע ניתובים שמתקבלים מקליינטים של השכן
הסמוך AS 254 תוך לקיחה בחשבון שהשכנים מבצעים AS PATH Prepending.
·
^\ (65009\) – משמע
ניתובים שנלמדו משכן Confederation Peerשמספרו
הוא 65009.
שימוש ב- Regular Expressions מבוצע בתוך IP as-path
access-list בצורה הבאה:
ip as-path access-list
ה-as-path acl יכול להיות מופעל על שכן
מסויים אמצעות Filter-list בצורה הבאה:
neighbor x.x.x.x filter-list {in | out}
אך יחד עם זאת הגישה הטובה ביותר להפעיל את ה-as-path
acl היא תחת RM בפקודה הבאה:
route-map AS_PATH permit 10
match as-path
חשוב לזכור!
ניתן לבדוק את Regular
Expressions בתוך טבלת ה-BGP באמצעות הפקודות:
show ip bgp Regexp < string>
Or
show ip bgp quote-regexp
הפקודה השנייה מאפשרת שימוש בפייפ
| על מנת לפלטר תוצאות.
מקווה שעזרתי.
לכל שאלה ניתן לפנות אליי במייל.
מקווה שעזרתי.
לכל שאלה ניתן לפנות אליי במייל.