Netlink in FreeBSD

  • Student: Sean Ng (seanngpengnam@gmail.com)
  • Mentor: Alexander V. Chernikov (melifaro@)

Refer to https://github.com/pengnam/freebsd-netlink for project details

Netlink is a linux kernel interface used for communication between userspace and kernel processes.

This project aims to port Netlink over to FreeBSD. The goal is to implement NETLINK_ROUTE in FreeBSD, and eventually support NETLINK_GENERIC as well. Eventually, the project aims to have a program use netlink. Currently, systems in FreeBSD which use Netlink sockets in their equivalent implementations in linux are currently supported by routing sockets.

To implement Netlink for NETLINK_ROUTE, the development process will broken into three main stages:

  1. Constructing basic interfaces
    1. Registering handlers with socket: Register handler with socket API for AF_NETLINK address family
    2. Configuring code as a configurable module
  1. Interact with the routing subsystem
    1. Message passing, message translating to an internal format, passing the code into a route subsystem
    2. Replying with confirmation
  1. Hack net/frr or net/bird2 to use netlink support
  1. Implement basic interfaces for netlink socket connection and message sending [DONE]
  2. Interact with the routing subsystem to implement NETLINK_ROUTE functionalities [DONE]
  3. Extend to NETLINK_GENERIC [PARTIALLY DONE]
  • June 8th: Start of GSOC
    • Check out previous work done, try compiling (X)
    • Get a working example
  • July 13th - July 17th: Mid-term Evaluations #1
  • August 6th: End of coding (soft)
    • Remaining time used for documentation
  • August 14th: End of coding (hard)
  • summerofcode2021projects/netlinkproposal.txt
  • Last modified: 2021/08/18 03:53
  • by SeanNg