במדריך הזה מוסבר איך לחשב את קצב העברת הנתונים ברשת, גם בתוךGoogle Cloud וגם במיקומים מקומיים או בענן של צד שלישי שמחוברים באמצעות Cloud Interconnect. במסמך הזה מוסבר איך לנתח את התוצאות, מפורטים המשתנים שיכולים להשפיע על ביצועי הרשת ומובאים כמה טיפים לפתרון בעיות.
מגבלות ושיקולים
- חלות מגבלות על Cloud Interconnect. מידע נוסף זמין במאמר בנושא מכסות של Cloud Interconnect.
- מגבלות NIC: Google Cloud החישוב מתבסס על רוחב הפס של כל מכונה וירטואלית (VM), ולא על כל כרטיס רשת (NIC) או כתובת IP. סוג המכונה של מכונה וירטואלית מגדיר את קצב היציאה המקסימלי שלה, אבל אפשר להגיע לקצב הזה רק במצבים מסוימים. בטבלה הזו אפשר לראות את מספר יחידות ה-vCPU לכל סוג מכונה.
ההגבלות של מכשירים אחרים בנתיב (חומת אש, מתגים עם מאגרי נתונים קטנים ומכשירים של ספקים אחרים) חלות גם כן. כדי לעקוף את ההגבלות האלה, מבצעים את המשימות הבאות.
- איסוף נתונים סטטיסטיים על חומות אש ומתגים בנתיב.
- כדי לבדוק את Cloud Interconnect, עדיף לעקוף כמה שיותר מכשירים בין המארח המקומי לבין מכשיר קצה של Google.
- מזהים ומאמתים את כל המכשירים בנתיב שבין הרשת המקומית לבין Google Cloud המכונה הווירטואלית, אם הם יכולים להיות המקור לבעיות ברוחב הפס.
סקירה כללית של כלים למדידת קצב העברת הנתונים ברשת
במדריך הזה מוצגות דוגמאות לשימוש בכלים הבאים לחישוב קצב העברת הנתונים ברשת:
iPerf3: כלי לבדיקת רשת שיכול ליצור זרמי נתונים של TCP/UDP (עם הליך משנה יחיד או עם כמה הליכי משנה) ולמדוד את קצב העברת הנתונים של הרשת שמעבירה אותם.
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
הרצת בדיקות התנאים המוקדמים
- מוודאים שהגדלים של צירוף ל-VLAN מוגדרים בצורה נכונה. מידע נוסף זמין במאמר שינוי של קובצי VLAN מצורפים.
- בשני הקצוות של החיבור (כל טרמינל), מריצים את הפקודה
topאוhtopכדי לעקוב אחרי השימוש במעבד. לפני שמריצים בדיקות, צריך לאסוף נתונים סטטיסטיים על הרשת באמצעות הפקודה
netstat.netstat -s >> netstat.log
במסוף אחר, מריצים את הפקודה
tcpdumpלפני כל לכידה עם ערך הפרמטרsnaplenשל128.מריצים את הפקודה הזו בשתי נקודות הקצה.
sudo /usr/sbin/tcpdump -s 128 -i [DEVICE_INTERFACE] host [IP_ADDRESS of remote side] -w mycap.pcap
מקבלים את גודל הזיכרון לקריאה ולכתיבה במארחי המקור והיעד.
$ 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. כדי לקבל תוצאות שימושיות, מומלץ להריץ לפחות ארבע בדיקות ולכל היותר עשר בדיקות.
במסוף אחר, מריצים את הפקודה
iperf3server בקצה אחד של החיבור (מכונה וירטואלית או מכונה מקומית). כדי להפעיל כמה סטרימינגים צריך כמה שרתיiperf3.מריצים את הכלי iPerf3 עם הדגל
udpלבדיקת Cloud Interconnect. אם מושגת התפוקה שנבחרה עם UDP, צריך לבצע שלבים נוספים לפתרון בעיות.כדי להריץ את השרתים המרובים
iperf3משורת הפקודה, מריצים את הפקודות הבאות:$ iperf3 -s -p 5101&; iperf3 -s -t 30 -p 5102&; iperf3 -s -p 5103 &
אפשר להשתמש בסקריפט 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 במסופים שונים ובפורטים שונים בו-זמנית.
ניתוח תוצאות הבדיקה
מבצעים את השלבים הבאים.
- בודקים את התוצאות של הלקוח
iperf3כדי לראות את רוחב הפס ואת אובדן המנות. - בודקים את התוצאות של השרת
iperf3כדי לראות אם יש מנות לא מסודרות. ביצוע ניתוח של לכידת חבילות. מריצים את הפקודה הבאה כדי להמיר את קובץ ה-pcap לקובץ טקסט.
tcpdump -A -[PCAP-FILENAME].pcap > [TXT-FILENAME].txt
מריצים את הפקודה הבאה כדי לקבל את סך החבילות ואת החבילות שלא הגיעו לפי הסדר.
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
כדי לבדוק את קצב העברת הנתונים של היציאה, נכנסים לדף המכשיר.
אם בפלט של
netstatמוצגות שגיאות קריאה/כתיבה, יכול להיות שיהיה צורך בכוונון של זרימת TCP/UDP בכמות גדולה.אם יש חבילות לא מסודרות, צריך לבצע את לכידת החבילות בשערי ה-VPN כדי לבצע ניתוח נוסף.
אם בדיקת ה-UDP ב-
iperf3משיגה את קצב העברת הנתונים הרצוי, הבעיה היא במקום אחר, ויכול להיות שצריך לבצע כוונון של TCP.