Introducing Mentat TCP
1. What is Mentat TCP?
Mentat TCP is a high-performance, full-functionality, implementation of the TCP/IP protocol suite. Mentat TCP is licensed as a portable source code product, designed for easy integration into any SVR4 STREAMS-based environment.
2. Who is using Mentat TCP?
Mentat TCP is the native TCP/IP stack on HP-UX, Apple Mac OS, Concurrent PowerMAX OS, Sony NEWS, and other leading computer, embedded, and real-time operating systems. It is also being used by a variety of router, hardware, and application vendors.
3. Is Mentat TCP the native stack on Sun Solaris?
Mentat TCP was originally written for Sun and was integrated into the initial releases of Solaris. After that time, Sun and Mentat have performed separate maintenance and functionality updates to the code. While the Sun and Mentat code bases are still very similar, many of the details differ.
4. What components are included in Mentat TCP?
Mentat TCP provides kernel level TCP/IP functionality. Modules include TCP, UDP, IPv4, IPv6, ARP, ICMP, ICMPv6, and IGMP.
5. What RFCs are supported by Mentat TCP?
See Mentats RFC support list on-line at http://www.mentat.com/tcp/rfc.html.
6. What is the lineage of Mentat TCP? Is it based on BSD code?
Mentat TCP was written from scratch by Mentat in order to create a high-performance, portable implementation of TCP/IP for STREAMS.
7. If Mentats stack is so great, why havent I heard of you?
Historically, Mentat has been a behind-the-scenes supplier of networking protocol source code to computer operating system vendors, and is well known within that market. However, Mentat does not sell directly to end users, and consequently, is not well known to the general public. Mentats code is integrated into the operating system and becomes a component of the operating system, invisible to the end users (and to the press). In addition, some of our licensees do not want it generally known that their TCP/IP was supplied by a third party and request that we keep our relationship confidential. The only hint of Mentats involvement on some systems is our name on the copyright screen.
Mentat TCP Performance
- 8. How does Mentat justify its claim of having the fastest TCP/IP available?
- a. The fastest web servers (as measured by SPECweb) and the fastest file servers (as measured by SPEC SFS, formerly LADDIS), are based on HP-UX and Sun Solaris. The TCP/IP stacks in both operating systems are based on Mentat TCP. For reference, see:
- b. Operating system vendors have tested Mentat TCP extensively against other solutions and would not have selected Mentat TCP if it did not offer significantly higher levels of performance than that available from freeware BSD source code or other TCP/IP vendors.
- c. Mentat TCP has been tested against the native stack on a wide variety of operating systems and has shown superior performance on every system.
- d. One typical set of results compared Mentat TCP to the native TCP/IP on Linux (Red Hat Linux 2.0.32) using the Netperf standardized TCP/IP benchmark on a Compaq 350 MHz Pentium II server.
- Connection test simulating HTTP performance (opens a connection, sends 1 byte over, 1 byte back, then closes the connection):
- Results for loopback:
Linux TCP 565 connections/sec
Mentat TCP 1009 connections/sec
- Results for 3 clients over a 100BaseT network:
Linux TCP 802 connections/sec
Mentat TCP 1494 connections/sec
- Loopback throughput test simulating FTP performance (56KB socket buffer, 4K message size):
Linux TCP 311 Mbps
Mentat TCP 509 Mbps
- Loopback transaction test simulating Telnet performance (send 1 byte over, 1 byte back through an open connection):
Linux TCP 11,759 transactions/sec
Mentat TCP 18,710 transactions/sec
- e. For a full set of performance numbers illustrating the dramatic performance difference between Mentat TCP and the native TCP/IP stack on UnixWare / SVR4 UNIX, see the Mentat Web page at http://www.mentat.com/tcp/unixware-performance.html.
- f. Please contact Mentat for performance results on other operating systems.
9. How can a STREAMS-based stack be fast?
The general belief that a STREAMS architecture adds significant overhead is a misconception based on the poor performance and scalability of the implementations of STREAMS and TCP/IP found in SVR4 UNIX. A well-written STREAMS and a TCP/IP stack architected to take advantage of STREAMS functionality should not add any measurable amount of overhead, while offering portability and flexibility.
In its essence, a STREAMS architecture divides the operating systems networking code into (a) general networking components required by all protocols and (b) the activities specific to particular protocols. The general components are made available to the protocols as a single set of routines with a standardized interface, and this is called STREAMS. STREAMS also isolates operating system specific porting issues from the protocols. This architecture allows the protocol writer to concentrate on code specific to the protocol without having to re-create all the general networking components or having to spend months modifying the code to run on each new operating system. Once STREAMS has been ported to the operating system, the components and the porting work are available for use by all other protocols. In contrast, a BSD style architecture contains all of the networking code internally. If the only protocol of interest is TCP/IP, then the effect is the same: porting a BSD-style TCP/IP stack to a new operating system will require the same effort as porting the combination of STREAMS and a STREAMS-based TCP/IP stack.
In terms of performance, there should be no difference between a STREAMS-based architecture and a BSD-style TCP/IP. The modular design used by STREAMS adds only a few extra subroutine calls in overhead, which is almost below the level of measurability. However, not all implementations of TCP/IP or STREAMS are created equal. Specifically, the TCP/IP found on SVR4 UNIX originally shoehorned BSD code into a STREAMS framework with limited regard for performance and scalability. With that approach, the STREAMS framework provides no benefit and only adds overhead. This is the cause of the misconception that STREAMS is slow. In contrast, Mentat TCP was written from scratch to take advantage of STREAMS facilities without adding overhead, and when combined with Mentat Portable Streams, has demonstrated significantly faster performance than BSD TCP/IP or any other implementation of TCP/IP.
10. How does Mentat achieve its performance gains?
Mentat achieves its performance gains through careful crafting of the code. TCP/IP is an extremely complex protocol, with many special conditions. Mentat is careful to write this code to allow a minimum number of machine instructions executed for the most common conditions. Retransmissions and special cases are handled outside the mainline code path. There are many ways to implement the specified functionality and Mentat devises the fastest algorithm. Finally, by itself and in conjunction with its OEM partners, Mentat invests considerable time testing and benchmarking Mentat TCP performance, eliminating bottlenecks and squeezing out additional performance gains.
Mentat TCP Functionality
11. Does Mentat TCP include IP multicast?
12. Does Mentat TCP include support for large windows (RFC 1323)?
13. Does Mentat TCP include IPv6?
The latest release, Mentat TCP 4.0, includes support for all kernel level IPv6 functionality with the exception of multicast forwarding, multicast listener discovery, and Mobile IPv6, all of which will be added to an upcoming release once the RFCs have stabilized.
IPv6 functionality includes support for the latest drafts of the following specifications:
- Base IPv6 unicast functionality (RFC 2460)
IPv6 Addressing Architecture (orig. RFC 1884)
ICMPv6 (RFC 2463)
IPv6 Provider-Based Unicast Address Format (orig. RFC 2073)
Path MTU Discovery for IPv6 (RFC 1981)
Transition Mechanisms for IPv6 Hosts and Routers (RFC 1933)
Routing Aspects of IPv6 Transition (RFC 2185)
Kernel level hooks for IPv6 router daemons
Neighbor Discovery for IPv6 (RFC 2461)
IPv6 Stateless Address Auto-configuration (RFC 2462)
Kernel level hooks for DHCPv6
Socket Interface Extensions for IPv6 (orig. RFC 2133)
Partial implementation of Advanced Sockets API for IPv6 (RFC 2292)
Necessary support for IPv6 over various media (RFC 2464, 2467, etc.)
MIB IPv6 General, ICMPv6, TCP, UDP (RFC 2465, 2466, 2452, 2454)
14. Does Mentat TCP include IP Security (IPSec)?
Yes. Mentat TCP provides all kernel level support for IPSec, both IPv4 and IPv6. Mentat TCP does not include an ISAKMP/IKE application, but has been tested with third-party implementations. Manual keying is performed through the PF_KEY interface.
IPSec functionality includes support for the latest drafts of the following specifications (due to US export restrictions, the encryption modules are not available to foreign licensees unless they have obtained the appropriate export license):
- IP Security Architecture (RFC 2401)
IP Authentication Header (AH) (RFC 2402)
IP Encapsulating Security Payload (ESP) (2406)
IP Authentication using Keyed MD5 (orig. 1828)
ESP DES-CBC Transform (orig. RFC 1829)
Implementations of the following security algorithms: DES, Triple DES, MD5, SHA1
- PF_Key Interface v2 (RFC 2367)
15. Does Mentat TCP support Neighbor Discovery (RFC 1970)?
16. Does Mentat TCP support Path MTU Discovery (RFC 1981)?
17. Does Mentat TCP support Address Autoconfiguration (RFC 1971)?
18. Is Mentat TCP appropriate for routers?
Yes. However, routing protocol daemons are not included as part of Mentat TCP.
19. How many data copies are performed in a system using Mentat TCP?
Typically, one copy is performed, copying the data from user space to kernel buffers, or vice versa, on reads and writes. A second copy is often required by the network card driver, depending on the physical design of the hardware and whether or not packets can be transmitted and received directly from STREAMS messages. It is possible to reduce this to zero copies, but this requires cooperation between the driver, protocol, and operating system.
20. How has the interoperability of Mentat TCP been tested?
Mentat is an active participant in industry interoperability testing. Mentat often participates in Connectathon. Mentat participates in the University of New Hampshire IPv6 interoperability testing either directly or through its OEM licensees. Mentat has participated in IPv6 interoperability demonstrations at Networld+Interop. Mentats IPSec code is tested at the Automotive Network Exchange (ANX) interoperability tests. Mentat is also an active participant in the IETF.
21. Does Mentat TCP include any device drivers?
Mentat offers a DLPI template that provides much of the code necessary to write any DLPI driver. By providing all of the DLPI code required for a driver, this template greatly reduces the time and effort required to develop a fully functional, high performance driver. This template is device independent and requires only the insertion of hardware-specific transmit and receive logic to generate a DLPI driver for any STREAMS-based host. The template package includes fully commented source code, detailed documentation, and a fully operational sample driver to use as a guide to writing the board specific code.
Applications and APIs in Mentat TCP
22. What are the APIs and interfaces in Mentat TCP?
At the application layer, Mentat TCP supports the STREAMS-standard Transport Provider Interface (TPI). When appropriate, Mentat also supplies its own implementations of a TLI/XTI library, a BSD sockets library, or in conjunction with Mentat Portable Streams, a kernel Sockets system call layer. The interface at the driver level is DLPI. All of these interfaces are industry standards. The APIs and interface standards are specified in the following Open Group documents:
- Data Link Provider Interface (DLPI), February 1997 (ISBN 1-85912-196-9). Available on-line at http://www.opengroup.org/public/pubs/catalog/c614.htm.
- Transport Provider Interface (TPI), February 1997 (ISBN 1-85912-102-0). Available on-line at http://www.opengroup.org/public/pubs/catalog/c615.htm.
- The XTI specification is included in Networking Services, Issue 5, February 1997 (ISBN 1-85912-165-9). Available on-line at http://www.opengroup.org/pubs/catalog/c523.htm. (XTI is part of The Open Groups UNIX 98 Single UNIX Specification, Version 2.)
- Information about STREAMS, including usage and interfaces, is found in the UNIX Press books:
- UNIX SVR4.2 STREAMS Modules and Drivers, Prentice Hall, 1992
- UNIX SVR4.2 Device Driver Reference, Prentice Hall, 1992
23. Does Mentat TCP include TCP/IP applications?
No. Mentat TCP does not include applications such as FTP, Telnet, or an HTTP server. However, Mentat TCP does support all common implementations of these applications through standard Sockets or TLI/XTI interfaces.
24. Does Mentat TCP include routing protocols such as OSPF, RIP, and BGP?
No. However, Mentat TCP does provide support for all routing protocols through standard ioctl interfaces.
25. Where do I get OSPF or RIP?
OSPF (gated) is available as freeware from Cornell University. RIP (routed) is available as part of the freeware BSD release.
26. Does Mentat TCP include SNMP, DNS, or DHCP?
For SNMP, Mentat TCP supports getting and setting of all items in SNMP TCP related MIBs, but Mentat does not supply the SNMP agent. For DNS and DHCP, Mentat TCP includes all of the necessary kernel hooks, but does not include DNS or DHCP agents.
27. Does Mentat provide support for implementing PPP as the network interface?
While Mentat does not provide a PPP stack, Mentat TCP will work with any standard STREAMS-based PPP stack. Mentat TCP uses the DLPI interface to interact with PPP and other link layer protocols.
Porting Mentat TCP
28. What are the requirements for porting Mentat TCP?
Mentat TCP requires an SVR4 compatible STREAMS environment as part of the operating system. STREAMS provides a portable interface for Mentat TCP, making porting of Mentat TCP extremely fast and easy.
29. How difficult is it to port Mentat TCP to my operating system?
Mentat TCP was designed for portability. It has been ported to operating systems as diverse as HP-UX, Mac OS, Linux, VxWorks, Windows NT, Solaris, UnixWare, AIX, and pSOS with a single set of base files. The small amount of port-specific code required is isolated into port-specific files.
30. What documentation is included to help me port Mentat TCP?
The source code is well commented and is delivered with a detailed 200-page internals manual and porting guide, along with a 200-page API manual.
31. How long will it take to port Mentat TCP?
In general, Mentat is able to have basic functionality running on an SVR4-style operating system within a day, and a fully integrated, tested, productized version in a couple of months.
32. What if my operating system does not have STREAMS?
Mentat Portable Streams is separately available.
33. What are the memory requirements for Mentat TCP?
Using the GNU C compiler for 68k, static memory requirements (excluding STREAMS) are approximately:
- TCP/IP text+data+bss 133KB
- Utilities text+data+bss 43KB
- The IPv6 version of Mentat TCP is somewhat larger.
34. Can Mentat TCP be put on a ROM?
Yes. Mentat TCP is entirely ROMable, so long as sufficient memory is available.
Embedded and Real Time Systems and Mentat TCP
35. Is Mentat TCP appropriate for an embedded or real time environment?
Absolutely! Mentat TCP will provide higher performance, better stability, and greater portability than typical embedded TCP/IP stacks. Mentat TCP also brings all of the functionality found in UNIX server systems to an embedded environment. The disadvantage is that because Mentat TCP is optimized for performance and functionality rather than code size, the footprint may be larger than that of typical embedded TCP/IP stacks. If you are looking for a small, cheap TCP/IP stack, Mentat TCP may not be the solution for you. If you are looking for a high-performance, high-quality, full-functionality stack, then Mentat TCP is the best solution available for any environment.
36. What processors does Mentat TCP support?
As a source code product written in ANSI C, the particular processor is irrelevant. Mentats OEM licensees support a wide range of little endian and big endian systems.
37. Can Mentat TCP be easily integrated with our own proprietary operating system?
Absolutely! This is Mentats business. Only Mentat Portable Streams or other SVR4-compatible STREAMS infrastructure is required.
Licensing Mentat TCP
38. How is pricing structured for Mentat TCP?
For a source code license, there is an initial source code fee, which includes six months of support. After the first six months, an optional support contract is available. Distribution is handled on a per-copy or per-year basis.
39. How much does Mentat TCP cost?
The pricing depends on a number of factors, primarily the operating system and distribution volume. Please contact Mentat for a price quote for your application.
40. How does Mentat handle distribution outside of the U.S.?
Customers in Japan should contact Mentats Japanese distributor, TriTech (http://www.tritech.co.jp) at 03-3320-6001 or by e-mail to email@example.com. All other distribution is handled directly through Mentats U.S. headquarters.
Mentat TCP Availability
41. What ports are available for Mentat TCP?
Historically, Mentat has been a source code supplier to computer operating system vendors. Mentat TCP has been ported to many different operating systems in conjunction with the OS vendor. These ports are generally included as part of the operating system. However, ports of Mentat TCP are available from Mentat for Linux, Solaris, VxWorks, and Windows NT as part of a source code license.
42. Is Mentat TCP available on Linux? How is it licensed?
Yes. Mentat TCP has been fully ported to Linux, including binary compatibility with existing applications and drivers. Mentat TCP is available in combination with Mentat Portable Streams as a source code product under standard Mentat licensing terms.
43. Is Mentat TCP available for Solaris?
Mentat TCP can run as a replacement for the native TCP/IP stack on Solaris up to version 2.5.1, although there are some minor incompatibilities on 2.5.1. It is also possible to run Mentat TCP in parallel with the native TCP/IP stack on later versions of Solaris. A swap-out replacement of the native stack on Solaris 2.6 or later is possible, but would require some amount of engineering effort at Mentat for which there are no plans at this time.
44. Is Mentat TCP available on VxWorks?
Mentat TCP has been ported to VxWorks. At the current time, it is not a full replacement for the VxWorks stack but will run in parallel using two IP addresses. Mentat is currently in the process of updating the port of Mentat Portable Streams to VxWorks to allow higher performance and better integration. Please contact Mentat for the current status of this project.
45. Is Mentat TCP available on Windows NT?
Yes. However, Mentat TCP runs in parallel to the native stack and can not replace the native Microsoft stack. Microsoft networking applications would continue to run over the native stack while specialized applications would be able to take advantage of Mentat TCP. Mentat TCP is available in either binary form or source code form on Windows NT.
46. What are the interfaces for Mentat TCP for Windows NT?
The application layer interface is TLI/XTI. The native driver interface is DLPI, but the product includes an NDIS-to-DLPI translation shim to provide compatibility with existing NDIS drivers.
47. Does Mentat TCP support a Winsock interface on Windows NT?
Not at the current time.
48. Is Mentat TCP available on Windows 98, Windows 95, Windows 3.1, or DOS?
While Mentat TCP could be ported to any of these operating systems in conjunction with Mentat Portable Streams, ports to those operating systems are not available at this time.
For more information on Mentat TCP, please see the Mentat TCP Datasheet
Home | Top of this page | TCP/IP Performance Comparison | Mentat TCP Datasheet | RFCs Supported
© 1999 Mentat Inc. All rights reserved.