OppBSD 1.0 released! The project aim was to get (part of) the FreeBSD kernel networking code working in OMNeT++ as a simulation model. Though the original aim was to use FreeBSD’s validated TCP implementation in OMNeT++ as a TCP model, but along the way it turned out that porting the full networking stack was in fact an easier task. Therefore, we now present OppBSD as full TCP/IP stack including ICMP, ARP, sockets and Ethernet frames. INTRODUCTION

TCP is currently still the dominating transport protocol in the Internet. If you must simulate applications that use TCP as a reliable transport protocol, you need a good TCP stack. But implementing TCP correctly is not easy. Besides a lot extensions to the base specification which must be also covered in order to get an up-to-date implementation, several implementation mistakes have to be avoided. Finally, you must validate your implementation that it behaves exactly like the specifications prescribe. Simulators should, however, show a realistic TCP behavior.

Our approach was to avoid re-implementing TCP including all the usual bugs as well as to avoid a thorough validation. Therefore, we integrated an existing (and validated) TCP stack from a real operating system into OMNeT++. The project aim was to get (part of) the FreeBSD kernel networking code working in OMNeT++ as a simulation model. Though the original aim was to use FreeBSD's validated TCP implementation in OMNeT++ as a TCP model, but along the way it turned out that porting the full networking stack was in fact an easier task. Therefore, we now present OppBSD as full TCP/IP stack including ICMP, ARP, sockets and Ethernet frames.

This model was developed at the Institute of Telematics, University of Karlsruhe by Roland Bless, Mark Doll and Jerome Freilinger, who did the first implementation.

Overview

The oppbsd code should run on
   OMNeT++: v3.0/v3.1
   OS: Linux

In the simulation models provided, every simulated host (or router) runs its own copy of the FreeBSD kernel's networking stack.

Features:

  • precise emulation of the FreeBSD network stack behaviour
  • test your model's interoperability with "real" implementations.
  • provides a controlled environment to try BSD "kernel hacks"
  • FreeBSD kernel patches (e.g. KAME patch for mobile IPv6) can be easily incorporated (currently ongoing work)
  • higher scalability than using emulators: 1000 hosts with two simultaneous connections per host use approx. 411 MiB
  • automatic IP address assignment and routing!
  • </UL>Download