PDF datasheet

NetF1 - High Octane TCP/IP

Tech Specification

High Performance IPv4 / IPv6 Stack and Virtual Routers

NetF1NetF1 is a high performance, feature rich and hardware-acceleration capable embedded TCP/IP stack implementation with an included virtual routing framework. It includes a complete implementation of multi-instance capable TCP, UDP, IP, IPv6, ICMP, and IGMP designed specifically for use in low-resource embedded environments, where unused stack components can be scaled out or replaced with hardware equivalents. With full support for host and IPv4 / IPv6 router mode, NetF1 offers a superset of capabilities provided by many other host-only or router-only stacks including unnumbered interface support and interface identification for send/receive. This extensive feature-set does not come at the expense of performance either -- higher performance, binary compatibility with existing drivers and API-compatibility with existing socket based network applications are just a few reasons where NetF1 outpaces its peers. Further, it also includes the ability to optionally create highly multi-threaded multiple isolated and managed virtual "routers" in a single physical system thereby lending itself to use in embedded environments that need to separate out network backplane communication, or in ISP equipment that needs to support multiple routing protocols for multiple customers.

NetF1 is a robust, lean, flexible and high octane IPv4 / IPv6 network stack implementation for embedded devices. It includes a complete implementation of all popular RFCs related to the TCP/IP suite. NetF1 can be configured to work in end-host mode or as an IPv4 or IPv6 router. In addition, it also provides a virtual routing framework, which allows the creation of multiple isolated and managed virtual "routers" in a single physical system.

NetF1 implements all standard IPV4 protocols: TCP, UDP, IP, ICMP, IGMP etc. It also boasts advanced IPv6 features including ICMP6, Multicasting, Router solicitations (IPV6 host), Router advertisements (IPV6 router), Neighbor Discovery Algorithm Site Renumbering/Link Address change processing etc. and integrates with TeamF1's V-IPSecure IPsec and IKE implementation to add standards-based security.NetF1 also includes V4 to V6 Transition Support in the form of a dual-mode stack and with tunneling.

Besides being a feature-rich, highly concurrent and multi-instance capable network stack, NetF1 is binary compatible with existing END drivers and does not require driver source code to be recompiled or even available.

NetF1's Virtual Routing Capabilities allow multiple instances of router mode stack (“VR”). Third-party protocols including OSPF, BGP and MPLS can run seamlessly within the virtual routing framework provided by NetF1. Virtual Router traffic is isolated between instances and controlled by independent set of control protocols.

Other advanced features include fast buffering and memory partition support to isolate NetF1 functionality from other tasks' resource requirements. In router mode, NetF1 also features improved routing performance with RTCache.

Control and configuration of the stack is possible via many different interfaces - compile-time parameters can be configured in from the Tornado development environment, or in configuration source code files for command-line builds. Run-time configuration of stack variables is enabled through a flexible BSD-style sysctl interface.

Besides, the features of an advanced network stack, NetF1 has special enhancements for embedded use. It is designed for hardware acceleration, and its modular architecture allows individual pieces of functionality that are provided in software form to be swapped out and replaced with their hardware accelerated equivalents through a thin driver interface. Further, support for unnumbered interfaces and interface identification for send/receive allow complex embedded systems to have multiple internal interfaces that are unaffected by external routing protocols, as well as allows for better management of the device by being able to choose specific interfaces for specific network transactions (such as ones across an ethernet backplane for management or redundancy).

Extensive debugging support and an instrumented trace facility to gain visibility into the stack's workings, as well as a comprehensive set of “show” routines in all modules round off NetF1's extensive feature-set.

NetF1 has OS-optimized support for multi-tasking, memory partitions, and abstractions that are lean, yet fast. Given its ability to scale out optional features and its special emphasis on low resource environments, NetF1 provides the essential functionality required by an embedded device to work either as a high performance connected end station or router.

Features & Benefits

  • Lean, High Performance IPv4 and IPv6
  • Faster than native OS IPv4 stack and popular IPv6 add-ons.
  • Highly concurrent and multi-instance capable.
  • Includes standard TCP/IP protocols.
  • Tested for protocol compliance and interoperability.
  • Full IPv4 and IPv6 Routing Support.
  • Virtual Routing Capabilities.
  • Binary compatible with existing END drivers.
  • Configurable via sysctl facility.
  • Built-in Debugging Support.
  • Support for big and little endian CPUs including x86, MIPS, ARM, XScale, PPC, and others.
  • Royalty-free, source distribution.

Advanced Features

  • Supports Path Maximum Transmission Unit (PMTU) discovery in IPv4 and IPv6 modes
  • Hardware acceleration capable - can offload compute-intensive portions to ASICs, FPGAs or Network Processors
  • Built-in support for deferred checksum calculations (for hardware assist) and hardware based TCP segmentation
  • Includes routing socket functionality
  • Supports unnumbered interfaces (no limit) accessible via direct calls, socket options or route table
  • Support for bootloader integration including DHCP in bootloader
  • Supports multi-instancing of the stack to create multiple virtual routers on same system

Turbo V4
NetF1 includes a high performance implementation of TCP/IP protocols and RFC implementations based on IPv4. This replaces the network stack provided with the OS and transparently provides a full-featured and highly concurrent alternative for a wide variety of connectivity applications for embedded devices. Included is a core set of functionality such as support for multicasting, IGMP v2, DHCP, and run-time configuration support through a BSD-style sysctl facility along with a system-wide MIB tree for ease of management. Special attention to modularity within the core stack makes it possible to scale out any functionality not required by the application, as well as replace CPU-intensive functions with hardware equivalents (hardware acceleration) implemented in an ASIC, FPGA, or network processor.

Hyper V6
With the IPv4 address space depleting rapidly, there is an accelerating move to adopt the new version of IP, IPv6, in embedded applications. Besides the 128-bit address space (as opposed to the 32-bit address space of IPv4), IPv6 also has important advantages, such as a simpler header format, better option and extension support, provisions for security and QoS management, and easier address auto-configuration. NetF1’s robust, fast and standards-based implementation of IPv6 enables embedded network applications to exploit the improvements in quality of service, security capabilities, and reliability inherent in this new technology with minimal integration effort. Overloaded routing systems can immediately leverage the routing memory space efficiency of IPv6 along with the extended address space available to it. NetF1’s IPv6 is as much as an order of magnitude faster than other embedded implementations. Full support for IPv6 security is available via TeamF1’s V-IPSecure add-on IPsec/IKE module.

IPv6 Features
In addition to supporting standard V6 networking protocols such as ICMP6 and Multicasting, NetF1 supports all the required features for an operational model as prescribed by the IPv6 related RFC standards.

NetF1 hosts (non-routers) support the following features:

  • Formation of interface identifier, link/site/global address generation from supplied prefix.
  • Neighbor Discovery Algorithm.
  • Site Renumbering/Link Address change processing.
  • Multicast Scoping/Anycast addressing Support.
  • Basic and Advanced Socket Extensions for new application development.
  • ICMP Error message processing support.
  • Router Solicitations.
  • Security (IPsec) using V-IPSecure.

NetF1 routers support:

  • IPv6 packet forwarding.
  • Static Route entries to be configured into routing table.
  • Solicited/Unsolicited advertisements through 'radvd' module.

IPv6 Extension Header Support
NetF1 supports the following four IPv6 extension headers:

  • Hop-by-Hop options header.
  • Destination options header.
  • Routing header.
  • Fragment header.

Support for security extensions are available by using NetF1 with TeamF1’s V-IPSecure product.

V4 to V6 Transition Support
Since most of the Internet and supporting routers are currently based on IPv4, NetF1 provides built-in support for various transition mechanisms which allow the IPv6 stack to co-exist with IPv4 implementations. It enables the use of a dual-mode stack which handles both IPv4 and IPv6, as well as provides for a tunneling capability in which IPv6 packets can be tunneled through IPv6-unaware networks encapsulated in IPv4 packets. This gives embedded developers the ability to add support for the next version of Internet Protocol while maintaining backward compatibility with the current IPv4 standard.

Virtual Routing Capabilities
"Virtual routers" are multiple logical router instances running on a single physical router system. By modularizing and isolating the different instances of the routing functionality, and dedicating separate resources of the physical system to each logical instance, each virtual router can run independently as a full-fledged router with its own set of routing protocols. The NetF1 virtual router framework replicates the networking stack up to the IP layer including data structures such as RTCaches, Route Tables, interface lists and packet receive queues, to achieve complete segregation of user data. Each router instance is thus individually controlled and is isolated from the other instances. Further, the TCP/IP processing for each router instance is delegated to a specialized logical software module copy making it an ideal fit for custom hardware off-load applications, such as hardware-based packet forwarding in carrier-class applications. Virtual routing support within NetF1 can be enabled for both IPv4 and IPv6, and combinations of the two can also co-exist. Third-party protocols including OSPF, BGP, and MPLS can run seamlessly within the virtual routing framework, attached to specific virtual router instances.

Debugging / Trace Support
NetF1 provides debugging support for application developers in the form of "show" routines and a trace library. The "show" routines keep track of, and display statistics for various protocols such as TCP, UDP, ICMP, IGMP, IPv6, etc. They can also be used to monitor the status of important tables such as multicast, neighbor discovery, and ARP caches. The trace library gives a view of function call sequence and execution time taken for each routine. Tracing is enabled through the use of special macros to instrument the code with configurable resolution, so that the run-time view of the network stack execution can be captured in the form of a dynamic snapshot to a buffer that can be analyzed later. The flexible sysctl interface also allows for convenient control and observation of the stack characteristics.

Binary Compatibility
All standard network applications such as Telnet, FTP, and HTTP servers that run on VxWorks using POSIX standards are binary compatible with NetF1, and can run without recompilation. Since the interface to the network stack is provided by means of standard sockets within VxWorks, all custom socket-based applications also run without modification. Enhanced features within NetF1 can be activated through the use of special NetF1 APIs. Further, NetF1 is binary compatible with VxWorks binary END drivers and does not require driver source to be available. With minor modifications, older BSD-style drivers may also be used with NetF1.

Management Framework
Configurable parameters in the various stack layers can be dynamically set using a sysctl() call, while their default values can be specified at compile time. NetF1's internal viewable and controllable functions is organized into a Management Information Base (MIB) tree with hierarchically named sysctl variables corresponding to the various OIDs. The list of variables available through this interface can be configured in at compile time. Sysctl handlers can be used to retrieve and set values of sysctl variables. Via this interface, NetF1 can be hooked up to any SNMP agent built into an embedded networking application.

Customization Flexibility

  • Available in full-source format.
  • Run-time configurable through sysctl interface.
  • Easily hooked up to SNMP agents.
  • Customization hooks and callouts.
  • Unwanted components can be scaled out.
  • Choice of buffering schemes.
  • Choice of threading models.
  • Designed for future hardware acceleration.