Digital UNIX
PrevAppendix A. Conformance to Internet Host RequirementsNext

Configuring Digital UNIX to Conditionally Comply to the Host Requirements RFCs

The following sections describe how to configure your system to conditionally comply to the specifications described in the Host Requirements RFCs when your system is acting as an Internet host. Under each heading is a description of a must level item with which Digital UNIX does not comply by default. Along with each item is a discussion about why Digital UNIX does not comply, and information about how to configure your system to comply with that item.

Internet LayerDigital UNIX can be configured to comply with all must/must not level requirements for systems acting as Internet hosts.The Internet Engineering Steering Group (IESG) recommended to the IAB (in September, 1991) that the "Requirements for Internet IP Routers" specify the routing protocol Open Shortest Path First (OSPF) as "MUST IMPLEMENT". Digital UNIX contains latent support for OSPF as part of Cornell University's gated daemon. (RFC 1122)

When the IP datagram reassembly timeout expires, the partially reassembled datagram must be discarded and an ICMP Time Exceeded message sent to the source host, if fragment zero has been received (RFC 1122, Section 3.3.2).

Digital UNIX discards the partially reassembled datagram when the reassembly timeout expires. However, by default, Digital UNIX does not generate an ICMP Time Exceeded message.

At the time this host requirement was written, it was believed that a form of path MTU discovery procedure might find this message useful (RFC 1122, Section 3.2.2.4). RFC 1191: Path MTU Discovery, however, does not use this mechanism.

Receiving an ICMP Time Exceeded message may be useful for TCP connections, because TCP is required to act on receipt of ICMP error messages. UDP has no such requirement. While fragmentation is now generally prevented with TCP, this is not the case with UDP. Large UDP messages, for example those generated by NFS, can cause storms of ICMP Time Exceeded messages, if these messages were generated by default.

For these reasons, Digital does not recommend that Digital UNIX be configured to generate ICMP Time Exceeded messages. Digital UNIX records the number of fragments dropped due to reassembly timeout; you can run the netstat −p command to display this number. The following example shows the display for IP of the netstat −p command. Ten fragments were dropped due to reassembly timeout:

% /usr/sbin/netstat -p ip
ip:
1831450 total packets received
0 bad header checksums
0 with size smaller than minimum
0 with data size < data length
0 with header length < data size
0 with data length < header length
3542 fragments received
0 fragments dropped (dup or out of space)
10 fragment dropped after timeout
0 packets forwarded
0 packets not forwardable
0 redirects sent

Configuration Information

To configure the system to send ICMP Time Exceeded on Reassembly messages, set the kernel variable ipsendreastimo to 1. The default for this variable is zero (0).

To set the ipsendreastimo variable, become superuser and patch the kernel disk image using the dbx patch command as follows:

# dbx −k /vmunix
dbx version 11.0.1
Type 'help' for help.
stopped at [thread_block:1403 ,0xfffffc000032d860] \
Source not available
(dbx) patch ipsendreastimo = 1
1
(dbx) quit

Reboot your system with the shutdown -r command to have the change take effect. For more information, see the shutdown(8) reference page.

Transmission Control Protocol (RFC 1122)

The Urgent Data pointer must point to the last octet of the sequence of urgent data (RFC 1122, Section 4.2.2.4). RFC 793: Transmission Control Protocol contains conflicting statements about the octet that is referenced by the urgent pointer in a sequence of urgent TCP data. The first of these statements indicates that the urgent pointer "points to the sequence number of the octet following the urgent data."

RFC 1122, Section 4.2.2.4, however, indicates that the "urgent pointer points to the sequence number of the LAST octet (not LAST + 1) in a sequence of urgent data." This requirement reflects the second, and conflicting, definition of the urgent pointer as described in RFC 793.

BSD has traditionally applied the first definition of the urgent pointer that appears in RFC 793. To maximize interoperability, Digital UNIX uses the BSD default which means that the urgent pointer points to the sequence number of the LAST octet plus one in a sequence of urgent data. This behavior is controlled by the tcp_urgent_42 kernel variable which applies system-wide and therefore affects all TCP connections.

Configuration Information

To configure the system to point to the last octet in a sequence of urgent data, set the kernel variable tcp_urgent_42 to zero (0). The default for this variable is 1.

To set the tcp_urgent_42 variable, become superuser and patch the kernel disk image using the dbx patch command as follows:

# dbx −k /vmunix
dbx version 11.0.1
Type 'help' for help.
stopped at [thread_block:1403 ,0xfffffc000032d860] \
Source not available
(dbx) patch tcp_urgent_42 = 0
0
(dbx) quit

Reboot your system with the shutdown -r command to have the change take effect. For more information, see the shutdown(8) reference page.


PrevHomeNext
The Host Requirements RFCs (RFC 1122 and RFC 1123)UpIndex