OppBSD is an effort to get the network stack of the FreeBSD kernel working in OMNeT++ as a simulation model. In the model, every simulated host (or router) runs its own copy of the FreeBSD kernel's networking stack, and every host (router) has its own copy of all state variables of the FreeBSD kernel. Presently, the package covers the full TCP/IP stack including ICMP, IPv6, ND, TCP, UDP, ARP, sockets and Ethernet frames. See OppBSD Trac for more info. OppBSD is developed by Roland Bless' team at the Karlsruhe Institute of Technology.

OppBSD allows for accurate yet very scalable TCP simulations, and it is suitable for implementing network emulation as well. Release 4.0 provides a FreeBSD 6.2 stack and easy analysis of internal TCP stack variables. Furthermore, dumps in pcap format can be used for further analysis with tools like Wireshark/Ethereal. Automatic address assignment is available.

OppBSD can be downloaded from the download area of the OppBSD trac.


Related projects


  • Scalability is exceptional. example5 creates an 1,000-node network: startup time is under 10s (1.4GHz Pentium M), and process size during execution is 160-180MB. This is far beyond of what's possible with UML.


  • port current releases of the FreeBSD kernel into OppBSD with the help of Network Simulation Cradle (Roland Bless)
  • connect to INETFramework and test interoperability with its TCP/IP stack (Andras)
  • Question: How about Omnet++ v4?
    • Since OppBSD 4.0, OMNeT++ 4.1,4.2,4.3 are supported.


OppBSD 4.0

  • Supports OMNeT++ 4.x (x>0)
  • Added IPv6 and UDP support
  • Support for 64-bit platforms

OppBSD 3.0

Supports OMNeT++ 3.x, Version IPv4 only support, FreeBSD 6.0

OppBSD 2.0

Please see the OppBSD trac.


This is the result of Andras's effort to make OppBSD cross platform (most notably to get it working on Windows). This release has been run successfully on the following platforms (please help expand the list):

HardwareOSC++ CompilerCompiles & RunsRemarksReported By
Intel 32Linuxgcc-3.4.4YesSUSE 9.3Andras
Intel 32WinXPMSVC 7.1Yes Andras
Intel 64Linuxgcc-3.3.3YesSUSEAndras
ppc G4Mac OS Xgcc-4.0Yes Andras

Other changes:

  • updated for omnetpp-3.2
  • neddoc documentation added, plus more internals explained
  • dynamic NED loading
  • much simpler makefiles
  • some refactoring for style and clarity

OppBSD 1.0-r186

Not publicly available.

  • For omnetpp-3.2, edit tcpipmodel/gen.cc and change line 12 from cPar::afterChange ()
  cModulePar::afterChange ()
This is a hack; proper solution will be to employ OMNeT++'s handleParameterChange() method, introduced in version 3.2.
  • For the record: the code uses the platform's random() function instead of the BSD kernel's random(). random() is called from tcp_new_isn() for TCP initial sequence number selection. Since the implementation of random() may vary across platforms, actual sequence numbers in a TCP simulation may vary as well.

OppBSD 1.0-r136 (Jul 04 2005)

Compatible with omnetpp-3.1; there are issues with omnetpp-3.2.

Edit - History - Print - Recent Changes - Search
Page last modified on April 12, 2013, at 02:17 PM