Skip to content
Nicola Bonelli edited this page May 12, 2014 · 16 revisions

pfq-omatic script

Pfq-omatic is a Haskell script that can be used to compile source codes of network device drivers and obtain versions specialized for PFQ. By overloading symbols at compile time, pfq-omatic enables drivers to:

  • exploit the PFQ socket buffer allocator.
  • achieve performance improvements (e.g. linespeed of Intel 10Gbit adapters).
  • send packets directly to PFQ.

PFQ is then interposed between the network device driver and the Linux kernel. In this vein, functional computations can act as a firewall, router, switch, and so forth. On per-packet-basis they can dispatch packets to sockets, forward them to network devices or send them to the Linux kernel (hybrid SDN/SDM).

pfq-omatic session

root # cd ixbge/src
root # pfq-omatic
[PFQ] pfq-omatic: v3.0
[PFQ] using /opt/PFQ/kernel/Module.symvers file (most recent)
[PFQ] ./ixgbe_main.c is already patched :)
[PFQ] compiling: make -j6...
make -C /lib/modules/3.12-1-amd64/build SUBDIRS=/opt/ixgbe-3.21.2/src modules
make[1]: Entering directory `/usr/src/linux-headers-3.12-1-amd64'
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_main.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_common.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_api.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_param.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_lib.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_ethtool.o
  CC [M]  /opt/ixgbe-3.21.2/src/kcompat.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_82598.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_82599.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_x540.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_sriov.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_mbx.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_dcb.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_dcb_82598.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_dcb_82599.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_sysfs.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_procfs.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_phy.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_dcb_nl.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_fcoe.o
  CC [M]  /opt/ixgbe-3.21.2/src/ixgbe_debugfs.o
  LD [M]  /opt/ixgbe-3.21.2/src/ixgbe.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /opt/ixgbe-3.21.2/src/ixgbe.mod.o
  LD [M]  /opt/ixgbe-3.21.2/src/ixgbe.ko
make[1]: Leaving directory `/usr/src/linux-headers-3.12-1-amd64'
[PFQ] done.
Clone this wiki locally