Selepas satu setengah tahun pembangunan keluaran projek , membangunkan tindanan rangkaian ruang pengguna berprestasi tinggi berdasarkan rangka kerja dan timbunan TCP/IP FreeBSD (F-Stack tidak terikat dengan FreeBSD dan menganggap Linux sebagai platform utama untuk digunakan). Projek ini digunakan dalam pelbagai produk dan perkhidmatan , syarikat telekomunikasi terbesar di China. Kod di bawah lesen BSD. Menyokong kerja pada Linux dan FreeBSD.
F-Stack memungkinkan untuk mengatur interaksi rangkaian dalam aplikasi, menggunakan, bukannya timbunan rangkaian sistem pengendalian, timbunan rangkaiannya sendiri yang beroperasi dalam ruang pengguna dan berfungsi secara langsung dengan peralatan rangkaian. edisi khusus Nginx dan Redis, diterjemahkan untuk menggunakan F-Stack.
Untuk pembangunan aplikasi kedua-dua API Posix standard (Socket, Epoll, Kqueue), yang memudahkan pemindahan aplikasi sedia ada ke F-Stack, dan antara muka pengaturcaraannya sendiri berdasarkan coroutine (microthreads), yang memudahkan penciptaan aplikasi rangkaian dan membolehkan anda melakukan tanpa logik kompleks pemprosesan permintaan tak segerak. F-Stack juga menyediakan alatan untuk memudahkan penggunaan dalam aplikasi dengan seni bina berbilang proses.
Untuk berinteraksi dengan kad rangkaian, memintas antara muka kernel sistem pengendalian, rangka kerja digunakan (Data Plane Development Kit), yang menyediakan satu set perpustakaan untuk kerja peringkat rendah dengan penyesuai rangkaian, interaksi dalam sistem berbilang teras, penggunaan penampan cincin dan halaman memori yang besar ("halaman besar"). Menggunakan DPDK memungkinkan untuk menerima dan menghantar paket rangkaian dengan bilangan minimum kitaran CPU (kira-kira 80 kitaran setiap paket) dan membangunkan komponen tindanan rangkaian berprestasi tinggi. Kefungsian timbunan TCP/IP itu sendiri dipinjam daripada FreeBSD 11.1 dan dipisahkan menjadi perpustakaan yang bebas daripada sistem pengendalian.
F-Stack diletakkan sebagai penyelesaian yang boleh digunakan untuk meningkatkan prestasi pengendali permintaan rangkaian dalam keadaan di mana tindanan TCP/IP standard kernel Linux menjadi hambatan dan mengehadkan penskalaan. Pada masa yang sama, penggunaan F-Stack menyediakan pengoptimuman yang agak ketara dan membolehkan, dalam beberapa situasi, untuk meningkatkan bilangan permintaan kecil yang diproses beberapa kali.
Peningkatan prestasi dicapai dengan menghapuskan operasi seperti menyalin paket rangkaian, menjadualkan benang, mengendalikan gangguan dan menggunakan panggilan sistem. F-Stack membolehkan anda mencapai siling prestasi rangkaian yang mungkin untuk kad rangkaian yang digunakan. Sebagai contoh, penyelesaian berdasarkan F-Stack telah menunjukkan keupayaan untuk mengendalikan 10 juta sambungan serentak, 5 juta permintaan sesaat dan 1 juta sambungan sesaat.
Dalam keluaran baharu:
- Menambah sokongan VLAN;
- Menyediakan keupayaan untuk bekerja dalam bekas terpencil berdasarkan Docker;
- Antara muka yang dilaksanakan ff_dup, ff_dup2, ff_ioctl_freebsd, ff_getsockopt_freebsd dan ff_setsockopt_freebsd;
- Menambah parameter "idle_sleep" untuk mengurangkan beban CPU dalam situasi di mana tiada paket masuk
- Menambah sokongan binaan untuk seni bina ARM64;
- Dalam edisi Nginx yang diterjemahkan kepada F-Stack, pengendali getpeername, getsockname dan penutupan telah diganti;
- Peralihan kepada versi baharu DPDK 17.11.4 LTS telah dijalankan;
- Utiliti telah ditambahkan pada komposisi untuk memaparkan trafik semasa yang diproses oleh aplikasi berdasarkan F-Stack (mengingati trafshow).
Dari rancangan untuk masa depan Sokongan IPv6, peruntukan API untuk bahasa Python, PHP dan Go, sokongan API Cyptodev (), menggunakan zerocopy semasa menghantar pakej, sokongan dan keupayaan untuk berjalan sebagai proses latar belakang.
Sumber: opennet.ru
