במדריך הזה מוסבר איך לחשב את קצב העברת הנתונים ברשת, גם בתוך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
הרצת בדיקות של הדרישות המוקדמות
- מוודאים שגדלי צירוף ה-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.