15 באוק׳ 2010

EtherChannel Concept & Configuration



שלום לכולם,
אחרי הרבה מאוד זמן שלא כתבתי מאמר בבלוג ולאחר בקשות על הנושא אני מעלה מאמר חדש בנושא EtherChannel,
אז מה זה EtherChannel?

ישנם מנהלי רשתות שמכירים את המושג Bonding או Teaming מעולמות אחרים (מיקרוסופט\לינוקס),
EtherChannel זהו מונח שמשתמשים בו בעולם ה-Cisco שבעצם מאפשר לנו לקחת מספר חיבורי רשת פיזיים כגון:
Fast Ethernet או FiberOptic ולאגד אותם לפורט לוגי אחד.
באגה המקצועית איחוד הפורטים נקרא EtherChannel, דבר זה מאפשר לנו להגדיל את רוחב הפס שלנו מ- 200Mbps
(במידה ומדובר בפורט של Fast Ethetnet Full Duplex 100Mbps ) לעד 16 פורטים- בפרוטוקול דינמי לאיחוד פורטים שנקרא LACP שעליו נדבר בהמשך..
בנוסף לאיחוד הפורטים ולהגדלת רוחב הפס איחוד פורטים מאפשר לנו ביצוע יתירות  (Redundancy) משמע,
כאשר פורט מתוך האיחוד פורטים כשל, שאר הפורטים מאפשרים המשך תעבורה תקינה ללא הפרעה למשתמשים ולתעבורת רשת תקינה.

ל-EtherChannel (אשתמש במושג זה במהלך המאמר) ישנן מספר אפשרויות לביצוע הגדרתו התקינה, 2 מהאופציות הן דינמיות (באמצעות פרוטוקול) ושיטה אחת באופן ידני.

השיטה הראשונה עליה אדבר היא באמצעות פרוטוקול שנקרא
 PAGP -Port Aggregation Protocol,
פרוטוקול זה פותח על-ידי סיסקו ולכן הוא נתמך אך ורק בין ציודי סיסקו.
לפרוטוקול זה ישנם מספר אפשרויות אשר בעת ההגדרה אנו נאלץ להגדיר על מנת ששתי הציודים יבצעו את האיגוד בצורה דינמית והם:
1. Auto- אופציה זו היא דיי ניטרלית, משמע אנו ממתינים להודעות PAGP אשר יגיעו מהצד השני של החיבור
 "ויבקשו" להעלות את ה-Port-Channel (מייד אסביר מה אומר המונח).
** גם לאופציית Auto זו יש 2 תתי אפשרויות שניתן להגדיר תחתיו:
1.1 Auto Non-Silent Mode - במצב שאנו מגדירים Auto על מנת להרים קשרי EtherChannel ניתן להוסיף את
     התוספת Non-Silent מה שאומר לנו שאם לא מגיעות פקטות של PAGP על גבי פורט מסויים
 תרים בכל מקרה את ה- EtherChannel.
1.2 Silent Mode - בהגדרה זו אנו אומרים לא להקמת קשרי איגוד אם לא הגיעו פקטות מסוג PAGP.
2. Desirable- באופציה זו אנו שולחים באופן יזום בקשות אל עבר הצד השני בבקשה להעלות את ה-Port-Channel.
3. No - מה שאומר לנו שהצדדים אינם יקיימו קשרי Etherchannel.

הפרוטוקול השני אשר מאפשר לנו להקים קשרי EtherChannel באופן דינמי הוא:
LACP -Link Aggregation Control Protocol
פרוטוקול זה הוא IEEE 802.3ad זאת אומרת שהוא תקן סטנדרטי וניתן להשתמש בו בכל ציוד ולא בהכרח רק Cisco.
פרוטוקול זה הוא גמיש יותר והוא מאפשר לנו לאגד עד 16 פורטים פיזיים בעוד ש PAGP מאפשר רק 8 פורטים שכולם יכולים להיות פעילים,
נוסף על כך אציין כי לא ניתן להשתמש בכל ה-16 פורטים בו זמנית, 8 יכולים להיות פעילים ו-8 נמצאים במצב של Standby.
פרוטוקול זה גם מכיל בתוכו מספר מצבים להפעלת איחוד הפורטים (דיי דומה ל PAGP) השוני הוא מבחינת טרמינולוגיה והם:
1. Passive - מה שאומר לנו בדומה ל-Auto ב-PAGP אל תקים קשרי EtherChannel אלא אם הצד השני שלח בקשה לכך.
2. Active - בהגדרה זו אנו מגדירים את הפרוטוקול ליזום קשרי EtherChannel.

** על מנת שקשרי האיחוד פורטים יעלה יש אפשרות להגדיר צד אחד למצב של Active וצד שני למצב של Passive ובכך הצד שמוגדר כ-Active יצור את קשרי איחוד הפורטים.
נוסף על כך על אחת כמה וכמה אם 2 הצדדים יוגדרו למצב של Active אזי קשרי האיחוד יעלו ויתבצע קישור.

המצב השלישי עליו אדבר הוא האופציה לא להשתמש בפרוטוקול על מנת להרים קשרי EtherChannel והוא מאוד פשוט:

ON Mode- במצב זה אנו לא משתמשים בפרוטוקול כלשהו ואין לו אופציות אחרות אלא להעלות את קשרי הפורטים (כמובן אם הצד השני מוגדר דומה).

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

כפי שאנו יודעים מתגים עובדים בשכבה שניה של מודל OSI ולכן רוב האפשרויות שלנו להשתמש ב-Load-Balancing היא באמצעות ה-Source Mac וה-Destenation Mac, אם כי לא כולם יודעים אבל מתג יודע גם "לקלף" את ה-Frame ולבדוק מה יש בתוכו שזה בדרך כלל Packet, מה שמאפשר לנו לבצע את ה-Load Balancing גם עפ"י כתובות IP מקור ויעד שהם נמצאים בשכבה שלישית של מודל ה-OSI.
מתג בודק את ה-PACKET מכל מיני סיבות כגון: QOS, ACL וכו' (על QOS אפרט במאמר אחר.. :) ).
חשוב לציין שיש צורך לבחון את התעבורה באופן אינדיבידואלי בהתאם לרשת ולכן לא אוכל להמליץ על שיטה כזו או אחרת לביצוע LB

נחזור ל-EtherChannel אז אלו השיטות שקיימות לביצוע LB בין הפורטים :

dst-ip Dst IP Addr

dst-mac Dst Mac Addr

src-dst-ip Src XOR Dst IP Addr

src-dst-mac Src XOR Dst Mac Addr

src-ip Src IP Addr

src-mac Src Mac Addr
 
 
ועכשיו נעבור להגדרות...
 
על מנת להתחיל בהגדרות דרושים לנו לפחות 2 פורטים ולכן ניתן להשתמש בפקודת Range על מנת להחיל את ההגדרות בו זמנית על מספר פורטים ( כמובן שניתן להגדיר פורט אחד ולאחר מכן את השני):
 
בפקודה הראשונה אנו נכנס אל הממשקים אותם נרצה לאחד במקרה שלי אלו פורטים GIG0/11-12:
 
2960G(config)#int range gigabitEthernet 0/11 - 12
 
לאחר מכן נקליד את הפקודה הבאה (אני אעתיק את סימן השאלה על מנת שתוכלו לראות אילו אפשרויות קיימות):
שימו לב אילו אפשרויות קיימות תחת הפקודה Channel, האחת היא להגדיר פרוטוקול כפי שהסברתי למעלה והשניה היא להגדיר קבוצה.
במצב זה אדגים את מצב ה-LACP:
 
2960G(config-if-range)#channel-?

channel-group channel-protocol

בפקודה זו אגדיר את הפרוטוקול - LACP :
2960G(config-if-range)#channel-protocol ?
lacp Prepare interface for LACP protocol
pagp Prepare interface for PAgP protocol 


לאחר מכן אגדיר את המצב בו אני מעוניין שקשרי האיחוד יעלו - במקרה זה אציין Active:
שימו לב שאת הפקודה הזו אני מקליד תחת ה-Channel-Group :

2960G(config-if-range)#channel-group 1 mode active


אלו ההגדרות הבסיסיות להקמת קשרי איחוד - חשוב לציין שיש צורך להגדיר את הצד השני באותו אופן.

** לאחר שהגדרתי את הקבוצה ואת הפרוטוקול ניתן לבצע פקודת Show Ip Int Brief ולראות שנוצר לי ממשק נוסף שנקרא Port-Channel 1 והוא נמצא ב-UP הן ב-DATA LINK והן ב-PHYSICAL:

Interface              IP-Address      OK? Method Status                Protocol
Port-channel1          unassigned      YES unset  up                    up     


לאחר מכן על מנת לוודא שקשרי האיחוד בין הפורטים אכן עלו בצורה תקינה ניתן להקליד את פקודת ה-Show הבאה:

2960G#sh etherchannel summary 

וזה הפלט שנקבל - שימו לב למקרא ולאות P ליד הפורטים הפיזיים שאומר שהפורטים נמצאים ב-Port-Channel:

2960G#sh etherchannel summary
Flags: D - down         P - in port-channel
I - stand-alone            s - suspended
H - Hot-standby (LACP only)
R - Layer3 S - Layer2
U - in use f - failed to allocate aggregator
u - unsuitable for bundling
w - waiting to be aggregated
d - default port
Number of channel-groups in use: 1
Number of aggregators: 1
Group Port-channel Protocol Ports

------+-------------+-----------+-----------------------------------------------
1 Po1 (SU) -      Gi0/11(P)     Gi0/12(P)  

 לסיום אראה כיצד מגדירים את ה-LB באיחוד פורטים הפקודה היא :

2960G(config)#port-channel load-balance

** הערה:
עוד חשוב לציין כי כל שינוי שאנו מעוניינים לבצע אם זה להפוך את הפורט ל-Trunk או ל- Access או כל שינוי שהוא ברמת פורט, ניתן לבצעו ברמת ה-Port-Channel וההגדרות יחולו על הפורטים הפיזיים מבלי שנצטרך להכנס לכל ממשק וממשק ולהגדיר.
נוסף על כך אומר כי Port-Channel יכול להתחבר גם בין מתגים שונים וגם בין שרתים (ישנם שרתים שיודעים לבצע פעולת אגרגציה) פעולה זו בשרתים נקראת Teaming/Bonding.
Port-Channel יודע לעבוד בשכבה 2 וגם בשכבה 3 משמע ניתן להגדיר עליו כתובת IP וכל מה שמשתמע מכך.


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

ciscobloger@gmail.com




,