2003-06-13 12:33:33 +00:00
|
|
|
.\" $FreeBSD$
|
|
|
|
.\"
|
2003-08-12 14:20:32 +00:00
|
|
|
.Dd August 11, 2003
|
2003-06-13 12:33:33 +00:00
|
|
|
.Dt NATMIP 4
|
|
|
|
.Os
|
|
|
|
.Sh NAME
|
|
|
|
.Nm natmip
|
|
|
|
.Nd IP over ATM PVCs
|
|
|
|
.Sh SYNOPSIS
|
|
|
|
.Cd "device atm"
|
|
|
|
.Cd "options NATM"
|
|
|
|
.Sh DESCRIPTION
|
|
|
|
The NATM protocol stack includes support for IP over ATM. Without any
|
|
|
|
additional signalling stacks or other modules it is possible to build
|
|
|
|
a CLIP (classical IP over ATM) network based on PVCs.
|
|
|
|
.Pp
|
|
|
|
An ATM network card (en0 in this example) is configured for IP by something
|
|
|
|
like:
|
|
|
|
.Pp
|
|
|
|
.Dl # ifconfig en0 128.252.200.1 netmask 0xffffff00 up
|
|
|
|
.Pp
|
2003-08-12 14:20:32 +00:00
|
|
|
IP routing is done with special interface routes (routes with directly
|
|
|
|
reachable destinations) with a link layer gateway address.
|
|
|
|
The link layer address specifies the ATM interface through which the
|
|
|
|
destination can be reached, the virtual channel that connects to the
|
|
|
|
destination and the ATM characteristics of this channel.
|
|
|
|
The address part of the link layer address (see
|
|
|
|
.Xr link_addr 3 )
|
|
|
|
consists of a fixed part (the first 5 bytes) and a part that
|
|
|
|
depends on the kind of the PVC (UBR, CBR, VBR, ABR). Multi-byte values
|
|
|
|
are big-endian encoded: the bytes with the lower numbers contain the
|
|
|
|
higher order bits.
|
|
|
|
.Bl -tag -width "bytes 12...12" -offset indent
|
|
|
|
.It byte 0
|
|
|
|
Is a flag byte. Currently only flag 0x20 is used.
|
|
|
|
When set, all IP frames are LLC/SNAP encapsulated before putting them into
|
|
|
|
an AAL5 frame.
|
|
|
|
Setting this flag is recommended and allows interoperability with other
|
|
|
|
CLIP implementations.
|
|
|
|
Note that BPF works only with LLC/SNAP encapsulation.
|
|
|
|
.It byte 1
|
|
|
|
This is the VPI of the channel.
|
|
|
|
.It bytes 2...3
|
|
|
|
VCI of the channel. Must not be zero.
|
|
|
|
.It byte 4
|
|
|
|
Traffic type. One of 0 (UBR), 1 (CBR), 2 (ABR), 3 (VBR).
|
|
|
|
.El
|
|
|
|
.Pp
|
|
|
|
The variable part for UBR connections may be either empty or three bytes:
|
|
|
|
.Bl -tag -width "bytes 12...12" -offset indent
|
|
|
|
.It bytes 5...7
|
|
|
|
Specifies the peak cell rate for UBR.
|
|
|
|
.El
|
|
|
|
.Pp
|
|
|
|
The variable part for CBR connections must be three bytes:
|
|
|
|
.Bl -tag -width "bytes 12...12" -offset indent
|
|
|
|
.It bytes 5...7
|
|
|
|
Specifies the peak cell rate for CBR.
|
|
|
|
.El
|
2003-06-13 12:33:33 +00:00
|
|
|
.Pp
|
2003-08-12 14:20:32 +00:00
|
|
|
The variable part for VBR connections must be 9 bytes long and specifies three
|
|
|
|
values:
|
|
|
|
.Bl -tag -width "bytes 12...12" -offset indent
|
|
|
|
.It bytes 5...7
|
|
|
|
Specifies the peak cell rate for VBR.
|
|
|
|
.It bytes 8...10
|
|
|
|
This is the sustainable cell rate.
|
|
|
|
.It bytes 11...13
|
|
|
|
The maximum burst size.
|
|
|
|
.El
|
2003-06-13 12:33:33 +00:00
|
|
|
.Pp
|
2003-08-12 14:20:32 +00:00
|
|
|
The variable part for ABR connections must be 19 bytes long and specifies the
|
|
|
|
following values:
|
|
|
|
.Bl -tag -width "bytes 12...12" -offset indent
|
|
|
|
.It bytes 5...7
|
|
|
|
Specifies the peak cell rate for ABR.
|
|
|
|
.It bytes 8...10
|
|
|
|
The minimum cell rate.
|
|
|
|
.It bytes 11...13
|
|
|
|
The initial cell rate.
|
|
|
|
.It bytes 14...16
|
|
|
|
The transient buffer exposure.
|
|
|
|
.It byte 17
|
|
|
|
The NRM value.
|
|
|
|
.It byte 18
|
|
|
|
The TRM value.
|
|
|
|
.It bytes 19...20
|
|
|
|
The ADTF value.
|
|
|
|
.It byte 21
|
|
|
|
The rate increase factor (RIF).
|
|
|
|
.It byte 22
|
|
|
|
The rate decrease factor (RDF).
|
|
|
|
.It byte 23
|
|
|
|
The cutoff decrease factor (CDF).
|
|
|
|
.El
|
2003-06-13 12:33:33 +00:00
|
|
|
.Pp
|
2003-08-12 14:20:32 +00:00
|
|
|
To add a PVC the
|
|
|
|
.Dq route
|
|
|
|
utility can be used:
|
|
|
|
.Pp
|
|
|
|
.Ic # route add -iface
|
|
|
|
.Ar <remote IP address>
|
|
|
|
.Ic -link
|
|
|
|
.Ar <iface> Ns Ic \&: Ns Ar <lladdr>
|
|
|
|
.Pp
|
|
|
|
The
|
|
|
|
.Ar <iface>
|
|
|
|
is the ATM interface through which
|
|
|
|
.Ar <remote IP address>
|
|
|
|
can be reached and
|
|
|
|
.Ar <lladdr>
|
|
|
|
is the link layer address as a string of dot-separated, hexadecimal bytes.
|
|
|
|
.Pp
|
|
|
|
NATM also supports the old, original format. This consists of 4 byte
|
|
|
|
link layer addresses (and the channels are implicit UBR):
|
|
|
|
.Bl -tag -width "bytes 12...12" -offset indent
|
|
|
|
.It byte 0
|
|
|
|
Flags:
|
2003-06-13 12:33:33 +00:00
|
|
|
.Bl -tag -width "0x02" -offset indent -compact
|
|
|
|
.It 0x01
|
|
|
|
use AAL5.
|
|
|
|
.It 0x02
|
|
|
|
if using AAL5, use an LLC/SNAP header.
|
|
|
|
.El
|
|
|
|
.Pp
|
|
|
|
Thus, parameter 3 means AAL5 and LLC/SNAP encapsulation (this is the required
|
|
|
|
setting for interworking with other CLIP clients).
|
|
|
|
Note that BPF works only with LLC/SNAP encapsulation.
|
2003-08-12 14:20:32 +00:00
|
|
|
.It byte 1
|
|
|
|
VPI for the channel
|
|
|
|
.It bytes 2...3
|
|
|
|
VCI for the channel
|
|
|
|
.El
|
2003-06-13 12:33:33 +00:00
|
|
|
.Sh EXAMPLES
|
|
|
|
Suppose you have 3 hosts 128.252.200.1, 128.252.200.2 and
|
|
|
|
128.252.200.3 connected by ATM through PVCs:
|
|
|
|
.Pp
|
|
|
|
.Bl -item -offset indent -compact
|
|
|
|
.It
|
2003-08-12 14:20:32 +00:00
|
|
|
between 128.252.200.1 and 128.252.200.2: 0xc9 UBR
|
2003-06-13 12:33:33 +00:00
|
|
|
.It
|
2003-08-12 14:20:32 +00:00
|
|
|
between 128.252.200.1 and 128.252.200.3: 0xca VBR
|
2003-06-13 12:33:33 +00:00
|
|
|
.It
|
2003-08-12 14:20:32 +00:00
|
|
|
between 128.252.200.2 and 128.252.200.3: 0xcb CBR
|
2003-06-13 12:33:33 +00:00
|
|
|
.El
|
|
|
|
.Pp
|
2003-08-12 14:20:32 +00:00
|
|
|
The parameters for the VBR channel are: PCR 50000, SCR 10000, MBS 10.
|
|
|
|
The peak cell rate for the CBR channel is 100000.
|
|
|
|
.Pp
|
2003-06-13 12:33:33 +00:00
|
|
|
To enable the links use the following commands:
|
|
|
|
.Pp
|
|
|
|
on host 128.252.200.1:
|
|
|
|
.Bd -literal -offset indent -compact
|
|
|
|
# ifconfig en0 128.252.200.1 netmask 0xffffff00 up
|
2003-08-12 14:20:32 +00:00
|
|
|
# route add -iface 128.252.200.2 -link en0:3.0.0.c9.0
|
|
|
|
# route add -iface 128.252.200.3 -link en0:3.0.0.ca.3.0.c3.50.0.27.10.0.0.a
|
2003-06-13 12:33:33 +00:00
|
|
|
.Ed
|
|
|
|
.Pp
|
|
|
|
on host 128.252.200.2:
|
|
|
|
.Bd -literal -offset indent -compact
|
|
|
|
# ifconfig en0 128.252.200.2 netmask 0xffffff00 up
|
2003-08-12 14:20:32 +00:00
|
|
|
# route add -iface 128.252.200.1 -link en0:3.0.0.c9.0
|
|
|
|
# route add -iface 128.252.200.3 -link en0:3.0.0.cb.1.1.86.a0
|
2003-06-13 12:33:33 +00:00
|
|
|
.Ed
|
|
|
|
.Pp
|
|
|
|
on host 128.252.200.3:
|
|
|
|
.Bd -literal -offset indent -compact
|
|
|
|
# ifconfig en0 128.252.200.3 netmask 0xffffff00 up
|
2003-08-12 14:20:32 +00:00
|
|
|
# route add -iface 128.252.200.1 -link en0:3.0.0.ca.3.0.c3.50.0.27.10.0.0.a
|
|
|
|
# route add -iface 128.252.200.2 -link en0:3.0.0.cb.1.1.86.a0
|
2003-06-13 12:33:33 +00:00
|
|
|
.Ed
|
|
|
|
.Pp
|
|
|
|
This can also be done in
|
|
|
|
.Xr rc.conf 5 :
|
|
|
|
.Pp
|
|
|
|
on host 128.252.200.1:
|
|
|
|
.Bd -literal -offset indent -compact
|
|
|
|
network_interfaces="lo0 en0"
|
|
|
|
ifconfig_en0="inet 128.252.200.1 netmask 255.255.255.0"
|
|
|
|
static_routes="host2 host3"
|
2003-08-12 14:20:32 +00:00
|
|
|
route_host2="-iface 128.252.200.2 -link en0:3.0.0.c9.0"
|
|
|
|
route_host3="-iface 128.252.200.3 -link en0:3.0.0.ca.3.0.c3.50.0.27.10.0.0.a"
|
2003-06-13 12:33:33 +00:00
|
|
|
.Ed
|
|
|
|
.Pp
|
|
|
|
on host 128.252.200.2:
|
|
|
|
.Bd -literal -offset indent -compact
|
|
|
|
network_interfaces="lo0 en0"
|
|
|
|
ifconfig_en0="inet 128.252.200.2 netmask 255.255.255.0"
|
|
|
|
static_routes="host1 host3"
|
2003-08-12 14:20:32 +00:00
|
|
|
route_host1="-iface 128.252.200.1 -link en0:3.0.0.c9.0"
|
|
|
|
route_host3="-iface 128.252.200.3 -link en0:3.0.0.cb.1.1.86.a0"
|
2003-06-13 12:33:33 +00:00
|
|
|
.Ed
|
|
|
|
.Pp
|
|
|
|
on host 128.252.200.3:
|
|
|
|
.Bd -literal -offset indent -compact
|
|
|
|
network_interfaces="lo0 en0"
|
|
|
|
ifconfig_en0="inet 128.252.200.3 netmask 255.255.255.0"
|
|
|
|
static_routes="host1 host2"
|
2003-08-12 14:20:32 +00:00
|
|
|
route_host1="-iface 128.252.200.1 -link en0:3.0.0.ca.3.0.c3.50.0.27.10.0.0.a"
|
|
|
|
route_host2="-iface 128.252.200.2 -link en0:3.0.0.cb.1.1.86.a0"
|
2003-06-13 12:33:33 +00:00
|
|
|
.Ed
|
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr en 4 ,
|
2003-06-17 16:15:47 +00:00
|
|
|
.Xr hatm 4 ,
|
2003-06-23 14:46:12 +00:00
|
|
|
.Xr fatm 4 ,
|
2003-07-15 12:07:45 +00:00
|
|
|
.Xr patm 4 ,
|
2003-06-13 12:33:33 +00:00
|
|
|
.Xr natm 4
|
|
|
|
.Sh AUTHORS
|
|
|
|
.An Chuck Cranor
|
|
|
|
of Washington University implemented the NATM protocol layer
|
|
|
|
along with the EN ATM driver in 1996 for
|
|
|
|
.Nx .
|