Tautan maksimum agregasi (LACP / 802.3ad)

10

Saya melihat beberapa perilaku membingungkan mengenai antarmuka berikat di Linux dan saya ingin membuang situasi di sana dengan harapan seseorang dapat menjernihkannya untuk saya.

Saya memiliki dua server: Server 1 (S1) memiliki koneksi ethernet 4x 1Gbit; Server 2 (S2) memiliki koneksi ethernet 2x 1Gbit. Kedua server menjalankan Ubuntu 12.04, meskipun dengan kernel 3.11.0-15 (dari paket linux-generic lts-saucy).

Kedua server memiliki semua antarmuka jaringan masing-masing yang dibundel ke dalam antarmuka bond0 tunggal dengan konfigurasi berikut (dalam /etc/network/interfaces):

bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate fast
bond-slaves eth0 eth1 [eth2 eth3]

Antara server adalah beberapa switch HP yang (saya pikir) dikonfigurasi dengan benar untuk LACP pada port yang dimaksud.

Sekarang, tautannya berfungsi - lalu lintas jaringan mengalir dengan gembira ke dan dari kedua mesin. Dan semua antarmuka masing-masing sedang digunakan, jadi itu tidak seperti agregasi gagal total. Namun, saya membutuhkan bandwidth sebanyak mungkin antara kedua server ini, dan saya tidak mendapatkan ~ 2Gbit / s yang saya harapkan.

Dalam pengujian saya, saya dapat mengamati bahwa setiap server tampaknya mengalokasikan setiap koneksi TCP (misalnya iperf, scp, nfs, apa pun) ke antarmuka slave tunggal. Pada dasarnya semuanya tampak dibatasi maksimal 1 gigabit.

Dengan pengaturan bond-xmit-hash-policy layer3+4, saya dapat menggunakan iperf -c S1 -P2untuk mengirim pada dua antarmuka slave, tetapi di sisi server, penerimaan masih hanya terjadi pada satu antarmuka slave dan karenanya total throughput dibatasi pada 1Gbit / s, yaitu klien menunjukkan ~ 40-50MB / s pada dua antarmuka slave, server menunjukkan ~ 100MB / s pada satu antarmuka slave. Tanpa pengaturan bond-xmit-hash-policypengiriman juga terbatas pada satu antarmuka slave.

Saya mendapat kesan bahwa LACP harus memungkinkan bundling koneksi semacam ini, memungkinkan, misalnya, transfer scp tunggal untuk menggunakan semua antarmuka yang tersedia antara dua host.

Apakah pemahaman saya tentang LACP salah? Atau sudahkah saya melewatkan beberapa opsi konfigurasi di suatu tempat? Setiap saran atau petunjuk untuk investigasi akan sangat dihargai!

Zetten
sumber

Jawaban:

18

Penjelasan cepat dan kotor adalah bahwa satu jalur komunikasi menggunakan LACP tidak akan membagi paket lebih dari beberapa antarmuka. Sebagai contoh, jika Anda memiliki satu paket streaming koneksi TCP dari HostA ke HostB tidak akan menjangkau antarmuka untuk mengirim paket-paket itu. Saya telah melihat banyak LACP di sini akhir-akhir ini untuk solusi yang sedang kami kerjakan dan ini adalah kesalahpahaman umum bahwa 'ikatan' atau 'trunking' beberapa antarmuka jaringan dengan LACP memberi Anda "throughput" dari antarmuka gabungan. Beberapa vendor telah membuat driver berpemilik yang akan merutekan beberapa antarmuka tetapi standar LACP tidak berdasarkan apa yang saya baca. Berikut ini tautan ke diagram dan penjelasan yang layak yang saya temukan dari HP saat mencari masalah serupa: http://www.hp.com/rnd/library/pdf/59692372.pdf

Mike Naylor
sumber
1
Itu semua masuk akal. Saya tidak tahu mengapa saya tidak menemukan kesalahpahaman saya lebih cepat; Saya pasti baru saja menelusuri halaman pencarian dan dokumentasi yang tepat. Tampaknya tergantung pada perangkat keras jaringan kita mungkin dapat mengubah mode hashing src-dest dan keberuntungan pada throughput multi-antarmuka, tapi saya pikir pada tahap ini saya hanya akan senang dengan apa yang kita miliki. Terima kasih atas klarifikasi dan tautan Anda yang sangat berguna.
Zetten
Senang untuk membantu. Saya telah membaca banyak tentang ini belakangan ini mencoba untuk mendapatkan klarifikasi tentang terminologi berurusan dengan trunking dan bonding yang digunakan secara berbeda oleh vendor yang berbeda. Saya telah menemukan bahwa di luar standar spesifik seperti yang didefinisikan oleh vendor IEEE cenderung menggunakan beberapa istilah secara bergantian ...
Mike Naylor
6
Dokumen tidak lagi tersedia di URL asli, tetapi masih dapat diakses melalui Internet Archive: web.archive.org/web/20030324105208/http://www.hp.com/rnd/…
smbear
3

bond-xmit-hash-policy layer3+4mengatur load balancing dari server sumber Anda ke sakelar. Itu tidak mengatur algoritma load balancing dari Anda beralih ke server kedua. Itu hampir pasti masih layer-2 atau layer-3 seimbang, yaitu tidak sama sekali.

MSalters
sumber
2

Nah, pertama, ketika Anda menggunakan driver tim, itu akan membuat beberapa overhead, dan menurunkan throughput maks yang diharapkan, yaitu ~ 940 MB / s pada adaptor 1GB, ~ 10%.

Saya tidak yakin jenis adaptor apa yang Anda miliki, tetapi jika Anda menggunakan driver in-box, pengaturan mungkin tidak ideal untuk throughput maks. Anda dapat mempertimbangkan untuk menambahkan antrian, hingga 4, karena satu antrian pada adaptor mungkin tidak dapat mencapai kecepatan kawat.

Pertimbangan lain, adalah bahwa satu utas iperf mungkin tidak akan mendapatkan kecepatan tertinggi. Untuk 1GB, 2-6 utas mungkin lebih ideal, Anda dapat menggunakan skrip bash sederhana untuk meluncurkan beberapa utas sekaligus.

Untuk Intel NIC, tetapi RSS dan Hardware RSC dapat memengaruhi throughput, di Broadcom pastikan TOE berfungsi.

Namun, langkah pertama adalah menghapus LAG dan mencoba menguji 1 port traffic pada setiap sistem untuk melihat berapa throughput yang didapat, lakukan ini dengan semua port, lalu coba 2. LACP adalah binatang yang berubah-ubah untuk diatur benar, dan saya belum pernah mencoba memasangnya di sakelar HP, hanya Force10 (pra-Dell).

Juga, mengapa ada saklar pasangan?

mortenya
sumber
Seperti jawaban lain yang dijelaskan, masalah yang mendasari adalah pemahaman saya tentang LACP, tetapi hanya untuk mengisi gambar: kotak linux menggunakan driver ikatan kernel. Setiap antarmuka secara individual dapat mendorong throughput max-gigabit (rupanya sekitar 110-117MB / s tergantung pada lalu lintas lain) jadi saya benar-benar hanya ingin meningkatkan bandwidth daripada menyetel NIC individual. Mengenai sakelar, kami memiliki situs multi-kantor dan ada sakelar trunking dengan serat mux / demux dan berbagai bit dan bobs lainnya. Saya memiliki kedua server pada satu saklar HP 2920-48G untuk pengujian.
Zetten
iperf memiliki --parallelparameter yang mengontrol jumlah aliran klien paralel untuk dijalankan
8.8.8.8