Paket loss rate dengan iperf dan tcpdump

10

Saya menguji garis untuk kualitas tautannya iperf. Kecepatan terukur (port UDP 9005) adalah 96Mbps, yang baik, karena kedua server terhubung dengan 100Mbps ke internet. Di sisi lain tingkat kehilangan datagram ditunjukkan menjadi 3,3-3,7%, yang saya temukan terlalu banyak. Menggunakan protokol transfer berkecepatan tinggi saya merekam paket-paket di kedua sisi dengan tcpdump. Daripada saya menghitung paket loss - rata-rata 0,25%. Adakah yang punya penjelasan, dari mana perbedaan besar ini berasal? Apa yang dimaksud dengan paket loss yang dapat diterima menurut Anda?

stefita
sumber
Protokol mana yang Anda gunakan saat mengendus dengan tcpdump? Apakah tcp atau udp?
PiL
Saya menggunakan udp untuk kedua tes.
stefita
Uhm ... bisakah Anda mencoba dengan sniffer paket lain?
PiL
2
Wireshark akan menggunakan backend yang sama dengan tcpdump untuk menangkap paket, sehingga tidak akan memberikan hasil yang berbeda (libpcap atau winpcap, tergantung pada platform).
Jed Daniels
1
Bisakah Anda mengukur kehilangan paket dengan tcpdumpselama iperfsesi? Perkiraan ini lebih tepat, daripada milik Anda. Monitor status server kedua selama pengujian - mungkin hanya menjatuhkan paket?
lexsys

Jawaban:

3

Saya telah mengalami dataloss yang signifikan dengan iPerf dalam mode UDP karena CPU tidak dapat mengikuti. Untuk beberapa alasan, iPerf dengan UDP tampaknya jauh lebih intensif CPU daripada iPerf dengan TCP. Apakah Anda mengalami persentase kehilangan yang sama ketika Anda mengatur iPerf ke setengah dari tarif?

Untuk menjawab pertanyaan kedua Anda tentang berapa banyak paket yang hilang dapat diterima, itu benar-benar tergantung pada aplikasi apa yang Anda jalankan, berapa banyak traffic yang Anda dapatkan. Sungguh, seharusnya tidak ada kerugian jika Anda berada di bawah batas bandwidth Anda. Untuk sebagian besar hal, saya mungkin tidak akan mengeluh terlalu banyak tentang 0,25%, tetapi itu masih banyak kerugian jika Anda menjalankan pada tingkat yang sangat tinggi.

[EDIT 1] Beberapa pemikiran lain yang saya miliki tentang topik:

  1. Cobalah menambah tingkat iPerf. Jika ada masalah sistemik di suatu tempat, kemungkinan Anda akan mengalami persentase kerugian yang sama, berapa pun nilainya. Jika Anda berada di batas perangkat keras Anda, atau penyedia Anda melakukan semacam RED , maka kemungkinan tidak akan ada kerugian hingga tingkat tertentu, dan kemudian semakin buruk kerugian semakin tinggi di atas Anda pergi.
  2. Lakukan pengukuran tcpdump Anda pada sesi iPerf, hanya untuk memverifikasi bahwa tes Anda akurat.
  3. Coba iPerf dengan TCP. Ini tidak akan melaporkan kerugian, tetapi jika Anda mendapatkan kerugian maka koneksi tidak akan dapat meningkatkan sangat tinggi. Karena latensi juga akan memengaruhi ini, pastikan untuk menguji ke titik akhir dengan latensi sesedikit mungkin.
  4. Tergantung pada gigi apa yang Anda miliki di bagian dalam koneksi Anda, pastikan Anda sedekat mungkin. Misalnya, jika Anda memiliki beberapa sakelar antara sistem pengujian dan router tepi, pindahkan ke sakelar yang terhubung langsung.
  5. Jika Anda memiliki sakelar yang dikelola, periksa statistiknya untuk memastikan kerugian tidak terjadi di sana. Saya telah menjumpai beberapa sakelar yang lebih murah yang mulai menurun ketika Anda mendekati 100Mbps lalu lintas UDP pada mereka (kebanyakan sakelar lama yang tidak dikelola dengan baik).
  6. Coba iPerf simultan dari dua klien yang berbeda ke dua host yang berbeda, sehingga Anda dapat yakin bahwa batasnya bukan akibat dari CPU atau kartu NIC lokal yang murah.
Jed Daniels
sumber
Itu bisa menjadi alasan yang bagus. Sayangnya saya tidak bisa menguji sekarang, karena masalah firewall. Saya akan kembali ke jawaban Anda segera setelah saya melakukan tes baru.
stefita
0

Nah, dengan TCP ada mekanisme untuk memaksimalkan pemanfaatan satu aliran, dengan UDP tidak ada. Jadi setiap aplikasi harus membuat mekanisme sendiri, jadi mungkin setiap aplikasi menggunakan pendekatan yang berbeda untuk melakukan itu. Mungkin, Iperf akan memungkinkan lebih banyak paket yang hilang karena sedang berusaha mencapai bandwidth maksimum yang tersedia tanpa peduli apakah informasi itu diterima atau tidak. Aplikasi lain mungkin akan mencoba untuk tidak kehilangan banyak paket, dan akan mengurangi laju paket ke throughput yang tersedia dalam koneksi.

Pipa
sumber
0

Sudahkah Anda menggunakan tcpdump untuk memeriksa paket yang hilang saat menggunakan iPerf untuk memastikan paket yang Anda hitung dengan tcpdump cocok dengan iperf?

Anda mungkin menemukan bahwa metode pengukuran Anda tidak dapat dibandingkan.

Craig
sumber
0

apakah iperf secara otomatis membuang paket yang keluar dari urutan dengan UDP? Anda mungkin melihat sedikit jitter pada koneksi.

Lloyd Baker
sumber