Apa hambatan IPsec di Linux?

19

Saya mencoba membandingkan kinerja beberapa protokol keamanan jaringan antara dua host yang terhubung di Gigabit Ethernet.

Tujuan saya di sini adalah untuk melihat apakah saya bisa menjenuhkan bandwidth saya, dan jika tidak, apa faktor pembatasnya.

  • dengan SSL, saya bisa mencapai 981 MBit / s, jadi tautan Ethernet jelas merupakan faktor pembatas;
  • dengan SSH, saya hanya bisa mencapai 750 MBit / s, tetapi salah satu core saya adalah pada penggunaan 100%. Karena SSH adalah single-threaded, CPU adalah faktor pembatas;
  • dengan IPsec, saya membaca sekitar 500 MBit / s tetapi tidak ada core saya yang 100% (mereka di bawah 50%).

Jadi pertanyaan saya adalah: mengapa IPsec tidak dapat mencapai bandwidth yang lebih tinggi?

Dua host menjalankan Debian Wheezy dan Strongswan untuk IPsec.

pengguna50228
sumber
3
Anda perlu memastikan bahwa CPU Anda memiliki aesinstruksi untuk mendekrip paket yang lebih baik di kedua situs intel.co.jp/content/dam/www/public/us/en/documents/white-papers/… , dan pastikan Anda membuat ipsec paralel dan menggunakan Mode Terowongan + ESP - strongswan.org/docs/Steffen_Klassert_Parallelizing_IPsec.pdf . Itu adalah cara terbaik untuk mencapai kinerja dengan protokol ini.
Sayangnya saya memiliki prosesor i3 tanpa dukungan AES-NI, dan saya bekerja dalam mode tunnel antara dua host. Saya mengerti bagaimana kedua saran Anda akan meningkatkan bandwidth dalam kasus di mana satu CPU berada pada penggunaan 100%. Menggunakan AES-NI akan memungkinkan lebih banyak paket untuk diproses dan akan meningkatkan BW. Tapi di sini CPU tampaknya tidak menjadi faktor pembatas.
user50228
3
Hmm, itu menarik. Saya menduga ada sesuatu di kernel yang memperlambat segalanya. Maukah Anda berbagi konfigurasi ipsec Anda? Saya ingin instrumen VM dan melihat hasil apa yang akan saya dapatkan dengan pengaturan yang berbeda.
Lmwangi

Jawaban:

1

Ada begitu banyak faktor yang masuk ke ini. NIC menyentuh lebih banyak bagian papan daripada yang dapat Anda bayangkan. Setiap set jika instruksi dapat menemukan kawat dan menabrak bagian dari sistem driver dan leher botol Anda. Anda dapat mengambil single core 1200mhz single core dan menyelaraskan perangkat keras untuk meledakkan pintu dan quad core 3600mhz. Ini benar-benar merupakan pertanyaan khusus perangkat keras.

bagaimana mereka melakukan ini? dengan sesuatu seperti ini http://www.ixiacom.com/products/ixn2x Itulah perangkat $ 165k "Aku akan menghancurkanmu". yaitu 2 gigs lalu lintas yang salah ke pipa 1 gig. Setelah Anda mulai mengalahkan sistem dan merusak barang-barang, leher botol Anda 'akan mengungkapkan dirinya sendiri'. Memoles keterampilan GDB Anda!

Setiap sistem memiliki metode berbeda untuk menyelesaikan masalah. Beberapa papan memiliki batasan teknologi yang dapat membatasi Anda.

Jawabannya ambigu karena solusinya ambigu. Saya dapat memikirkan 20 kemungkinan berbeda dari bagian atas kepala saya termasuk paging yang dapat bervariasi dari versi OS ke versi.

brad
sumber
0

Saya bertanya-tanya apakah itu karena menunggu buatan atau tidur telah dimasukkan ke dalam crypto. Ini tidak mungkin imo, tapi ...

http://www.tau.ac.il/~tromer/acoustic/

Tidak dapat memposting ini sebagai komentar, akan lebih cocok seperti itu.

Raymond Bannan
sumber
0

Mungkin saja pada waktu tertentu hanya satu dari dua inti jenuh, tetapi rata-rata kelihatannya keduanya sekitar 50% (karena kernel secara acak memberikan proses IPsec single-threaded untuk kedua core; namun sejauh yang saya telah memperhatikan Linux (tidak seperti Windows) biasanya mencoba untuk menjaga utas pada inti yang sama).

Pada beberapa periode pendek, IPSec mungkin menunggu juga untuk jaringan yang, dalam hubungannya dengan kecepatan transfer yang lambat, akan menjadi tanda buffering yang buruk.

Kompresi (jika ada) dan overhead protokol dapat mempengaruhi pengujian Anda.

mik
sumber