DBL is an optional, user-level, software interface for accelerating applications whose performance depends on UDP latency. Examples of applications that will benefit from DBL include algorithmic financial trading, VoIP, online gaming engines, and others where reduced network latency is beneficial.
DBL software with Myri-10G 10-Gigabit Ethernet NICs leverages user-level, kernel-bypass, messaging techniques originally developed for high performance computing applications, and applies them to UDP communication over Ethernet in a multicast and/or unicast environment. DBL is interoperable and wire-compatible with all standard UDP implementations.
Unlike UDP communication through the host operating system, which allows the full set of UDP networking services to potentially hundreds of user application threads, but at the cost of latency in the operating-system protocol stack, DBL takes advantage of kernel-bypass firmware in Myri-10G NICs to allow high-priority user threads to send and receive UDP frames directly. The typical user-level read latency of DBL on modern hosts is about 1.5 microseconds.
DBL is not intended to completely replace UDP communication through the host operating system, nor to improve performance in situations where overall system performance depends on multiplexing many user application threads over fewer available computing resources (or CPU cores). Rather, DBL will improve the throughput, response time, and transaction rates of user application threads that have dedicated computing resources. Thus, DBL best suits cases where target latencies, response times, and jitter would otherwise be hampered by the operating-system protocol stack and scheduling policies.
When used with Myri-10G 10-Gigabit Ethernet NICs, DBL can be used selectively to accelerate certain UDP sockets while allowing the remaining UDP traffic to be handled through the conventional Ethernet driver and operating-system protocol stack. The DBL software cooperates with and extends the standard BSD Sockets API for UDP packets. The DBL API allows users to create datagram sockets and bind them to DBL-capable interfaces. There are function calls to implement the datagram sockets sendto() and recvfrom() semantics, but with an interface that reduces software overhead in order to achieve low latency and high message rate. A DBL sockets library that allows existing binaries to use DBL without modification will be available in the next major release.
DBL software distributions are currently available for Linux, Windows, Solaris, and FreeBSD. The full DBL API is accessible from C and Java on all supported platforms. In addition, DBL can be used via the Java NIO Channel interface on Linux, Solaris, and FreeBSD. The Channel interface allows existing applications to achieve dramatic latency and transaction-time improvements with only minimal changes to existing Java source code.
![]()
19 January 2011 DBL 1.0.2