שאלה שאני נשאל הרבה פעמים: איך מודדים רוחב פס ברשת, וזה יכול להיות רוחב פס על קו תקשורת, מול שרת, ב- Uplinks של מתגים או על כל קו תקשורת אחר. שאלה נוספת: איך אני יודע כמה רוחב פס צורך כל מחשב ,אפליקציה מסוימת, רשת מסוימת וכד'.
ובכן, זה לא מסובך ויש כמה כלים שאנחנו יכולים להשתמש בהם. סוג ראשון של כלים הא כלי SNMP – תוכנות מסחריות כמו NPM של חברת Solarwinds, Whatup, SNMPc של חברת Castlerock ואחרות, או תוכנות חינמיות שרובן מבוססות על MRTG (http://oss.oetiker.ch/mrtg/doc/mrtg.en.html) כמו Cacti, Nagios וכד'. בתוכנות אלו אפשרות לגרפים של התנועה, אפשרות הצגת מפות (לא תמיד) ועוד. החיסרון של תוכנות חינמיות הוא בד"כ מורכבות הפעלה, ולפעמים נדרש גם ידע ב- Linux, Perl או כלים אחרים כדי לעבוד איתן. היתרון בתוכנות המסחריות הוא כמובן נוחות הפעלה, ורוב התוכנות גם נמכרות במחיר של מאות עד אלפי דולרים בודדים. כלי SNMP מבוססים על מערכת שו"ב הדוגמת Agents הנמצאים על הציוד המנוהל, ואוספת מהם נתונים (Polling) או מקבלת מהם אתראות (Traps).
כלי SNMP יציגו לנו עומסים (Packet per second ,Bytes/bits per second), שגיאות, האם העומס הוא Unicast או Non-Unicast וכד' (ועוד אלפי פרמטרים אחרים שלא נתעכב עליהם כאן). כאשר אנו רוצים לראות גם את מקור העומס או לאן הוא מיועד (לפי כתובות IP) ואיזו אפליקציה מדובר (לפי TCP/UDP Port Number), לזה יש לנו משפחה של פרוטוקולים שנראה אותם בשם NetFlow (של סיסקו), JFlow (של ג'וניפר) ובשנים האחרונות יצאו גם בתקן (RFC7011). כלים אלו מבוססים על ממשקים ברמה 3 (Layer 3 Interfaces) שאוספים מידע וכל פרק זמן מוגדר מראש שולחים אותו למערכת השו"ב.
תוכנות כמו Solarwinds, SNMPc ואחרות יתמכו בד"כ בשתי האפשרויות – SNMP ו- NetFLow באותה האפליקציה או באפליקציות נפרדות, למשל Solarwinds NPM עבור SNMP, ו-NTA עבור NetFlow. מה שמאוד חשוב לשים לב ברכישה של תוכנות מסוג זה שיטת הרישוי: הרישוי יכול להיות לפי כמות כתובות IP, כמות מבואות במתגים, כמות מבואות ברמה 3 וכד', או צירופים שונים שלהם. צריך לשים לב גם לתמחור של עדכוני תוכנה משנה שנייה והלאה כי גם שם יכולים "לחטוף"…
ועכשיו בואו נראה איך בודקים עומס עם Wireshark. הרעיון הוא פשוט: את המחשב עם ה- Wireshark מתקינים על התחנה הנבדקת או מחברים למתג ומגדירים Port Mirror/Monitor למבוא הנבדק. ועכשיו, זה רק משחק עם פילטרים: Display filters שבהם אנו לוכדים את כל המידע ומגדירים מה אנחנו רוצים לראות, או Capture filters שבהם אנחנו מגדירים מראש מה אנחנו רוצים ללכוד. אם העומס על המבוא הנמדד לא גבוה, עדיך ללכוד את כל המידע וזאת מסיבה פשוטה – אם לדוגמא לכידת מנות על TCP Port 80 כדי לראות בעיה באיטיות ב- HTTP, לא נוכל לראות אם הבעיה נובעת מסיבה אחרת, למשל עקב בעיות DNS.. אז בואו נראה כמה דוגמאות.
הדרך הפשוטה ביותר למדוד עומס היא שימוש ב- IO Graphs (תחת תפריט Statistics). כאן לדוגמא אנחנו רואים גרף פשוט של עומס, על כל התנועה שעוברת על קו תקשורת. אפשר להגדיר Packets/Bytes/Bits per second (וגם אפשרויות מתקדמות יותר שעוד נדבר עליהן), לשנות את סוג וצבע הגרף, להגדיר פילטרים (עוד מעט נראה), לשנות את הסקאלה (Scale) של הזמן, לעשות Zoom (צד שמאל למעטה) ועוד. על ה- IO Graphs נדבר בפרק נפרד.
ומה אם אנחנו רוצים לראות רוחב פס של אפליקציה מסוימת? של מחשב מסוים או רשת מסוימת? מכאן זה הכול משחק עם פילטרים (בפורמט של Display filters).
ולראות מה אנחנו מודדים ניתן בתמונה הבאה. קו תקשורת מעביר תנועה ממספר רב של כתובות IP (End device), כאשר כל כתובת IP עובדת במספר קישורים למספר כתובות יעד (TCP Connections), ולכל קישור יש רוחב פס אפקטיבי (Throughput). כל אחד מנתונים אלו ניתנים למדידה, בוא נראה איך עושים את זה.
בתמונת מסך הבאה אנחנו רואים את כל התנועה שבין שתי כתובות IP – 192.168.0.7 ו- 192.168.0.86: הפילטר המאופשר הוא:
ip.addr == 192.168.0.7 and ip.addr == 192.168.0.86
ואם אנחנו רוצים לראות גם את הכיוון של המידע, כלומר מי שולח למי, נאפשר את שני הפילטרים הבאים:
ip.src == 192.168.0.7 and ip.dst == 192.168.0.86 עבור ה- Downstream
ip.dst == 192.168.0.7 and ip.src == 192.168.0.86 עבור ה- Upstream
(למי שלא מכיר את ה- Syntax של Display filters – יש המון חומר על זה ברשת, פשוט תעשו גוגל על Wireshark Display Filters)
ומה שנקבל:
וכאן אנחנו רואים כמובן שבעבודה ב- Terminal Server הרוב המוחלט של ה- Traffic הוא בכיוון Downstream, ובכיוון Upstream יש כמה Kbps לכל היותר, אבל על עבודת אפליקציות ברשת יהיו כמה מאמרי בהמשך.
וכמובן, אם נרצה לראות תנועה של טלפוניה אז נגדיר פילטר על RTP בין נקודות הקצה, אם נרצה תנועה לאתר אינטרנט מסוים אז נגדיר פילטר לפי שם אתר וכד'.
איך נראה אם רוחב הפס "סותם את הקו"? תסתכלו על הדוגמא הבאה. כאן רואים שרוחב הפס הינו בערך 0.82Mbps וזה יכול להיות אחד משני דברים:
- קו ברוחב פס מסוים שנחסם על ידי כמות של תנועה שגדולה מרוחב הפס.
- אפליקציה שזה בדיוק מה שהיא צריכה, למשל שידור רדיו שיהיה ברוחב פס קבוע של 100Kbps, 200Kbps או רוחב פס אחר (תלוי באיכות הקול, בד"כ אלו המספרים)
ישנם עוד מספר כלים ב- Wireshark עבור מדידת רוחב פס, והרבה טריקים בנוסף. אפשר למשל להשתמש ב- TCP Stream Graph (תחת Statistics). מה שחשוב כאן זה להקליק על Packet בכיוון שאותו מודדים את רוחב הפס, ומה שנראה זה את ה- Throughput בכיוון של אותו ה- Packet.
אפשר לשנות את כיוון הגרף לפי כיוון ה- TCP Connection (צד ימין למעטה), לעשות Zoom, ואם נשתמש ב- TCP Stream graphs האחרים אז בכלל נראה דברים מדהימים, אבל על זה בפרק נפרד.
זה היה על קצה המזלג. מבטיח להביא הרבה מקרים מעניינים בהמשך.