/madcap

Encapsulation Madness

Primary LanguageC

Encapsulation Madness!

  • madcap/ contains madcap API. It is inspired by switchdev API. It provides struct madcap_ops for madcap capable device drivers. add/delete/dump overlay FIB are done through this API.
  • iproute2-4.4.0/ is madcap capable ip command. see ip madcap help.
  • device-drivers-4.2.0/ contains modified e1000 and ixgbe drivers. They are madcap API capable. The overlay FIB is implemented in {e1000|ixgbe}/sfmc.{c|h}.
  • protocol-dirvers-3.19.0 or 4.2.0/ contains madcap capable ipip, gre, gretap, vxlan and nsh tunnel drivers.
  • netdevgen/ is simple traffice generator working in kernel space. It is controlled via /proc/driver/netdevgen. benchmark scripts uses netdevgen.
  • raven/ is dummy interface. you can create dummy interface via ip link add type raven command. packets transmitted to the raven device is dropped immediately. If the kernel is modified for benchmarking (http://github.com/upa/linux-madcap-msmt), raven shows the timestamp values of strut sk_buff that is transmitted via raven interface through /proc/driver/raven.
  • benchmark/ contains benchmarking scripts. see benchmark/README.md

On linux kernel 4.2.0,

  1. clone https://github.com/upa/mdacap.git
  2. cd madcap
  3. make; then all programs, madcap API, protocol and device drivers and traffic generator(netdevgen) are compiled.
  4. If in the modified linux kernel 4.2.0 (https://github.com/upa/linux-madcap-msmt), make OVBENCH=yes generate skbuff timestamping version raven, netdevgen and tunnel drivers.