חישוב של קצב העברת הנתונים ברשת דרך Interconnect

במדריך הזה מוסבר איך לחשב את קצב העברת הנתונים ברשת, גם בתוךCloud de Confiance וגם למיקומים מקומיים או בענן של צד שלישי שמחוברים באמצעות Cloud Interconnect. במסמך הזה מוסבר איך לנתח את התוצאות, מפורטים המשתנים שיכולים להשפיע על ביצועי הרשת ומובאים כמה טיפים לפתרון בעיות.

מגבלות ושיקולים

  • חלות מגבלות על Cloud Interconnect. מידע נוסף זמין במאמר בנושא מכסות של Cloud Interconnect.
  • מגבלות על כרטיסי NIC: Cloud de Confiance החישוב מתבסס על רוחב הפס של כל מופע של מכונה וירטואלית (VM), ולא על כל כרטיס רשת (NIC) או כתובת IP. סוג המכונה של VM מגדיר את קצב היציאה המקסימלי שלה, אבל אפשר להגיע לקצב הזה רק במצבים מסוימים. בטבלה הזו אפשר לראות את מספר יחידות ה-vCPU לכל סוג מכונה.
  • ההגבלות חלות גם על מכשירים אחרים בנתיב (חומת אש, מתגים עם מאגרי נתונים קטנים ומכשירים של ספקים אחרים). כדי לעקוף את ההגבלות האלה, מבצעים את המשימות הבאות.

    • איסוף נתונים סטטיסטיים של הרשת בחומות אש ובמתגים בנתיב.
    • כדי לבדוק את Cloud Interconnect, עוקפים כמה שיותר מכשירים בין המארח המקומי לבין מכשיר קצה של Google.
    • צריך לזהות ולאמת את כל המכשירים בנתיב שבין הרשת המקומית לבין המכונה הווירטואלית, אם הם יכולים להיות המקור לבעיות ברוחב הפס. Cloud de Confiance

סקירה כללית של כלים למדידת קצב העברת הנתונים ברשת

במדריך הזה מוסבר איך להשתמש בכלים הבאים לחישוב תפוקת הרשת:

  • iPerf3: כלי לבדיקת רשת שיכול ליצור זרמי נתונים של TCP/UDP (עם הליך משנה יחיד או עם כמה הליכי משנה) ולמדוד את קצב העברת הנתונים של הרשת שמעבירה אותם.

    הערה: מומלץ להשתמש ב-iPerf3 רק במכונות עם מעבד יחיד.

  • Netperf: כלי שדומה ל-iPerf3 אבל מתאים לבדיקת קצב העברת נתונים במופעים עם כמה מעבדים (CPU) שמוגבלים על ידי מעבד יחיד.

  • tcpdump: כלי לניתוח חבילות נתונים בשורת הפקודה, שמתעד פרטים של חבילות נתונים ותקשורת TCP/IP לפתרון בעיות מתקדם יותר. הכלי tcpdump תואם לכלים אחרים, כמו Wireshark.

  • Netstat: כלי רשת של שורת פקודה שמציג חיבורי רשת לפרוטוקול בקרת שידור (TCP) (גם נכנסים וגם יוצאים), טבלאות ניתוב וכמה נתונים סטטיסטיים של ממשק רשת (בקר ממשק רשת או ממשק רשת מוגדר באמצעות תוכנה) ופרוטוקול רשת.

  • mtr: כלי לאבחון רשתות שמבצע גם פקודות traceroute וגם פקודות ping. היא בודקת נתבים במסלול על ידי הגבלת מספר הקפיצות שכל מנה יכולה לעבור, ומאזינה לתגובות של התפוגה שלהן.

מדידת קצב העברת הנתונים באמצעות iPerf3

כדי למדוד את קצב העברת הנתונים ממכונה וירטואלית אחת, פועלים לפי התהליך הזה.

בחירת סוג מכונה גדול

כדי לבצע בדיקות של קצב העברת הנתונים, צריך להשתמש בסוג מכונה גדול, כמו n1-standard-8. סוג המכונה הזה מספק מגבלת קצב העברת נתונים יוצאים מקסימלית של 16Gbps, כך שקצב העברת הנתונים היוצאים לכל מכונה וירטואלית לא מפריע לבדיקות.

התקנת הכלים

התקנה של iPerf3,‏ mtr,‏ netstat ו-tcpdump במכונה וירטואלית של Linux

במערכות הפעלה מבוססות Debian, מריצים את הפקודות הבאות:

    sudo apt-get update
    sudo apt-get install iperf3 tcpdump mtr netstat

במערכות הפעלה מבוססות Redhat, מריצים את הפקודות הבאות:

    yum update
    yum install iperf3 tcpdump mtr netstat

התקנה של netperf

במערכות הפעלה מבוססות Debian, מריצים את הפקודות הבאות:

    sudo apt-get install git build-essential autoconf texinfo -y
    git clone https://github.com/HewlettPackard/netperf.git
    cd netperf
    ./autogen.sh
    ./configure --enable-histogram --enable-demo=yes
    make
    cp src/netserver ~/.local/bin
    cp src/netperf ~/.local/bin

במערכות הפעלה מבוססות Redhat, מריצים את הפקודות הבאות:

    sudo yum install git build-essential autoconf texinfo -y
    git clone https://github.com/HewlettPackard/netperf.git
    cd netperf
    ./autogen.sh
    ./configure --enable-histogram --enable-demo=yes
    make
    cp src/netserver ~/.local/bin
    cp src/netperf ~/.local/bin

הרצת בדיקות של הדרישות המוקדמות

  1. מוודאים שגדלי צירוף ה-VLAN מוגדרים בצורה נכונה. מידע נוסף זמין במאמר שינוי של קובצי VLAN מצורפים.
  2. בשני הקצוות של החיבור (כל מסוף), מריצים את הפקודה top או htop כדי לעקוב אחרי השימוש במעבד.
  3. לפני שמריצים בדיקות, כדאי לאסוף נתונים סטטיסטיים על הרשת באמצעות הפקודה netstat.

    netstat -s >> netstat.log
    
  4. במסוף אחר, מריצים את הפקודה tcpdump לפני כל לכידה עם ערך הפרמטר snaplen של 128.

    מריצים את הפקודה הזו בשתי נקודות הקצה.

    sudo /usr/sbin/tcpdump -s 128 -i [DEVICE_INTERFACE] host [IP_ADDRESS of remote side] -w mycap.pcap
    
  5. מקבלים את גודל הזיכרון לקריאה ולכתיבה במארחי המקור והיעד.

    $ sysctl net.ipv4.tcp_rmem
    $ sysctl net.ipv4.tcp_wmem
    $ sysctl net.core.rmem_max
    $ sysctl net.core.rmem_default
    $ net.core.wmem_max
    $ net.core.wmem_default
    $ uname -r
    $ cat /etc/os-release
    

הרצת בדיקות iperf3

מומלץ להריץ כמה זרמים מקבילים של בדיקות iperf3. כדי לקבל תוצאות שימושיות, מומלץ להריץ לפחות ארבע בדיקות ולכל היותר עשר בדיקות.

  1. בטרמינל אחר, מריצים את הפקודה iperf3 server בקצה אחד של החיבור (מכונה וירטואלית או מכונה מקומית). כדי להפעיל כמה סטרימינגים, צריך כמה שרתי iperf3.

  2. מריצים את הכלי iPerf3 עם הדגל udp לבדיקה של Cloud Interconnect. אם קצב העברת הנתונים שנבחר עם UDP מושג, צריך לבצע שלבים נוספים לפתרון בעיות.

  3. כדי להריץ את השרתים המרובים iperf3 משורת הפקודה, מריצים את הפקודות הבאות:

    $ iperf3 -s -p 5101&; iperf3 -s -t 30 -p 5102&; iperf3 -s  -p 5103 &
    
  4. אפשר להשתמש בסקריפט bash הבא כדי להריץ כמה שרתים של iperf3:

    #!/bin/bash
    #start iperf3 server running in background
    
    for i in `seq 0 9`;
    do
            iperf3 -s  -B 10.0.100.35 -t 30 -u -p 521$i &
    done
    

ההגדרה של iperf3 client היא 10 שניות כברירת מחדל, ויכול להיות שזה לא מספיק כדי ש-TCP יגיע לתפוקה המקסימלית. כדי לקבל תוצאות מהימנות יותר, צריך להגדיר את הערך DURATION ל-30 שניות לפחות.

    iperf3 -c [server IP address] -P [THREADS] -t [DURATION]

סקריפט Bash להרצת כמה זרמי UDP של iperf3

echo "UDP iperf test - 10 streams"
for i in `seq 0 9`;
do
       iperf3 -B 10.0.100.35 -c 192.168.50.3 --logfile ~/gcpvm_client-521$i.log -u -b 1G  -l 1390 -t10 -p 521$i    &

done

סקריפט Bash להפעלת כמה זרמי TCP של iperf3

echo "UDP iperf test - 10 streams"
for i in `seq 0 9`;
do
       iperf3 -B 10.0.100.35 -c 192.168.50.3 --logfile ~/gcpvm_client-521$i.log -b 1G  -l 1390 -t10 -p 521$i    &

done

בזמן שהבדיקה של iperf3 פועלת, עוקבים אחרי עומס המעבד בשני המכשירים. אם עומס המעבד קרוב ל-100%, המעבד הוא צוואר בקבוק עבור אחד משרשורי iperf3. במקרה כזה, כדאי להשתמש בכלי Netperf, כי הוא תומך בכמה מעבדים.

אם אי אפשר להריץ את Netperf, אפשר להפעיל כמה שרתים ולקוחות של iPerf3 במסופים שונים ובפורטים שונים בו-זמנית.

ניתוח תוצאות הבדיקה

מבצעים את השלבים הבאים.

  1. בודקים את התוצאות של הלקוח iperf3 כדי לראות את רוחב הפס ואת אובדן המנות.
  2. בודקים את התוצאות של iperf3 השרת כדי לראות אם יש מנות לא מסודרות.
  3. לבצע ניתוח של לכידת חבילות. מריצים את הפקודה הבאה כדי להמיר את קובץ ה-pcap לקובץ טקסט.

    tcpdump -A -[PCAP-FILENAME].pcap > [TXT-FILENAME].txt
    
  4. מריצים את הפקודה הבאה כדי לקבל את סך החבילות ואת החבילות שלא הגיעו בזמן.

    grep -e "Total" -A1 pcap [TXT-FILENAME]
    

    הפלט שיתקבל:

    gcpvm-send-5210.txt:Total UDP packets: 874032
    gcpvm-send-5210.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5211.txt:Total UDP packets: 791218
    gcpvm-send-5211.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5212.txt:Total UDP packets: 961510
    gcpvm-send-5212.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5213.txt:Total UDP packets: 961517
    gcpvm-send-5213.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5214.txt:Total UDP packets: 961501
    gcpvm-send-5214.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5215.txt:Total UDP packets: 961521
    gcpvm-send-5215.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5216.txt:Total UDP packets: 889932
    gcpvm-send-5216.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5217.txt:Total UDP packets: 961483
    gcpvm-send-5217.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5218.txt:Total UDP packets: 961479
    gcpvm-send-5218.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5219.txt:Total UDP packets: 961518
    gcpvm-send-5219.txt:Total out-of-order packets: 0, missing packets: 0
    

    הניתוח הבא מציג אובדן מנות במהלך בדיקת ביצועים:

    $ grep -e "Total" -A1 onPrem-send-*.txt
    

    הפלט שיתקבל:

    "Total" -A1 onPrem-send-*.txt
    onPrem-send-5210.txt:Total UDP packets: 858698
    onPrem-send-5210.txt:Total out-of-order packets: 0, missing packets: 5408
    --
    onPrem-send-5211.txt:Total UDP packets: 857667
    onPrem-send-5211.txt:Total out-of-order packets: 0, missing packets: 4929
    --
    onPrem-send-5212.txt:Total UDP packets: 857126
    onPrem-send-5212.txt:Total out-of-order packets: 0, missing packets: 5349
    --
    onPrem-send-5213.txt:Total UDP packets: 857424
    onPrem-send-5213.txt:Total out-of-order packets: 0, missing packets: 5495
    --
    onPrem-send-5214.txt:Total UDP packets: 857139
    onPrem-send-5214.txt:Total out-of-order packets: 0, missing packets: 4692
    --
    onPrem-send-5215.txt:Total UDP packets: 857175
    onPrem-send-5215.txt:Total out-of-order packets: 0, missing packets: 4789
    --
    onPrem-send-5216.txt:Total UDP packets: 857104
    onPrem-send-5216.txt:Total out-of-order packets: 0, missing packets: 5196
    --
    onPrem-send-5217.txt:Total UDP packets: 857122
    onPrem-send-5217.txt:Total out-of-order packets: 0, missing packets: 5423
    --
    onPrem-send-5218.txt:Total UDP packets: 857383
    onPrem-send-5218.txt:Total out-of-order packets: 0, missing packets: 5283
    --
    onPrem-send-5219.txt:Total UDP packets: 857313
    onPrem-send-5219.txt:Total out-of-order packets: 0, missing packets: 4934
    
  5. כדי לבדוק את קצב העברת הנתונים של היציאה, ניגשים לדף המכשיר.

  6. אם בפלט netstat מוצגות שגיאות קריאה/כתיבה, יכול להיות שצריך לבצע כוונון של זרימת TCP/UDP בכמות גדולה.

  7. אם יש חבילות לא מסודרות, צריך לבצע את לכידת החבילות בשערי ה-VPN כדי לבצע ניתוח נוסף.

  8. אם בדיקת ה-UDP ב-iperf3 משיגה את קצב העברת הנתונים הרצוי, הבעיה היא במקום אחר, ויכול להיות שצריך לבצע כוונון של ה-TCP.