Link Aggregation (Port Channel) - LAG: מה זה, ומדוע צריך את זה?
מה הוא LAG, מה הם המאפיינים של LAG, מדוע צריך אותו, היכן משתמשים בפיצ'ר הזה וכיצד ניישם אותו ברשת שלנו. כל זאת נלמד במאמר הזה!
אז קודם כל, מה זה LAG ולמה הוא משמש
משמעות המילה LAG - Link Aggregation היא בעצם לאחד כמה חיבורי רשת נפרדים ולהפוך אותם ל"לינק" אחד וירטואלי.
כל הביצים בסל אחד
בכל רשת פנימית (LAN) של חברות ואירגונים שונים קיימים המון מחשבים והמון משתמשים שונים שצריכים להתחבר אל הרשת על מנת לעבוד ולגשת למערכות העבודה שלהם.
בכל קומה באירגון יהיה קיים מתג, או יותר, אשר ייתחברו למתג אגריגציה נוסף אשר יאגד אליו את כל המתגים, מתג האגריגציה נמצא בארון תקשורת נפרד בחוות השרתים של האירגון אליו הוא שייך.
מה לא בסדר בזה?
במידה וכל מתג קומתי (Access Switch) ייתחבר למתג האגריגציה (Agg Switch) על ידי כבל יחיד אזי שהאירגון יכול להתקל בבעיה חמורה במידה ויקרה משהו לאותו הכבל:
1) ראשית כל, כלל העובדים שמחוברים אל המתג הקומתי ייתנתקו מהרשת מאחר שכבר לא תהיה להם תקשורת אל מערכות האריגון אשר מתחברות לליבת האירגון (Agg Switches + Core Switches).
2) שנית, מנהלי הרשת יאבדו גישה ניהולית מרחוק אל מתג המשתמשים ולא יוכלו לנהל אותו ולשנות לו הגדרות.
3) יהיה צורך לחבר כבל רשת חדש בין המתג הקומתי לבין מתג האגריגציה - מדובר על כבל באורך של כמה עשרות אם לא מאות מטרים, דבר שעלול לקחת המון זמן לביצוע ובכך כל משתמשי האירגון של אותה הקומה לא יוכלו לעבוד עד שלא יסדרו את הכבל החדש.
אז מה הפתרון לסיטואציה הזו?
על מנת להתגבר על בעיה מהסוג הזה נוצר הצורך לחבר כמה כבלים שונים בין כל מתג קומתי לבין מתג האגריגציה, כעת במידה וכבל אחד נופל, הכבל השני עדיין "חי" ופועל ומאפשר לרשת לפעול כראוי.
אופן הפעולה של המתג פועל כך שבמידה ומתחברים אליו כמה כבלים שונים, נוצר מצב חדש אשר נקרא "לולאת רשת" (Loop) בכך שהמידע עובר בצורה לא יעילה בין המתגים אחד לבין השני וכתוצאה מכך קורים הדברים הבאים:
1) משתמשים מאבדים שוב פעם גישה לרשת מאחר שהמידע שהם שולחים "נתקע" בתוך הלולאה שנוצרת בין המתגים השונים.
2) המתגים לאט לאט אוגרים עוד ועוד חבילות מידע, משדרים את המידע בצורת "הפצה" (Broadcast) ובכך מעמיסים על רוחב הפס של הרשת וגורמים לאיטיות חמורה עד כדי מצב שכמה מתגים פשוט ייקרסו מרוב מאמץ על המעבד והזיכרון שלהם.
בקיצור, צריך היה למצוא פיתרון לבעיה:
על מנת להתגבר על הבעיה הזאת, איגוד ה IEEE הבין לאומי המציא את פרוטוקול ה STP (נקרא תקן 802.1Q) אשר מונע לולאות ברשת ה LAN של האירגון במידה ומחברים כמה מתגים אחד לשני ע"י מספר רב של כבלים.
*הערה: הפרוטוקול מבצע זאת ע"י כך שהוא חוסם את כל הלינקים שיכולים לגרום להיווצרות של LOOP.
אז ע"י פרוטוקול ה- STP חסכנו לעצמינו את הבעיה של הלולאות ברשת וגם יש לנו קווי גיבוי במידה וקורה משהו לאחד הכבלים, אך אנחנו כעת נתקלים בבעיה נוספת ומעצבנת: שילמנו מאות שקלים לקווי גיבוי שפרוטוקול ה STP חסם על מנת למנוע לופים ברשת, לכן אותם קווי גיבוי לא מעבירים שום מידע והם סתם מבוזבזים ולא מנוצלים.
תרגיל קצר:
נניח שיש לנו מתג קומתי בעל 20 משתמשים.
כל משתמש יכול להעביר מידע במהירות של 100 מגה לשניה.
המתג הקומתי מחובר למתג אגריגציה בשני כבלים שעובדים במהירות של 1,000 מגה לשניה.
במצב הבסיסי ביותר של הרשת, כמה רוחב פס מקסימלי יהיה לכלל המשתמשים בקומה?
תשובה:
מאחר שפרוטוקול ה STP חסם לנו לינק אחד של 1,000 מגה, אז בפועל במקום 2,000 מגה רוחב פס אנחנו נקבל רק 1,000 מגה בין המתג הקומתי לבין מתג האגריגציה, לכן במידה וכל המשתמשים בקומה יעבירו מידע במהירות של 100 מגה לשניה (יש 20 משתמשים להזכירכם) אנחנו נתקל בבעיית איטיות מאחר ש 20 משתמשים כפול 100 מגה שווה ל 2,000, ולנו יש רק 1,000, לכן יש עומס גדול על הרשת וכל המשתמשים יחוו ניתוקים ואיטיות.
אז מה הקשר של כל זה ל-LAG
על מנת להתגבר על הבעיה הזאת ועוד כמה בעיות שפרוטוקול ה STP מביא עימו, חשבו על פיצ'ר אשר מאפשר לאגד כמה כבלים שונים ולשמש כמעין כבל / חיבור יחיד אשר מאפשר לנצל את כל קווי הגיבוי ברשת מבלי ליצור לולאה, והוא נקרא: LAG - Link Aggregation.
קיימים כמה דרכים להגדיר LAG:
1) ע"י שימוש בפרוטוקול רשת של IEEE תקן מספר 802.3ad (נקרא LACP - Link Aggregation Control Protocol), או ע"י פרוטוקול PagP שהוא קנייני לחברת סיסקו.
2) ע"י הגדרה סטטית (ידנית) שמכריחה את הפורטים של המתגים לפעול בתור LAG אחד עם השני.
הגדרה סטטית של LAG
בהגדרה סטטית אנחנו מגדירים לשני מתגים שמחוברים אחד לשני בכמה כבלים שונים לפעול בתצורת LAG, ואנחנו מכריחים את הפורטים שלהם לפעול בכוח, אפילו אם הגדרנו עליהם הגדרות לא נכונות שיכולות לגרום לבעיות כגון לופ ברשת או עומס וצפיפות.
בשיטה הזאת, במידה ונוצרת בעיה בהגדרה, הרשת תקרוס או שיהיו בעיות שיהיה קשה מאד למצוא ולהבין מה הגורם שלהם ולכן אנו נמנע מהשימוש של ההגדרה הזאת בליבת הרשת ונשתמש בה רק במקרים של הגדרות מאד בסיסיות ופשוטות שלא דורשות ניהול ושינויים תכיפים.
הגדרה דינאמית של LAG
ע"י שימוש בפרוטוקול ה LACP, אנחנו נגדיר לשני המתגים על כל הפורטים שמחוברים ביניהם לפעול ע"י הפרוטוקול הדינאמי, ובכך הם יתקשרו אחד עם השני ע"י הודעות בקרה מיוחדות שנועדו לזהות שגיאות בקונפיגורציה (הגדרות), אי תאימות בין הפורטים אחד של השני וכו'.
בכך המתגים ידעו ליצור LAG בצורה אוטומטית מבלי להוות שום סיכון של בעיות ברשת מאחר שבמידה והמתגים יזהו אי תאימות כלשהי, אז המתגים יבטלו את ה LAG ביניהם ובכך הפורטים שלהם יחזרו לעבוד בצורה רגילה שדורשת התערבות מפרוטוקול ה STP לחסום אחד או כמה מקווי הגיבוי על מנת למנוע לופים ברשת ובעיות שונות ברשת כפי שהוסבר קודם.
כיצד LAG עובד - הסבר טכני מעמיק ומפורט
בדוגמה שלנו קיימים שני מתגים אשר מחוברים אחד לשני ע"י 2 כבלים.
- הכבל הראשון מחובר בפורט Gi1/0/1 בשני המתגים לסירוגין
- הכבל השני מחובר בפורט Gi2/0/1 בשני המתגים לסירוגין
על מנת ששני המתגים יפעלו בעזרת LAG אחד עם השני, ועל מנת שיוכלו לנצל את רוחב הפס של שני הפורטים שלהם (ולא רק כבל 1 בגלל ש- STP יחסום אחד מהם), אנחנו נגדיר LACP על שני הפורטים של שני המתגים, ונשייך אותם לפורט וירטואלי יחיד אשר ינהל את אותם שני פורטים במקביל.
הגדרת ה LACP בעצם משייכת את פורטים Gi1/0/1 + Gi2/0/1 לפורט וירטואלי על המתג, לדוגמה: (Port-Channel 1 (PO1 אך לפני שנשייך את שני הפורטים שלנו ל PO1, אנחנו נוודא שהם מוגדרים בדיוק אותו הדבר 1 ל-1 על מנת להימנע מבעיות.
לאחר שווידאנו שהכל תקין, כעת נשייך את הפורטים ל PO1 ושני המתגים יתחילו לשלוח הודעות בקרה אחד לשני כל 30 שניות על מנת לאמת שההגדרות של הפורטים שלהם זהות לחלוטין.
אחרי שהמתגים קיבלו הודעות בקרה אחד מהשני וזיהו תאימות מלאה, כעת הם מכירים אחד את השני דרך הפורט הלוגי שנוצר - PO1, כל המידע שיעבור ביניהם יישלח לכיוון הפורט הלוגי PO1 (יהיה PO1 בשני המתגים, הפורט הלוגי הזה הוא ייחודי לכל מתג).
כאשר המתגים יקבלו מידע דרך אחד הפורטים הפיזיים שלהם: Gi1/0/1 או Gi2/0/1, הם ידעו שהמידע הגיע דרך ה LAG, לכן הם ישייכו את המידע בתוך הזיכרון שלהם לפורט הלוגי: PO1 אשר קיים בזיכרון של המתגים (לכן הוא נקרא פורט לוגי).
כאשר המתגים ישלחו מידע אחד לשני, הם יעבירו את המידע לפורט הלוגי: PO1, הפונקציה שבתוך המתג תזהה שהפורט הלוגי מסונכרן מול שני פורטים פיזיים נפרדים: Gi1/0/1 ו- Gi2/0/1, כעת הפונקציה צריכה לבחור האם להעביר את המידע דרך הפורט הראשון או דרך הפורט השני.
שאלה:
עכשיו כשייצרנו LAG בין שני המתגים, רוחב הפס שלהם הוכפל מ- 1,000 מגה, ל 2,000 מגה.
במידה ומחובר למתג הקומתי משתמש קצה אשר יכול להעביר 2,000 מגה, האם הוא יכול להעביר זאת ע"י שימוש בסשן יחיד? (סשן = שיחה, כל שיחה מובדלת ע"י פרוטוקול TCP / UDP בפורט ייחודי לאותה השיחה)
תשובה:
התשובה היא לא!
המתגים אומנם מחוברים אחד לשני בשני לינקים של 1,000 מגה, אך הם לא יכולים להעביר על לינק של 1,000 מגה מידע שגדול יותר מ 1,000 מגה מאחר שזאת המגבלה שלו.
מה כל כך מיוחד בLAG הזה?
פיצ'ר ה LAG מאפשר להעביר מידע ברוחב פס של 2,000 מגה (בדוגמה שלנו) אשר מתפרס על גבי מספר סשנים / שיחות נפרדות כך שכל סשן צורך את כמות רוחב הפס של עצמו.(ניתן להגדיר LAG ע"י מספר רב של כבלים, חלק מרכיבי התקשורת תומכים ב-8 לינקים בעוד רכיבים אחרים יכולים לתמוך ב-16, 32 ואף יותר מה שמכפיל משמעותית את התפוקה הכוללת של הרשת שלנו ואת מספר המשתמשים שיכולים להתחבר אל הרשת מבלי ליצור עומס ואיטיות).
כיצד זה מתבצע?
הפונקציה שדיברנו עליה מקודם צריכה לבחור דרך איזה פורט להעביר את המידע מבין כלל הפורטים של אותו ה LAG והיא מבצעת זאת ע"י החישוב הבא:
- כל חבילת מידע מורכבת מכמה ערכים במידע כגון כתובות MAC, כתובות IP, ומספר פורט.
- הפורט הלוגי PO1 יודע ששייכים אליו שני פורטים פיזים בדוגמה שלנו, לכן ברמה הבינארית ניתן ליצור 2 מספרים שונים ע"י ייצוג של ביט אחד ויחיד מאחר שהערך של כל ביט יכול להיות מורכב או מהערך '0' לוגי או מהערך '1' לוגי.
- כעת תתבצע פעולה מתמטית בצורה הבאה:
- הפונקציה תבצע פעולת XOR (פעולה לוגית ברמת הביט) על הביט האחרון בין כתובת ה Source IP לבין כתובת ה Destination IP של חבילת המידע שהתקבלה לתוך PO1.
- התוצאה של הפעולה המטמטית תניב תוצאה בינארית שתהיה שווה ל '0' לוגי או '1' לוגי.
- במידה והתוצאה תהיה שווה ל '0' לוגי, הפונקציה תעביר את חבילת המידע דרך הפורט הראשון ב LAG, במידה והתוצאה תהיה שווה ל- '1' לוגי אז הפונקציה תדאג להעביר את המידע דרך הפורט השני של ה LAG.
תרגיל דוגמה:
נניח שמחשב בעל כתובת IP מספר 10.0.0.1 צריך לשלוח מידע לכיוון מחשב בכתובת 20.0.0.4.
בדרך קיימים 2 מתגים עם LAG של 3 כבלים שדרכם המידע צריך לעבור, כיצד נחשב דרך איזה פורט פיזי מבין כלל הפורטים שמרכיבים את ה- LAG המידע יעבור?
פתרון:
טבלת ה- XOR מבצעת חישוב לפי הטבלה הבאה:
צמד ביטים | תוצאה
0 0 | 0
1 0 | 1
0 1 | 1
1 1 | 0
הסבר: כאשר הערך של שני הביטים זהה, תוצאת פעולת ה- XOR שלהם אחד בשני תניב את התוצאה '0', כאשר הערך של שני הביטים יהיה שונה, פעולת ה XOR בין שני הביטים תניב את התוצאה '1'.
*הערה: פעולת XOR היא פעולה מטמטית בשפה הבינארית, אין פעולה כזאת בחשבון עשרוני.
מאחר שיש לנו 3 פורטים ב- LAG, אז על מנת ליצור 3 צירופי מספרים שונים אנחנו צריכים להשתמש בשני ביטים, אך בפועל שני ביטים מאפשרים לבצע צירוף של 4 מספרים שונים:
00 - מסמל את הלינק הראשון
01 - מסמל את הלינק השני
10 - מסמל את הלינק השלישי
11 - מסמל את הלינק הראשון
לכן במידה ותוצאת ה- XOR בין כתובות ה IP של המידע תניב את התוצאה 11 - הפונקציה תחליט להעביר את המידע דרך הפורט הראשון של ה - LAG ולכן במקרה כזה יהיה על הפורט הראשון ב LAG יותר עומס לעומת שאר הפורטים ולכן יכול להיווצר מצב שהפורט הראשון עמוס מאד בעוד שני הפורטים האחרים הגיעו רק למחצית מהקיבולת שלהם.
עכשיו לחישוב:
כתובת ה Source IP שלנו היא 10.0.0.1 - ערך 2 הביטים האחרונים של הכתובת הזאת בשפה הבינארית הינם "01"
כתובת ה Destination IP שלנו היא 20.0.0.4 - ערך 2 הביטים האחרונים של הכתובת הזאת בשפה הבינארית הינם "00"
כעת נבצע פעולת XOR בין "01" לבין "00":
1 0
0 0
===
1 0
התוצאה שקיבלנו היא "01", לכן המתג יעביר את חבילת המידע שלנו דרך הפורט הפיזי השני של ה- LAG.
יתרונות השימוש ב- LAG
אחד הייתרונות המרכזיים של ה- LAG הוא לתת קו גיבוי פעיל בין שני מתגים ברשת של האירגון שלנו.
ייתרון נוסף הוא להימנע מבעיות שעלולות להיווצר כתוצאה מאופן הפעולה של פרוטוקול ה- STP.
הגדרת ה- LAG מפשטת למהנדסי הרשת את טופולוגיית הרשת והופכת אותה לברורה יותר.
ה- LAG מבצע פעולה מטמטית על מנת לחלק את העומס של כל הפורטים שמרכיבים אותו בצורה שווה ובכך להימנע מעומס על אחד מהפורטים ולגרום לאיטיות.
חסרונות השימוש ב- LAG
קשה מאד לעקוב דרך איזה פורט מבין כלל הפורטים שמרכיבים את ה- LAG המידע עובר.
הפרוטוקול דורש ידע נוסף והגדרות נוספות על מנת לנהל אותו מבלי ליצור בעיות.
המתג מבצע פעולות ו"מבזבז" משאבים נוספים על מנת לבצע את החישובים דרך איזה פורט להעביר את המידע.
לא כל ציודי התקשורת מאפשרים לעבוד ב- LAG וחלקן לא תומכים אחד בשני ולכן צריך להתכונן מראש טוב טוב ולוודא תאימות בין כלל ציודי הרשת של האירגון לפני שמזמינים רכיבי תקשורת.
לסיכום
אז למדנו מה הוא ה- LAG, מדוע צריך אותו, כיצד ניישם אותו ברשת והבנו כיצד הוא עובד וכיצד הוא מחליט דרך איזה פורטים להעביר את המידע.
למדנו מה הם ייתרונות וחסרונות הפיצ'ר ומדוע ומתי נרצה להשתמש בו.