Links

GitHub

Open HUB

Quick Links

Download

STREAMS

SIGTRAN

SS7

Hardware

SCTP

Related

Package

Manual

Manual Pages

References

Conformance

Performance

Documentation

Design

Status

FAQ

IP Transport

SCTP

TCP

UDP

SSCOP

IP

Man Pages

Applications

SS7 Stack

ISDN Stack

SIGTRAN Stack

VoIP Stack

MG Stack

SS7/ISDN Devices

IP Transport

Embedded Systems

OS

Documentation

FAQ

SIGTRAN

Design

Conformance

Performance

References

Man Pages

Manuals

Papers

Home

Overview

Status

Documentation

Resources

About

News

User Datagram Protocol (UDP)

Description: OpenSS7 Project Manual Pages Internet Protocol IP Transport


UDP

Section: OpenSS7 INET Networking Devices (4)
Updated: 2008-10-31
Index Return to Main Contents

NAME

udp, udp2, arp, rip - User Datagram Protocol Stream

SYNOPSIS

#include <sys/socket.h>
#include <netinet/udp.h>
#include <sys/tpi_udp.h>
#include <sys/xti_udp.h>

int udp_stream = open(udp_device, flags);
int udp_xtistr = t_open(udp_device, flags);
int udp_socket = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);

DESCRIPTION

UDP
is an implementation of the User Datagram Protocol (UDP) defined in RFC 768[1]. It implements a connectionless, unreliable datagram packet service. Packets may be reordered or duplicated before they arrive. UDP generates and checks checksums to catch transmission errors.

UDP is implemented as a STREAMS(4) pseudo-device driver using the INET(4) strinet package for Linux Fast-STREAMS[2]. The strinet package translates Linux native udp(7) sockets into TPI[3] transport provider Streams suitable for use with XTI[4, 5], (see xti(3)).

UDP2 (the second generation UDP driver) differs from UDP largely in internal implementation. UDP2 accesses the IP layer of Linux directly, rather than opening a socket internal to the kernel.

UDP provides one connectionless TPI Stream type. To select the Stream, udp_device can be one of the following:

/dev/udp, /dev/inet/udp, /dev/streams/inet/udp.
This device provides the UDP protocol services using the T-primitives of the Transport Provider Interface[3], tpi(7), used for User Datagram Protocol, as described in tpi_udp(7). The tpi(7) interface provided on a Stream opening this device is suitable for use with the xnet(3) or xti(3) library and provides UDP interface using XTI[4, 5] as described in xti_udp(3).

UDP2 provides one connectionless or pseudo-connection-oriented TPI Stream type. To select the Stream, udp_device can be one of the following:

/dev/udp2, /dev/streams/udp.
The same as above, but accesses the second generation UDP2 driver instead of the UDP driver.

UDP provides one socket type for use by the sockets(3) library socket(7) calls. UDP provides sockets in the protocol families PF_INET and PF_INET6 using the protocol number IPPROTO_UDP. The socket_type can be one of the following:

SOCK_DGRAM
A standard SOCK_DGRAM socket that preserves message boundaries, does not Nagle, and provides only unordered and unreliable delivery in a connectionless association. This socket uses the underlying Linux socket implementation, udp(7), directly. See udp(7) for more information.

USAGE

The following entries in /etc/protosw provides the information for socksys(4) to use the devices:

PF_INETSOCK_DGRAMIPPROTO_UDP/dev/udptpiclts
PF_INET6SOCK_DGRAMIPPROTO_UDP/dev/udptpiclts

For additional information, see socksys(4) and protosw(5).

IOCTLS

All interfaces support a set of management IO controls using ioctl(2) and streamio(7) I_STR system calls on the udp_stream, udp_xtistr or udp_socket. These management controls are described in timod(4), sockmod(4) and socksys(4). See also udp(7) for sockets.

NOTICES

UDP has several implementations. This manpage is for the INET(4) implementation that provides tpi(7) access to the Linux NET4 version of UDP. For more information on the Linux NET4 version, see udp(7).

IMPLEMENTATION

There are now two STREAMS implementations for udp: UDP and UDP2. These implementations differ as follows:

UDP
This implementation is part of the streams-inet driver in the OpenSS7 INET Networking package. The streams-inet driver implements udp by opening a Linux udp socket internal to kernel and providing a TPI[3] interface to that socket. This approach has been termed xtios (XTI over Sockets). The approach is rather inefficient in that two layers of interface code are executed. Also, sockets does not have the same capabilities that STREAMS does in many regards, particularly internal to the kernel. The approach is not only inefficient, but is less usable by other STREAMS modules and multiplexing drivers.
UDP2
This implementation if part of the streams-udp driver in the OpenSS7 INET Networking package. This implementation uses the direct approach of hooking into the Linux kernel at the ip(7) level, using direct function calls, and does not open a socket. This approach is more efficient in that only STREAMS interface code is invoked in the data path.

The UDP implementation is the traditional one for the OpenSS7 INET Networking package. UDP2 was an afterthought. One of the reasons for implementing a separate UDP2 driver was to be able to do performance comparisons between the two approaches. Also, using the UDP2 driver, it is possible to make fair performance (throughput, latency, CPU occupancy) comparisons between the NET4 Linux sockets implementation of udp and the STREAMS implementation. It was intended that the netperf(1) package be used to provide performance histogram comparisons between the two implementations.

It may seem like a lot of trouble to go to, however, lkml (Linux Kernel Mailing List) has made some very strong (and unsupported in the author's opinion) statements regarding the performance of STREAMS and that of sockets for Internet protocols. Performance tests of this nature could dis-spell those rumours.

FILES

<sys/socket.h>, <netinet/udp.h>, <sys/tpi.h>, <sys/tpi_ip.h>, <sys/tpi_udp.h>, <sys/xti.h>, <sys/xti_ip.h>, <sys/xti_udp.h>.

DEVICES

/dev/udp, /dev/inet/udp, /dev/streams/inet/udp, /dev/udp2, /dev/streams/udp.

SEE ALSO

INET(4), ioctl(2), ip(7), STREAMS(9), protosw(5), socket(7), sockets(3), sockmod(4), socksys(4), STREAMS(4), udp(7), udp_ioctl(4), timod(4), tpi(7), tpi_ip(7), tpi_udp(7), xnet(3), xti(3), xti_ip(3), xti_udp(3).

BUGS

UDP2 has no known bugs.

UDP has the known bug that it cannot receive zero length messages (but it can send them).

COMPATIBILITY

The OpenSS7 INET Networking implementation of UDP for STREAMS is largely compatible with STREAMS-based implementations such as Lachman or Mentat TCP/IP stacks and Solaris® documentation[6].

CONFORMANCE

XNS 5.2[5]. Conformance is validated using the test-inet_udp(8) validation test suite executable.

HISTORY

strinet 0.8.2 was released in 2002 and was since part of the Linux STREAMS (LiS)[7] package, and is now part of Linux Fast-STREAMS[2]. The second generation driver was completed in 2006. The first generation driver was upgraded significantly in strinet 0.9.2.7 release in 2008.

REFERENCES

[1]
RFC 768/STD 6, User Datagram Protocol, August 28, 1980, J. Postel, ed., The Internet Society. (Also STD0006) (Status: STANDARD) <http://www.ietf.org/rfc/rfc0768.txt>
[2]
streams-0.9.2, Linux Fast-STREAMS (LfS) 0.9.2 Source Code, Brian Bidulock, ed., OpenSS7 Corporation. <http://www.openss7.org/>
[3]
TPI Revision 2.0.0, Open Group CAE Specification: Transport Provider Interface (TPI) Specification, Revision 2.0.0, Draft 2, 1999, (Berkshire, UK), OpenGroup, Open Group Publication. <http://www.opengroup.org/onlinepubs/>
[4]
XTI/TLI Revision 1.0, Open Group CAE Specification: XOpen Transport Interface, Revision 1, n.d., (Berkshire, UK), XPG, X Programmer's Group. <http://www.opengroup.org/onlinepubs/>
[5]
XNS, Open Group CAE Specification: Technical Standard: Network Services (XNS), Issue 5.2, Draft 2, 1999, (Berkshire, UK), OpenGroup, Open Group Publication. [ISBN 1-85912-241-8] <http://www.opengroup.org/onlinepubs/>
[6]
Solaris® 8, Solaris 8 Docmentation, 2001, (Santa Clara, California), Sun Microsystems, Inc., Sun. <http://docs.sun.com/>
[7]
LIS 2.18, Linux STREAMS (LiS) 2.18.6 Source Code, Brian Bidulock, ed., OpenSS7 Corporation. <http://www.openss7.org/>

TRADEMARKS

OpenSS7tm
is a trademark of OpenSS7 Corporation.
Linux®
is a registered trademark of Linus Torvalds.
UNIX®
is a registered trademark of The Open Group.
Solaris®
is a registered trademark of Sun Microsystems.

Other trademarks are the property of their respective owners.

IDENTIFICATION


OpenSS7 INET Networking: Package strinet version 0.9.2.7 released 2008-10-31.

Copyright©1997-2008OpenSS7 Corp. All Rights Reserved.
(See roff source for permission notice.)



Index

NAME
SYNOPSIS
DESCRIPTION
USAGE
IOCTLS
NOTICES
IMPLEMENTATION
FILES
DEVICES
SEE ALSO
BUGS
COMPATIBILITY
CONFORMANCE
HISTORY
REFERENCES
TRADEMARKS
IDENTIFICATION

This document was created by man2html, using the manual pages.
Time: 03:10:30 GMT, November 15, 2024
Last modified: Sun, 05 Mar 2006 08:34:25 GMT  
Copyright © 2014 OpenSS7 Corporation All Rights Reserved.