TCP/IP4/IPv6 Networking Stack

Various versions of our TCP/IPv4/IPv6 Networking Stack has been deployed in both commercial and military applications for 25 years. Designed as a reusable software component, our TCP/IPv4/IPv6 Networking Stack provides the performance and reliability that you need for even the most demanding embedded applications. It is a customizable reusable component meeting the demands of microcontroller (MCU), microprocessor (MPU), digital signal processor (DSP), digital signal controller (DSC), and FPGA developers who need scalability in memory and performance.  It is an ideal component for any machine to machine (M2M) system.

TCP/IPv4/IPv6 Network Stack Overview

By standardizing the TCP/IPv4/IPv6 networking stack architecture and interfaces, the TCP/IPv4/IPv6 networking stack becomes a pluggable component which may be implemented with the stack of your choice.  Today RoweBots offers two alternatives dealing with different performance, feature and size requirements.

 The following diagram shows the two levels of Internet related protocols.  The upper level are all high level protocols and the subject of another article which many be found with this link.  The lower half of the diagram is what is in discussion here.  The TCP/IPv4/IPv6 protocols and the various elements which are included to ensure that users get all the features that they require.

The current versions of the stacks have options for:

  • direct on chip Ethernet MAC or SPI based
  • a single interface or multiple interfaces
  • a complete TCP/IPv4/IPv6 Stack
  • a smaller UDP Stack
  • variable size buffer space and locations
  • small high performance ipv4
  • larger mixed IPV4/V6
  • IPV6 only
  • tailorable sizes with conditional compilation to eliminate unnecessary features
  • serial and packet based interfaces for both wireless and wireline devices
  • and a Berkely Sockets Interface (POSIX and Linux compatible)  for all the stacks with standard error codes and IOCTL options.

The combination of these stacks offers the optimal tradeoff between tiny size, intermediate size and performance, and very high performance with substantial resources available.

Fully integrated with our POSIX RTOS or ultra tiny embedded Linux compatible products, Unison and DSPNano, our stack saves you precious development time on your project. Since our TCP/IP stack works with all supported processors, you can make the move to new processors quickly and easily, and have the best resource and performance trade off for your system.

With reference to the diagram, you can see the POSIX or BSD sockets interface as the highest level item.  Below this standard interface, there is a set of protocols which implement the various internal RFCs associated with the protocols.  There is a list of these RFCs below.  The lowest layer, accessed through the NetIF provides multiple device interfaces to the lowest level elements of the stack.  These elements are replaceable components for both wireline and wireless interfaces for both packet transmission and serial packet transmission. 

The off the shelf TCP/IPv4/IPv6 proocol features are:

  • IPV4
  • IPV6
  • ARP
  • IP
  • UDP
  • ICMP
  • IGMP
  • TCP
  • DHCP client and server (although an upper level protocol, the client is bundled with the TCP/IPv4/IPv6 component as it is invariably used today)
  • PPP with appropriate security protocols
  • Dynamic routing - NAT with PAT
  • Wireless 6loWPAN and WiFi with packet based interfaces
  • Wireless integration for WiFi
  • Wireless support for machine to machine communications (M2M) wide area networks using GSM/GPRS, UHF, LTE and other protocols
  • Wireline support for both packet and serial communication devices

TCP/IPv4/IPv6 Network Stack Selection

Mixed IPV4 and V6 are fully functional versions with much greater resource usage. For this reason, an IPV4 only stack is provided which maximizes features while minimizing size. . Most MCUs need low resource usage and low cost.  

If IPV6 or mixed IPV4/V6 is required there is a second network stack to meet your needs.  It  is fully functional with conditional compilation allowing a subset of features if desired.  It has complete SNMP instrumentation.  This stack is also very small and features can be expanded as required.  For microprocessors (MPUs) and FPGAs this is the natural choice.  For medium and large microcontrollers (MCUs) this is the most functional choice with small cost.

One key feature of the approaches that we take in both DSPnano and Unison is a modular architecture. For this reason, various TCP stacks can be used to suit the application. Very tiny applications need solutions like UDP only, high functionality high performance applications can use our stock TCP stack and very full featured requirements can use our mixed IPV4/V6 stack with multple interfaces, security and greater buffer space.

TCP/IPv4/IPv6 Network Stack Feature Support

  • Source code for TCP/IP, UDP, ICMP, ARP, RARP, TFTP, DHCP client, IKE, IPSec and IGMPv1/v2/v3.
  • Static routes
  • Zero Copy
  • BSD/POSIX standard Sockets compatible with Linux, embedded Linux and other POSIX offerings
  • Documentation both at the architectural level and at the operational level.
  • 20+ Demonstration programs with Windows and Linux host programs for testing.
  • Microcontroller (MCU), digital signal controller (DSC), digital signal processor (DSP), FPGA and microprocessor (MPU) support with a broad set of vendors.
  • 100% ANSI C compliant, MISRA compliant, C++ interface options
  • A straightforward RTOS API makes RTOS porting extremely simple. Six 5 function calls are required to interface with an RTOS and POSIX I/O behavior is guaranteed by the POSIX sockets.
  • Heap allocation mechanism with fixed size buffers and memory allocation at startup which ensures deterministic memory usage.
  • Numerous build-time configuration options to tailor functionality and capabilities.
  • Run-time configuration to dynamically control the operating environment as per POSIX specifications.
  • Volume based and Royalty-free license options.
  • Open source TCP/IPv4 option, free for non commercial development under RPL.
  • Full integration with higher level protocols and security protocols.
  • Standards based throughout: RFCs (see below), POSIX sockets.
  • Multiple packet based and serial based wireline and wireless network interfaces.
  • Full range of wireless support including WiFi, 6loWPAN, GPRS/GSM, etc for Machine to Machine Communications (M2M) in just 10 minutes out of the box.
  • Redundant routing with fail over
  • Efficient DMA usage options
  • Host and router support with complete firewall and filtering capabilities.
  • TCP/IPv4/IPv6 auto addressing and configuration.
  • Multi-homing
  • Excellent performance - measure yourself with off the shelf demonstrations. iperf compatible implementations.
  • Off the shelf operation on a broad set of  off the shelf evaluation hardware for microcontrollers (MCU), microprocessors (MPU), digital signal processors (DSP), digital signal controllers (DSC) and FPGAs.  These standard boards are available from the processor vendors and from the various wireless module vendors.

 

The current set of RFC's that are supported include: 

TCP/IPv4
RFC 768
UDP User Datagram Protocol
RFC 791
IPv4 Internet Protocol
RFC 792
ICMP Internet Control Message Protocol
RFC 793
TCP Transmission Control Protocol
RFC 813
Window & Acknowledgement Strategy in TCP
RFC 826
Ethernet Address Resolution Protocol
RFC 896
Congestion Control in TCP/IP Inter-networks
RFC 903
Reverse Address Resolution Protocol
RFC 1058
Routing Information Protocol
RFC 1112
Host Extension for IP Multicast
RFC 1122
Requirements for Internet Hosts – Communication layers
RFC 1144
Compressing TCP/IP Headers for low speed links
RFC 1256
ICMP Router Discovery Messages
RFC 1323
TCP Extensions for High Performance
RFC 1349
TOS Bit Type of service In Internet Protocol
RFC 1388
Routing Information Protocol V2
RFC 1644
TCP Extensions for Transactions T/TCP
RFC 2001
TCP Slow Start Congestion Avoidance
RFC 2018
TCP Selective Acknowledgment Options
RFC Other
Consult factory for current RFC upgrades
TCP/IPv6
RFC 1886
DNS Extensions to Support IPv6
RFC 1981
Path MTU Discovery for IPv6
RFC 2460
Internet Protocol Version 6
RFC 2461
Neighbor Discovery for IPv6
RFC 2462
IPv6 Stateless Address Autoconfiguration
RFC 2463
IPv6 Internet Control Message Protocol (ICMPv6) for IPv6
RFC 2464
Transmission of IPv6 Packets over Ethernet Networks
RFC 2710
Multicast Listener Discovery (MLD) for IPv6 (host-side only)
RFC 2711
IPv6 Router Alert Option
RFC 2893
Transition Mechanisms for IPv6 Hosts and Routers
RFC 3041
Privacy Extensions for Stateless Address Auto-configuration in IPv6
RFC 3484
Default Address Selection for IPv6
RFC 3487
IPv6 Global Unicast Address Format
RFC 3493
Basic Socket Interface Extensions for IPv6
RFC 3513
IPv6 Addressing Architecture
RFC 6071
IPSec and IKE
RFC Other
Consult factory for current RFC upgrades

 

For more information on our TCP/IPv4/IPv6 networking stack please contact us.