Network driver model. Network drivers in BSD systems are traditionally accessed through sockets and do not appear in the filesystem name space (i.e. under /dev). User-level libraries for memory-to-memory network transports require these devices to be opened and closed multiple times with each opened instance appearing as a separate logical device maintaining private state, and be memory-mapped. FreeBSD until recently provided rudimentary support for this through the devfs file system which is being abandoned. Devfs allows logical instances of a device to be dynamically created but still associates a single vnode with that device. Our current drivers rely on a hack to associate a separate vnode and store private state with each logical instance of a device. Device driver models under other operating systems have different ways for logical device instances to maintain private state. Linux associates a vnode with each opened instance of a device file, and Solaris keeps private per-instance state via DDI [1].