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

Internet Protocol (IP)

Description: OpenSS7 Project Manual Pages Internet Protocol IP Transport


RAWIP

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

NAME

rawip, rawip2 - Raw Internet Protocol Stream

SYNOPSIS

#include <sys/socket.h>
#include <netinet/ip.h>
#include <sys/tpi_ip.h>
#include <sys/xti_ip.h>

int raw_stream = open(raw_device, flags);
int raw_xtistr = t_open(raw_device, flags);
int raw_socket = socket(PF_INET, SOCK_RAWI, IPPROTO_IP);

DESCRIPTION

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

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

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

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

/dev/rawip, /dev/inet/rawip, /dev/streams/inet/rawip.
This device provides the RAWIP protocol services using the T-primitives of the Transport Provider Interface[7]. tpi(7), used for Internet Protocol, as described in tpi_ip(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 RAWIP interface using XTI[8, 9] as described in xti_ip(3).

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

/dev/rawip2, /dev/streams/rawip.
The same as above, but accesses the second generation RAWIP2 driver instead of the UDP driver.

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

SOCK_RAW
A standard SOCK_RAW 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, raw(7) directly. See raw(7) for more information.

USAGE

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

PF_INETSOCK_RAWIPPROTO_IP/dev/rawiptpiclts
PF_INET6SOCK_RAWIPPROTO_IP/dev/rawiptpiclts

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 raw_stream, raw_xtistr or raw_socket. These management controls are described in timod(4), sockmod(4) and socksys(4). See also raw(7) for sockets.

NOTICES

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

IMPLEMENTATION

There are now two STREAMS implementations for rawip: RAWIP and RAWIP2. These implementations differ as follows:

RAWIP
This implementation is part of the streams-inet driver in the OpenSS7 INET Networking package. The streams-inet driver implements rawip by opening a Linux rawip socket internal to kernel and providing a TPI[7] 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.
RAWIP2
This implementation if part of the streams-rawip 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 RAWIP implementation is the traditional one for the OpenSS7 INET Networking package. RAWIP2 was an afterthought. One of the reasons for implementing a separate RAWIP2 driver was to be able to do performance comparisons between the two approaches. Also, using the RAWIP2 driver, it is possible to make fair performance (throughput, latency, CPU occupancy) comparisons between the NET4 Linux sockets implementation of rawip 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/ip>, <sys/tpi.h>, <sys/tpi_ip.h>, <sys/xti.h>, <sys/xti_ip.h>.

DEVICES

/dev/rawip, /dev/inet/rawip, /dev/streams/inet/rawip, /dev/rawip2, /dev/streams/rawip.

SEE ALSO

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

BUGS

RAWIP2 has no known bugs.

RAWIP has the known bug that is 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[10].

CONFORMANCE

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

HISTORY

strinet 0.8.2 was released in 2002 and was since part of the Linux STREAMS (LiS)[11] package, and is now part of Linux Fast-STREAMS[6]. 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 791/STD 5, Internet Protocol --- DARPA Internet Program --- Protocol Specification, September 1981, J. Postel, ed., The Internet Society. (Also ST0005) (Status: STANDARD) (Updated by RFC 1349) <http://www.ietf.org/rfc/rfc0791.txt>
[2]
RFC 1349, Type of Service in the Internet Protocol Suite, July 1992, Philip Almquist, ed., The Internet Society. (Obsoleted by RFC 2474) (Updates RFC 1248, RFC 1247, RFC 1195, RFC 1123, RFC 1122, RFC 1060, RFC 0791) (Status: PROPOSED STANDARD) <http://www.ietf.org/rfc/rfc1349.txt>
[3]
RFC 2474, Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers, December 1998, K. Nichols, S. Blake, F. Baker and D. Black, The Internet Society. (Obsoletes RFC 1455, RFC 1349) (Updated by RFC 3168, RFC 3260) (Status: PROPOSED STANDARD) <http://www.ietf.org/rfc/rfc2474.txt>
[4]
RFC 3168, The Addition of Explicit Congestion Notification (ECN) to IP, September 2001, K. K. Ramakrishnan, ed., The Internet Society. (Obsoletes RFC 2481) (Updates RFC 2474, RFC 2401, RFC 793) (Status: PROPOSED STANDARD) <http://www.ietf.org/rfc/rfc3168.txt>
[5]
RFC 3260, New Terminology and Clarifications for Diffserv, April 2002, D. Grossman, ed., The Internet Society. (Updates RFC 2474, RFC 2475, RFC 2597) (Status: INFORMATIONAL) <http://www.ietf.org/rfc/rfc3260.txt>
[6]
streams-0.9.2, Linux Fast-STREAMS (LfS) 0.9.2 Source Code, Brian Bidulock, ed., OpenSS7 Corporation. <http://www.openss7.org/>
[7]
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/>
[8]
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/>
[9]
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/>
[10]
Solaris® 8, Solaris 8 Docmentation, 2001, (Santa Clara, California), Sun Microsystems, Inc., Sun. <http://docs.sun.com/>
[11]
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: 06:37:28 GMT, November 22, 2024
Last modified: Sun, 05 Mar 2006 08:34:09 GMT  
Copyright © 2014 OpenSS7 Corporation All Rights Reserved.