FreeBSD menambahkan dukungan untuk protokol Netlink yang digunakan dalam kernel Linux

Basis kode FreeBSD mengadopsi implementasi protokol komunikasi Netlink (RFC 3549), yang digunakan di Linux untuk mengatur interaksi antara kernel dan proses di ruang pengguna. Proyek ini terbatas untuk mendukung rangkaian operasi NETLINK_ROUTE untuk mengelola status subsistem jaringan di kernel.

Dalam bentuknya saat ini, lapisan dukungan Netlink memungkinkan FreeBSD menggunakan utilitas ip Linux dari paket iproute2 untuk mengelola antarmuka jaringan, menetapkan alamat IP, mengonfigurasi perutean, dan memanipulasi objek nexthop yang menyimpan status yang digunakan untuk meneruskan paket ke tujuan yang diinginkan . Setelah sedikit mengubah file header, Netlink dapat digunakan dalam paket perutean Burung.

Implementasi Netlink untuk FreeBSD dikemas sebagai modul kernel yang dapat dimuat yang, jika memungkinkan, tidak memengaruhi subsistem kernel lain dan membuat antrean tugas terpisah (tasqueue) untuk memproses pesan masuk melalui protokol dan melakukan operasi dalam mode asinkron. Alasan porting Netlink adalah kurangnya mekanisme standar untuk berinteraksi dengan subsistem kernel, yang menyebabkan berbagai subsistem dan driver menciptakan protokol mereka sendiri.

Netlink menawarkan lapisan komunikasi terpadu dan format pesan yang dapat diperluas yang dapat bertindak sebagai perantara yang secara otomatis menggabungkan data yang berbeda dari sumber yang berbeda ke dalam satu permintaan. Misalnya, subsistem FreeBSD seperti devd, jail, dan pfilctl dapat dimigrasikan ke Netlink, sekarang menggunakan panggilan ioctl mereka sendiri, yang akan sangat menyederhanakan pembuatan aplikasi untuk bekerja dengan subsistem ini. Selain itu, menggunakan Netlink untuk memodifikasi objek dan grup nexthop dalam tumpukan perutean akan memungkinkan interaksi yang lebih efisien dengan proses perutean ruang pengguna.

Fitur yang saat ini diterapkan:

  • Mendapatkan informasi tentang rute, objek dan grup nexthops, antarmuka jaringan, alamat, dan host tetangga (arp/ndp).
  • Pembentukan pemberitahuan tentang tampilan dan pemutusan antarmuka jaringan, pengaturan dan penghapusan alamat, penambahan dan penghapusan rute.
  • Menambahkan dan menghapus rute, objek dan grup nexthops, gateway, antarmuka jaringan.
  • Integrasi dengan antarmuka Rtsock untuk mengelola tabel perutean.

Sumber: opennet.ru

Tambah komentar