FreeBSD добавя ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Netlink, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² ядрото Π½Π° Linux

ΠšΠΎΠ΄ΠΎΠ²Π°Ρ‚Π° Π±Π°Π·Π° Π½Π° FreeBSD ΠΏΡ€ΠΈΠ΅ΠΌΠ° рСализация Π½Π° комуникационния ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Netlink (RFC 3549), ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Linux Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° взаимодСйствиСто ΠΌΠ΅ΠΆΠ΄Ρƒ ядрото ΠΈ процСситС Π² потрСбитСлското пространство. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π΄ΠΎ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° сСмСйството ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ NETLINK_ROUTE Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° подсистСма Π² ядрото.

Π’ настоящата си Ρ„ΠΎΡ€ΠΌΠ° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈΡΡ‚ слой Netlink позволява Π½Π° FreeBSD Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Linux ip ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π° iproute2 Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ интСрфСйси, Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° IP адрСси, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° nexthop ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΎ Π·Π° ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎ ΠΆΠ΅Π»Π°Π½Π°Ρ‚Π° дСстинация . Π‘Π»Π΅Π΄ Π»Π΅ΠΊΠ° промяна Π½Π° Π·Π°Π³Π»Π°Π²Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π΅ възмоТно Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Netlink Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Bird.

РСализацията Π½Π° Netlink Π·Π° FreeBSD Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ€Π°Π½Π° ΠΊΠ°Ρ‚ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ» Π½Π° ядрото, ΠΊΠΎΠΉΡ‚ΠΎ, Π°ΠΊΠΎ Π΅ възмоТно, Π½Π΅ засяга Π΄Ρ€ΡƒΠ³ΠΈ подсистСми Π½Π° ядрото ΠΈ създава ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ опашки със Π·Π°Π΄Π°Ρ‡ΠΈ (tasqueue) Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° входящи ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Ρ‡Ρ€Π΅Π· ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² асинхронСн Ρ€Π΅ΠΆΠΈΠΌ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π·Π° прСнасянСто Π½Π° Netlink Π΅ липсата Π½Π° стандартСн ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° взаимодСйствиС с подсистСмитС Π½Π° ядрото, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ подсистСми ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ измислят свои собствСни ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ.

Netlink ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π΅Π½ слой ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° дСйства ΠΊΠ°Ρ‚ΠΎ посрСдник, ΠΊΠΎΠΉΡ‚ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ Π² Π΅Π΄Π½Π° заявка. НапримСр подсистСмитС Π½Π° FreeBSD ΠΊΠ°Ρ‚ΠΎ devd, jail ΠΈ pfilctl ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΌΠΈΠ³Ρ€ΠΈΡ€Π°Π½ΠΈ към Netlink, ΠΊΠ°Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ свои собствСни ioctl извиквания, ΠΊΠΎΠ΅Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ‰Π΅ опрости ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° прилоТСния Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с Ρ‚Π΅Π·ΠΈ подсистСми. Π’ допълнСниС, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Netlink Π·Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° nexthop ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ ΠΈ Π³Ρ€ΡƒΠΏΠΈΡ‚Π΅ Π² стСка Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Ρ‰Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ взаимодСйствиС с процСситС Π½Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π² потрСбитСлското пространство.

Π’Π΅ΠΊΡƒΡ‰ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  • ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° информация Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈ, nexthops ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ Π³Ρ€ΡƒΠΏΠΈ, ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ интСрфСйси, адрСси ΠΈ съсСдни хостовС (arp/ndp).
  • Π€ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° извСстия Π·Π° появата ΠΈ ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ интСрфСйси, настройка ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° адрСси, добавянС ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈ.
  • ДобавянС ΠΈ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈ, nexthops ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ Π³Ρ€ΡƒΠΏΠΈ, шлюзовС, ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ интСрфСйси.
  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с интСрфСйса Rtsock Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€