[
home |
contact |
products |
services |
partners |
news
]
[
snmp |
snmpv3 |
java-snmp |
mib-compiler |
mibs |
http/web |
ipstack |
tcp |
download
]
DMH Software
UDP/IP Stack
The UDP/IP source-package provides the basic software modules that are needed
by an IP Node on the Internet. It gives a system an IP "identity".
The UDP/IP stack serves as a basis for SNMP implementation over UDP. The
product can be used for other purposes, such as BOOTP for system bootstrapping,
Memory-Image down-load using Trivial File Transfer Protocol (TFTP), or other
user applications. This product conforms to the relevant up-to-date RFCs
(generally, all of the components conform to RFC 1122, and RFC 1123 ).
Back to Table of Content
-
Extremely flexible architecture, designed to be integrated in any
given system/environment. It requires minimum set of services from the
hosting-system and makes no assumptions about the underline
operating system.
-
Designed and implemented for a real-time operating environment. There
are no data copies in both the inbound or outbound direction. The
overhead at any level is minimal.
-
CPU Architecture independent, support for big-endian or little-endian.
-
Meets all the relevant requirements specified by rfc1122.
-
Hooks to all relevant managed objects as defined by mib-ii (currently
rfc1213)
-
TCP is an optional component and can be used in cases where
needed. Otherwise the UDP/IP stack is a stand-alone system.
-
ICMP is fully supported. An API for ICMP echo (ping)
is offered.
-
IP sub-network addresses are fully supported. There is no
restriction on the subnet-mask.
-
There are no blocking calls inside the stack
-
Memory control and management is done outside the stack
by the hosting-system. There are no memory copy inside
the stack.
-
The code is ANSI "C", very well documented and structured. Many
explanation and references to various RFCs inside the code. The source
code can serve as a tutorial.
-
The source code is furnished with a set of flexible Makefiles that
designed to be customized to a specific development environment and
tools (compiler, linker etc.).
-
Interfaces Support, include of Ethernet, Token-Ring, FDDI and serial
interfaces
-
Portability to Different Platform Architectures: including 16 & 32 bit,
RISC & CISC, normal & reverted byte order processors. Specifically:
Intel, Motorola, Sparc and more.
IPstack optional components and additional features
Back to Table of Content
It is no longer a statement of the future to say that the computer is
the network. More and more, computer systems have the capability to
become a node on a network and exchange data with other nodes on the
network.
One of the most popular computer networks is the TCP/IP Internet. In
order to be able to exchange data on the internet, a computer system
must support a minimum set of services and protocol stack. In the
internet environment, a node can take advantage of a large variety of
services provided by other nodes, which we call servers.
One of today's focuses is Network Management, and in particular, the
Simple Network Management Protocol (SNMP), which is used in the
internet TCP/IP based networks. Many organizations require that any
node on the network must be visible, and in some cases also be
controlled by the Network Manager.
But Network Management capability is not the only reason for having a
minimum TCP/IP stack implementation. Services such as file transfers,
bootstrapping and updating software versions across the network are
only a few examples of services that nodes on the internet can use.
Back to Table of Content
The UDP/IP source-package provides the basic software modules that are
needed by an IP Node on the internet network. It gives a system an IP
identity.
The software package is a relatively small, simple, portable software
product that is easy to integrate as a sub-component in a larger
system. Naturally, the product serves as a basis for SNMP
implementation over UDP. The product can be used for other purposes,
such as code down-loading using Trivial File Transfer Protocol (TFTP).
Back to Table of Content
This product conforms to the relevant up-to-date RFCs. Generally, all
of the components conform to RFC 1122 - Requirements for Internet
hosts - communication layers, and RFC 1123 - Requirements for Internet
hosts - application and support.
Back to Table of Content
Each component of this product supports MIB objects defined by MIB-II.
Simple interface for the SNMP agent/manager to read/write the various
MIB objects is implemented inside the package modules.
-
ARP
-
Address Resolution Protocol - the TCP/IP protocol used to
dynamically bind a high level IP Address to a low-level physical
hardware address. RFCs: 826, 925, 1027, 1042, 1103. According
to RFC 1122, ARP keeps the last unresolved IP datagram and
re-transmits it when the corresponding reply arrives. The
canonical physical address representation is supported by ARP
module. This feature is important for TOKEN-RING topology
networks such as FDDI and Token-Ring. In addition, ARP module
implements a set of private MIB objects that enables the Network
Manager to monitor the ARP operation.
-
IP
-
Internet Protocol - The TCP/IP standard protocol that defines IP
datagram as the unit of information passed across an internet
and provides the basis for connectionless, best-effort delivery
service. RFCs: 791, 950, 1071. The IP module supports sub
networking and uses an `Address Mask' to determine how to route
an IP datagram. The IP module supports point-to-point networking.
-
ICMP
-
Internet Control Message Protocol - Integral part of IP standard
that handles errors and control messages. ICMP is used by
gateways and hosts to send reports of problems about datagrams
back to the original source that sent the datagram. RFCs: 792,
950. ICMP supports `ICMP Mask Reply' (see RFC 950). It will
set the `Address Mask' (only upon the arrival of the first
inbound Mask-Reply) to the received `Address Mask' (see RFC
1122). ICMP also includes an echo request/reply used to test
whether a destination alive. It may be used for
implementation the `PING' program.
-
UDP
-
User Datagram Protocol - The TCP/IP standard protocol that
allows an application program on one machine to send a datagram
to an application program on another machine. UDP uses the IP to
deliver datagrams. UDP includes a protocol port number, allowing
for multiplexing. RFCs 768, 1071.
-
IP-System
-
The IP-System module is a collection of all internal services
needed by the various protocols. It is also responsible for the
initialization and the IP-System data-base. IP-System supports
multiple `interfaces' with a different IP Address per
`interface'.
Back to Table of Content
This package supports both big-endian and little-endian machines. By
setting a single compile-time flag, the CPU architecture is selected.
The code was ported, compiled and exercised on both the INTEL-based
and Motorola-based systems.
The hosting-system interfaces with the UDP/IP package through a well
defined, relatively narrow interface. It interfaces with the following
modules:
- Data Link Level (layr-2)
- UDP
- ICMP
- IP-System Initialization
Back to Table of Content
This software package provides a high degree of diagnostic capability. It uses
a function supplied by the hosting-system as a means to send events,
diagnostic and verbose messages, which are ultimately controlled by the
hosting-system. They can be turned on and off by setting the appropriate
run-time flags.
The events and messages are classified into four severity levels:
Informational, Warnings, Errors and Fatal errors.
Back to Table of Content
Network events are those which occur with regard to network
activities. For example:
- An ICMP Mask Reply is received by the hosting-system.
- An erroneous ARP inbound message is received.
These types of events help the system administrator monitor what is going on in
the network.
Verbose messages are helpful for debugging and network monitoring.
Every module has a separate Verbose Flag that can be turned on or
off. The Verbose messages can also be taken out of the code by
setting a compilation flag.
Software errors are events that indicate some inconsistency in the
way a function is called, or point out that the program has reached
an invalid state. For example: the IP System initialization function
is called with an incorrect combination of IP-Address and its
associated Address-Mask. Such a call causes a fatal-software-error
because IP cannot setup its database tables.
Back to Table of Content
The hosting-system is the system that hosts the IP-stack. The
IP-stack, being a passive component, requires the following services from
the hosting-system system:
1. Data-Link-Level (Layer-2) Services
In the inbound direction, when the hosting-system Layer-2
encounters either ARP (type=0x806) or IP (type=0x800) packets, it will
call process_arp() or process_ip()
primitives supplied by the IPstack.
In the outbound direction, IP sends IP datagrams by way of the
primitive send_dll(). IP specifies to the Layer-2 the
physical destination, Layer-2 data-length, and where the DATA
resides. The Layer-2-USER-DATA is the IP datagram to be transmitted.
2. UDP Inbound and UDP sessions.
Udp offers a light weight connection manager. It maintains a
udp-listen-table. A udp_open() inserts an entry
to the table and associate the user-udp-handler with the udp port. The
user handler is called when a udp datagram with the registered port is
received. In most cases this service is sufficient and no additional
management is required.
3. ARP Tick Timer
The hosting-system is responsible for calling
arpTick() periodically (usually every minute). This
function ages old entries in the ARP table (see RFC
1027). This approach is simpler than requiring timer services from the
hosting-system.
4. ICMP Inbound Echo
Upon arrival of an ICMP-ECHO-REPLY, ICMP calls the function
icmp_echo_rcv. This function allows the hosting-system to
implement the Ping command. It is optional and may be replaced by the
function supplied by the IP-stack.
5. Event Messages
The IP-stack uses send_event to send events. The
hosting-system implementation handles
IP-events according to its policy. It print
the event TEXT, send it to an event server, store it in a file,
etc. The events are ultimately controlled by the
hosting-system.
6. Software Error Messages
Similar to EVENTS, the hosting-system supplies a handler for Software
Error messages.
Back to Table of Content
The code is ANSI "C" compatible and contains function prototype
definitions. Upon customer request, they can be taken out for use
with compilers that do not support function prototypes. For compilers
that do not support the declaration of parameters inside a function
parentheses, those declarations can be modified.
The program object(s) are the result of compiling and linking the
package source code. The objects may be a set of libraries or
intermediate objects. They are linked together with the
hosting-system objects to create the entire
hosting-system program.
The entire source package is broken down into several sub-modules.
Each sub-module has its own makefile that specifies the dependencies
and the make targets to create the specific sub-module object. The
Master-Makefile recursively invokes each sub-makefile to create the
intermediate sub-objects. At the master level, all of the sub-objects
are linked together to an intermediate IP-system-object (maybe a
library) that is linked together with the system objects.
Finally, a set of makefile Default-Rules is used tailor
specific development tools such as the compiler, linker, librarian,
etc. It also defines the various command syntaxes.
Upon request the IP-system can be organized and created in a
flat single directory. This approach, however, is not
recommended.
Back to Table of Content
IPstack optional components and additional features:
-
The main target is diskless embedded real-time systems.
-
Boot and initialization: the stack is initialized by the hosting
system at initialization time. Can be boot and initialized by BOOTP,
or DHCP.
-
The ipstack may be initialized without ip address. In this case, based
upon the boot type it will broadcast either bootp or rarp request to
obtain its ip address.
-
BOOTP, TFTP and Memory-Image-Downloader components are designed to
bootstrap the ipstack as well as the hosting system.
-
TFTP can be used to move data/files from to the target system. Both
TFTP Server and Client are supported. Multiple simultaneous TFTP
transactions are supported.
-
Telnet server is an optional component that offers a simple API to the
system Command-Line-Interface (CLI). The telnet server operates on
top of tcp.
Back to Table of Content
[
home |
contact |
products |
services |
partners |
news
]
[
snmp |
snmpv3 |
java-snmp |
mib-compiler |
mibs |
http/web |
ipstack |
tcp |
download
]
Last edit: Apr 21 2008
Copyright © 1997-2008 DMH Software.