TCP/IP Protocol Stack with IPv4
Blunk Microsystems' embedded TCP/IP protocol stack was designed from the ground up for high performance. Network benchmarks have repeatedly shown that TargetTCP's data transfer rate tops its competition. This is achieved by well engineered design with zero copies for DMA-based network drivers. Blunk Microsystems also puts great effort into regressive code coverage, static analysis, and fault testing for each protocol and the system as a whole. Each network protocol is matched to a testing procedure designed to exercise all code paths including the handling of protocol error paths. Interoperability tests with over six different operating systems is performed simultaneously with third party compliance and attack tools to ensure protocol robustness and responsiveness in the most demanding environments.
- RFC-compliant with a full protocol suite. Supports TCP (SACK), UDP, IPv4, ICMP, multicasting, ARP, and AutoIP over various physical medium such as Ethernet, WiFi and more. Includes clients for DNS, DHCP, and RARP.
- IPv4 and ICMP: RFC 791, 792, 1918, 1122, 1123, 5735 and more
- UDP: RFC 768
- TCP: RFC 793, 2018, 2581, 3782, 4821 and more
- DHCP client: RFC 2131
- DNS client: RFC 1035, 1034, 3490
- ARP: RFC 826, 3927, 5227
- RARP: RFC 903
- Standard Berkeley sockets application program interface with enhancements:
- connect(), recv(), and send() timeouts can be set by setsockopt().
- MSG_WAITALL flag makes recv() block until all requested bytes have been received.
- setsockfunc() installs a socket callback function, supporting event driven programming and allowing a single task to service both socket and other events.
- setsockopt() IP_TOS and IP_TTL options set the IP header type-of-service and time-to-live values on a per socket basis.
- setsourcefilter()/getsourcefilter(), an advanced IGMPv3 API, is also backward compatible with IGMPv1/2.
- getaddrinfo()/getnameinfo() allow applications to utilize DNS lookups without regard to whether the result is IPv4 or IPv6.
- Supports RISC processors with no extra data copy within the Ethernet driver to align packets. The IP, TCP, and UDP headers are 4-byte aligned within the stack, allowing fast access to the 32-bit fields in these structures. Application data remains unaligned, eliminating an extra copy required by Berkeley derived implementations.
- Using the Berkeley sockets API, only one copy of application data is performed. This applies to inbound and outbound transfers using both UDP datagrams and TCP streams. A zero-copy API is provided that eliminates the copy associated with the sockets API.
- Supports unnumbered serial links (RFC1716) to avoid having to waste IP addresses or create artificial subnets on targets with multiple network interfaces.
- Supports TCP out-of-band data and urgent data mark. Both socket callback functions and select() are used to notify applications when a connected peer has entered urgent mode.
- Easy to administer. The DHCP client may be configured to use gateway and DNS server addresses supplied by the server. The RARP client may be configured to use the RARP server as a default gateway. PPP connections can be configured to be a default gateway and to request a DNS server address from the remote peer.
- Integrated User Services. The optional Telnet server is integrated with the TargetOS command line monitor, allowing full access to built-in commands and easy extensibility. The FTP server is integrated with TargetXFSTM, Blunk Microsystems' embedded flash file system. The TFTP client is integrated with the TargetOS runtime library, allowing access to remote files via fopen(), and with the TargetOS loader, which accepts both ELF and S-record formats.
- High Performance. No data copies are performed within the stack. Matching of IP fragment lists, ARP address records, and TCP sockets is done with a fast hashing function. The 16-bit checksum for TCP and UDP is calculated in assembly language (for Power Architecture, ColdFire, and 68K). Access to the assembly language "add with carry" instruction enables the calculation to be done with fast 32-bit accesses.
- Clearly documented network driver interface supports concurrent use of multiple network interfaces. Ethernet and PPP drivers for the MCF5485/75, MCF5282, MCF5272, MC68360, MPC860, LAN91C111, DP83815, i82559, and other controllers are available separately. Blunk Microsystems provides low cost bids on custom drivers.
- Built-in TCP/IP protocol decoder. When enabled by a compile-time flag, a short summary of every received or transmitted packet is printed to stdout on an ongoing basis.
TLS/SSL for Security. TargetTCP has optional SSL 3.0/TLS 1.0/1.1 protocol support. FTP over TLS, Telnet over TLS and HTTPS support included while TLS client or server security can be applied to any stream protocol with a single API call. There is no separate application interface for using TLS; it is handled transparently to the application in the standard sockets API. All calls (recv(), send(), etc.) use plain text while behind the scenes and over the network travel TLS packets. This is the only TLS integration allowing custom application protocols to be secured with little or no change to the legacy application.
SNMPv3 for Management. Secure network management with SNMPv3 is available with complete MIB-II integration for TargetTCP. A powerful MIB to source code generator can be used to speed designing or migrating the device functionality. SNMPv3 adds security and versatility by making core management functions accessible as RowStatus columns. Interface SNMP to Telnet shell commands and/or TargetWeb's HTML forms and use the same underlying management functions for a reliable and redundant management scheme across network protocols.
RFC-compliant protocols and support for SNTP, NAT, DHCP Server, Internet Routing, IGMP, SOCK_RAW, AF_PACKET, and Traceroute.
- Simple Network Time Protocol: RFC 2030
- Network Address Translation: RFC 1631
- Internet Gateway: RFC 1009
- DHCP Server: RFC 2131
- IGMPv1, IGMPv2, IGMPv3: RFC 1112, RFC 2236, RFC 3376
- Source Filtering: RFC 3678
- Raw Sockets and Packets: RFC 3542
- Compact and configurable. Applications typically require approximately 60 KB of code from the TargetTCP library and can be configured to use as little as 64 KB of RAM data.
- Shipped with five sample applications: an RFC868 time client, a chargen, discard, a echo client, a chargen, discard, and echo server and an HTML client that cycles through a list of URLs, downloading each site's home page. Also included is a network benchmark application that calculates throughput and CPU utilization.
- Developed using TargetOSTM, Blunk Microsystems' real-time operating system, the source code is 100% ANSI C and is easily ported to both other real-time kernels and to polling environments that do not use a kernel. A Linux port is available for virtual, embedded or desktop Linux.
- Integrated with CrossStep™, Blunk's IDE for embedded development that includes an integrated project builder, kernel-aware source code debugger, on-chip debug connections for board bring-up and Ethernet debug connections for fast application development.
- Royalty-free. Includes source code, User's Manual, sample applications, and one year of technical support.
Porting document (PDF)
This document provides details on how you can port TargetTCP into your OS environment.