Novell IPX Over Various WAN Media (IPXWAN)
The introduction two Novell IPX routers exchange over a WAN link before normal routing starts.
Allen, M., "Novell IPX Over Various WAN Media (IPXWAN)", RFC 1634, DOI 10.17487/RFC1634, May 1994, <https://www.rfc-editor.org/info/rfc1634>.
@misc{rfc1634,
series = {Request for Comments},
number = 1634,
howpublished = {RFC 1634},
publisher = {RFC Editor},
doi = {10.17487/RFC1634},
url = {https://www.rfc-editor.org/info/rfc1634},
author = {M. Allen},
title = {{Novell IPX Over Various WAN Media (IPXWAN)}},
pagetotal = 23,
year = 1994,
month = may,
} RFC text
Contents
Network Working Group M. Allen
Request For Comments: 1634 Novell, Inc.
Obsoletes: 1551, 1362 May 1994
Category: Informational
Novell IPX Over Various WAN Media (IPXWAN)
Status of this Memo
This memo provides information for the Internet community. This memo
does not specify an Internet standard of any kind. Distribution of
this memo is unlimited.
Abstract
This document describes how Novell IPX operates over various WAN
media. Specifically, it describes the common "IPX WAN" protocol
Novell uses to exchange necessary router to router information prior
to exchanging standard IPX routing information and traffic over WAN
datalinks. This document supercedes RFC 1362 and RFC 1551. The
changes from RFC 1551 are to correct a problem in the wording when an
RFC 1362 router talks to an RFC 1551 router and to allow numbers to
be specified in a Router Name.
Table of Contents
1. Introduction ................................................. 2
1.1 Operation Over PPP ........................................... 2
1.2 Operation Over X.25 Switched Virtual Circuits ................ 2
1.3 Operation Over X.25 Permanent Virtual Circuits ............... 3
1.4 Operation Over Frame Relay ................................... 3
1.5 Operation Over Other WAN Media ............................... 3
2. Glossary Of Terms ............................................ 4
3. IPX WAN Protocol Description ................................. 4
3.1 The Initial Negotiation ...................................... 5
3.2 Information Exchange ......................................... 9
3.3 NAK Packets .................................................. 10
4. Information Exchange Packet Formats .......................... 10
4.1 Timer Request Packet ......................................... 12
4.2 Timer Response Packet ........................................ 15
4.3 Information Request Packet ................................... 16
4.4 Information Response Packet .................................. 19
5. Running Unnumbered RIP ....................................... 20
6. Workstation Connectivity ..................................... 20
7. On-demand, Statically Routed Links ........................... 20
8. References ................................................... 22
9. Security Considerations ...................................... 22
10. Author's Address.............................................. 23
1. Introduction
This document describes how Novell IPX operates over various WAN
media. It is strongly motivated by a desire for IPX to treat ALL wide
area links in the same manner. Sections 3 and 4 describe this common
"IPX WAN" protocol.
The IPX WAN protocol operation begins immediately after link
establishment. While IPX is a connectionless datagram protocol, WANs
are often connection-oriented. Different WANs have different methods
of link establishment. The subsections of section 1 of this document
describe what link establishment means to IPX for different media.
They also describe other WAN-media-dependent aspects of IPX
operation, such as protocol identification, frame encapsulation, and
link tear down.
1.1 Operation Over PPP
IPX uses PPP [1] when operating over point-to-point synchronous and
asynchronous networks.
With PPP, link establishment means the IPX NCP [4] reaches the Open
state. NetWare IPX will negotiate down to a null set of NCP options,
and uses normal frame encapsulation as defined by PPP. The IPXWAN
protocol MUST NOT occur until the IPX NCP reaches the Open state.
Options negotiated by the IPXWAN protocol MUST supercede any options
negotiated by the IPXCP.
PPP allows either side of a connection to stop forwarding IPX if one
end sends an IPXCP or an LCP Terminate-Request. When a router detects
this, it will immediately reflect the lost connectivity in its
routing information database instead of naturally aging it out.
1.2 Operation over X.25 Switched Virtual Circuits
With X.25, link establishment means successfully opening an X.25
virtual circuit. As specified in RFC-1356, "Multiprotocol
Interconnect on X.25 and ISDN in the Packet Mode" [2], the protocol
identifier 0x800000008137 is used in the X.25 Call User Data field of
the Call Request frame, and indicates that the virtual circuit will
be devoted to IPX.
Furthermore, each IPX packet is encapsulated directly in X.25 data
frame sequences without additional framing.
Either side of the virtual circuit may close it, thereby tearing down
the IPX link. When a router detects this, it will immediately reflect
the lost connectivity in its routing information database instead of
naturally aging it out.
1.3 Operation over X.25 Permanent Virtual Circuits
The nature of X.25 PVC's is that no call request is made. When the
router is informed that X.25 Layer 2 is up, the router should assume
that link establishment is complete.
Each IPX packet is encapsulated in an X.25 data frame sequence
without additional framing. Novell IPX assumes a particular X.25
permanent circuit is devoted to the use of IPX.
If a router receives a layer 2 error condition (e.g., X.25 Restart),
it should reflect lost connectivity for the permanent circuits in its
routing information database and re-perform the necessary steps to
obtain a full IPX connection.
1.4 Operation over Frame Relay Permanent Virtual Circuits
To determine when a permanent virtual circuit (PVC) has become active
or inactive, the router interacts periodically with either a private
Frame Relay switch or a public Frame Relay network. The method used
depends on the switch or service provider. Some support [7], section
6l others support [3], Annex D. Novell supports both methods.
When a router is restarted, IPXWAN exchanges over active Frame Relay
PVCs (that is, PVCs that have remained active before and after
restart) can begin immediately.
Each IPX packet is encapsulated in a Frame Relay frame sequence as
defined in [3] without additional framing.
When a router detects that a Frame Relay PVC has transitioned from an
inactive to an active state, link establishment is considered
complete and IPXWAN exchange over this newly activated link begins.
When an active PVC becomes inactive, the router reflects the lost
connectivity in its routing information database.
1.5 Operation over other WAN media
Additional WAN media will be added here as specifications are
developed.
2. Glossary Of Terms
Primary Network Number:
Every IPX WAN router has a "primary network number". This is an
IPX network number unique to the entire internet. This number
will be a permanently assigned network number for the router.
Those readers familiar with NetWare 3.x servers should realize
that this is the "Internal" network number.
Router Name:
Every IPX WAN router must have a "Router Name". This is a symbolic
name given to the router. Its purpose is to allow routers to know
who they are connected to after link establishment - particularly
for network management purposes. A symbolic name conveys more
information to an operator than a set of numbers. The symbolic
name should be between 1 and 47 characters in length containing
the characters 'A' through 'Z', '0' through '9', underscore (_),
hyphen (-) and "at" sign (@). The string of characters should be
followed by a null character (byte of zero) and padded to 48
characters using the null character. Those readers familiar with
NetWare 3.x servers should realize that the file server name is
the Router Name.
For workstation (client) connectivity, it is useful if the client
connection software is configured with a symbolic name reflecting
the name of the client. This allows a router management utility to
determine which connection connects with which client/router. If
no name is configured, it is recommended that a default string
such as "DIAL-IN-CLIENT" is used.
3. IPX WAN Protocol Description
After the underlying data link connection is established as described
in the preceding media dependant description, the IPXWAN protocol is
activated to exchange identities and determine certain operational
charactaristics of the link.
There are two steps in the IPXWAN operation:
- Negotiating master/slave role and choice of routing protocol.
The master/slave roles persist for the IPXWAN exchanges only;
- Information exchange of final router configuration.
After these steps are concluded, transmission of IPX routing packets
begins - using the routing protocol negotiated - as well as
transmission of IPX data traffic.
3.1 The Initial Negotiation
The first exchange of packets decides the master/slave roles and the
routing protocol to be used on the link and gauges the link delay for
the routing metrics. The initial negotiation is the same for all
protocols.
+---------------+ +---------------+
| Timer Request | | Timer Request |
+---------------+ +---------------+
\---->\ /<----/
\ /
x
/ \
/\ /<----/ \---->\ /\
/ \ / \
/ \ / \
/ My primary \ / My primary \
/ network address\ / network address\
\ is larger / \ is smaller /
\ / \ /
\ / \ /
\ / \ /
\/ \/
MASTER SLAVE
+----------------+
<----------------+ Timer Response +
+----------------+
After link establishment, both sides of the link send Timer Request
packets and start a timer waiting for a Timer Response. These Timer
Requests are sent every 20 seconds until a response is received or a
descision is made that the remote node is not responding. This could
be after a predefined time (min. 60 seconds) or a number of retries
(e.g., 16).
In composing the Timer Request, the router or workstation takes into
consideration:
- Which types of routing protocols it supports;
- Whether it is prepared to assign a network address to the link;
- For workstations, whether they require the ability to specify
their network/NIC address on a reconnect;
- Whether it is able to support IPX header compression [6].
For each routing protocol supported, place an option in the Timer
Request packet. The Routing Type options should be added in the
originator's order of preference with the most preferred option
first.
Some of the newer (or modified) IPX routing protocols do not have the
requirement to allocate a network number on a WAN link. This type of
routing protocol has the advantage of potentially simpler
configuration as no network number pools are necessary for WAN links.
However, these router implementations may still wish to interoperate
with the older IPXWAN implementations which are able to allocate
network numbers for the WAN link. In this case, the following method
is used to force the older implementation to become the link master.
It should be noted that a router implementation capable of supporting
workstation dial-in MUST be able to supply AT LEAST ONE network
number on which the workstation can reside.
If the router is prepared to assign an IPX network number to the
link, it sends its primary network number in the Timer Request
WNodeID field, and omits the Extended Node ID option. On the other
hand, if the router is NOT prepared to assign an IPX network number
to the link, it sets the Timer Request WNodeID field to zero, and
includes its primary network number in an Extended Node ID option.
Workstations follow a similar, but slightly different set of rules
for setting the WNodeID field. If this is the first time the work-
station is connecting to the router, the workstation will set the
WNodeID to zero indicating the router should be the link master and
allocate a network number for the new link. In this case, the work-
station will respond to the router's Timer Request and acknowledge
only the Workstation Routing Type option. Note that a workstation
does NOT include an Extended Node ID option in it's timer request.
If the workstation is reconnecting a link after an earlier inactivity
disconnect, it is necessary for the workstation to be able to specify
its network, NIC address and "Router Name" field (so that file server
connections can be maintained after the reconnect). In this case,
the workstation will set its WNodeID field to FFFFFFFFh forcing
itself to be the link master. In this case, the router will respond
to the workstation's Timer Request with only the Workstation Router
Type acknowledged.
Further packets in the IPXWAN exchange MUST use the correct WNodeID
(workstations will always use zero).
On receiving a Timer Request packet, a router determines its role -
master or slave - for the remainder of the IPXWAN exchanges. The
master role does not denote special privileges, it merely means that
the router is the requestor in the ensuing request/response
exchanges. The descision is made as follows:
a) If the WNodeID field is zero in the sent and the received Timer
Requests
i) If both Timer Requests include an Extended Node ID, the
router with the higher numeric value of this field is the
Master. If the two Extended Node ID fields are equal, a
configuration error has occurred. After reporting the error,
the router issues a disconnect on the underlying data-link
connection. Manual intervention is needed to correct the
error condition.
ii) If only one Timer Request includes the Extended Node ID,
the router sending it is the Master.
iii) If neither Timer Request includes the Extended Node ID, a
connection cannot be established. The data-link circuit is
cleared by the system that initiated it.
b) If either the sent or received Timer Request (or both) contains
a nonzero WNodeID field, the router with the higher WNodeID is
the Master.
c) If the two WNodeID fields are equal and nonzero, a
configuration error has occurred. After reporting the error,
the router issues a disconnect on the underlying data-link
connection. Manual intervention is needed to correct the error
condition.
Note: The Primary Network Number for a workstation when
determining master/slave roles depends on whether the workstation
requires itself to be the master of slave. It should compare the
received WNodeID to that sent in it's own Timer Request.
The numeric comparisons are done by considering each byte of the
WNodeID or Extended Node ID fields as an unsigned integer, and the
first byte as most significant.
The link slave responds to the Timer Request with a Timer Response.
To do so, each option in the received Timer Request is parsed. If an
option is not supported (or recognized), that option is rejected by
changing the WAccept field to "NO" for that option.
When selecting the router type which will be used on the link, the
first option in the Timer Request which can be supported should be
accepted. All other router types should have the WAccept field set to
"NO". A router MUST NOT accept workstation connectivity to a node
which is another router.
Note: It is permitted for a router to support a numbered routing
type, but not be able to assign the network number. In this case,
that routing type can be selected only if the other router supports
it and is able to assign the network number. This can be determined
by the value of the received WNodeID field. If the router is unable
to assign a network number to the link, it MUST support Unnumbered
RIP and include this option in the Timer Requests.
If a router wishes to provide WAN Client access without supporting
other WAN routing types, a potential problem arises since a router
and WAN client would both just be sending a single Routing Type
option indicating the use of WAN Client. The IPXWAN specification
does not allow a WAN workstation to connect to another WAN
workstation. The method for detecting this is that the sent and
received Timer Requests have a single Routing Type defined of WAN
Client. To overcome this problem, IPXWAN defines that a router MUST
NOT send a single Routing Type if that type is just WAN Client. The
router MUST additionally include one (or more) of the defined routing
types (like WAN RIP) with the WAccept option set to NO. This is so
that a workstation may detect that this is actually a router sending
the Timer Request and not just another workstation trying to call a
workstation. The extra option will serve to be a counted Routing Type
that will be ignored. If a workstation detects it is connecting to
another workstation, it should disconnect the link.
Note that a router supporting a workstation will need to be able to
supply AT LEAST one network number for workstations. All dial-in
workstations could share the same network, and be assigned unique
node numbers by the router, or each workstation could be assigned a
different network number. This is a router specific implementation
detail. Use of a single network for all clients is prefered, however,
this does involve extra work by the router when dealing with
broadcast frames. When the router is the link master and allocating
NIC addresses on a single network,it should ALWAYS use a unique value
- by incrementing the NIC address for each client connection. This
allows a workstation which is reconnecting the ability to specify his
old network and NIC address. It is unlikely with a 6 byte NIC
address, that there will be wrap-around in the numbers that would
cause a problem. Router Node Number allocation should follow a few
simple rules. The six byte NIC address SHOULD have the first byte set
to 2.
Byte # +--1----2----3----4----5----6-+
| 02 | XX | XX | XX | XX | XX |
+-----------------------------+
In an IEEE address space, this would represent a non-multicast,
locally defined address. Node numbers of zero or -1 are not allowed.
If a slave determines it cannot support any of the supplied routing
protocols in the received Timer Request, it MUST issue a disconnect
on the connection being established. The master of the link
(determined when a Timer Response packet is received) is responsible
for defining the network number that is to be used as a common
network number for the new WAN link, and for calculating the RIP
transport time that will be advertized to other RIP routers for the
new link. This is calculated by stopping the timer which was started
when a Timer Request was initiated and applying the algorithm in
section 4.3.
3.2 Information Exchange
After exchanging Timer Request packets, the link master and slave
have been determined, and the Routing Protocol to be used on the link
is negotiated. The link master is now responsible for sending an
Information Request packet to the slave specifying the network number
to be used on the new link (zero for unnumbered RIP and On Demand),
the calculated transport time to be used in the routing metric, the
Router Name (for management purposes), and for a workstation
connection, the NIC address the workstation will be adopting. The NIC
address option is a separate option added in the Information
Request/Response for workstation connectivity. It is NOT present for
router to router connections.
If a router receives an inappropriate Information Request from a
workstation trying to set the common network number and NIC address
the router MUST overwrite these values with preferred values. When
the workstation receives the Information Response, it MUST note the
new values. If the workstation is unable to adjust to the new values,
it MUST issue a disconnect on the link. If a workstation is the link
master (i.e., it is reconnecting), the router is additionally
responsible for ensuring the "Router Name" field matches that of the
original connection. If the values differ, the call should be
disconnected.
If a router detects an error for which no suitable protocol response
exists (e.g., unable to allocate a network number), the link should
be terminated according to the relevant media specification.
Under certain circumstances, particularly on X.25 permanent circuits,
it is only possible to detect the remote router went away when it
comes back up again. In this case, one side of the link receives a
Timer Request packet when IPX is in a fully connected state. The
side receiving the Timer Request MUST realize that a problem
occurred, and revert to the IPX link establishment phase.
Furthermore, the routing information learned from this connection
should be immediately discarded.
When Unnumbered RIP, On-demand or Workstation options are negotiated,
Information Request packets are repeated every 20 seconds until a
response is received. For the Numbered RIP links, the Information
Request is NOT resent. Instead, the link is disconnected after a
suitable delay (min. 60 seconds) - this requirement ensures
interoperabilty with earlier versions of IPXWAN. When Information
Requests are repeated, they should continue for a preconfigured time
(min. 60 seconds) or a preconfigured number of retries (e.g., 16).
Each retry uses an incremented sequence number.
3.3 NAK Packets
The IPXWAN protocol uses a NAK packet to indicate the received IPXWAN
packet was not acceptable. A NAK packet is an exact copy of the
received packet with the WPacketType field set to NAK. There are two
anticipated uses of this packet.
- The received WPacketType is invalid or not recognized;
- A badly formed IPXWAN packet is received.
Returning a NAK packet allows the sender a chance to work out what
was wrong. If the sender was unable to determine the problem, the
call can then be disconnected.
The value of the NAK WPacketType is FFh.
4. Information Exchange Packet Formats
All IPX WAN protocol exchanges utilize the standard Novell IPX packet
format. The packets use the IPX defined packet type 04 defining a
Packet Exchange Packet. The socket number 0x9004 is a Novell reserved
socket number for exclusive use with IPX WAN protocol exchange. IPX
defines that a network number of zero (0) is interpreted as being a
local network of unknown number that requires no routing. This
feature is of use to us in transferring these packets before the
common network number is exchanged. Some routers need to know a "Node
Number" (or MAC address) for each node on a link. Node numbers will
be formed from the "WNode ID" field. The node number will be the 4
bytes of WNode ID followed by 2 bytes of zero. For a workstation, the
node number will be explicitly assigned by the router and notified to
the workstation in the Information Request packet.
Router Type number assignment. Other vendors IPX routing protocols
can make use of the IPXWAN protocol definition by obtaining Router
Types from Novell. This document will then include the new Router
Types (with the references to vendor protocol description documents).
Current Routing Types are:
00 Numbered RIP/SAP
01 NLSP (no RIP/SAP - defined in [8])
02 Unnumbered RIP/SAP
03 On Demand, static routing (no RIP/SAP or NLSP)
04 Workstation (no RIP/SAP)
05-FF Currently undefined
WOption Number assignment. These numbers only need to be assigned
from Novell for the "Timer Request" and "Timer Response" packets.
Packet Types also need to be assigned by Novell. However, the options
within these packets are dependant on the "Router Type" negotiated.
WOption numbers in these packets are then defined by the vendor
defining the Routing Type. The same packet format should still be
maintained.
Router Type 01 will not be described in this document since it
involves knowledge of the NLSP protocol to implement. Please refer to
[8] for a complete specification of these NLSP IPXWAN exchanges and
the NLSP protocol.
4.1 Timer Request Packet
+---------------------------------------------------------------+
| Checksum | FF FF | Always FFFF |
| Packet Length | 02 40 | Max IPX size (576 bytes|
| | | Hi Lo order) |
| Trans Control | 00 | Hops traversed |
| Packet Type | 04 | Packet Exchange Packet |
| Dest Net # | 00 00 00 00 | Local Network |
| Dest Node # | FF FF FF FF FF FF | Broadcast |
| Dest Socket # | 90 04 | Reserved WAN socket |
| Source Net # | 00 00 00 00 | Local Network |
| Source Node # | 00 00 00 00 00 00 | Set to zero |
| Source Socket # | 90 04 | Reserved WAN socket |
|------------------+-------------------+------------------------|
| WIdentifier | 57 41 53 4D | Confidence identifier |
| WPacket Type | 00 | Timer Request |
| WNode ID | xx xx xx xx | Primary Net # of |
| | | sending router |
| | | (Hi Lo order) |
| WSequence # | xx | Sequence start at 0 |
| WNum Options | xx | Number of options |
|------------------+-------------------+------------------------|
| WOption Number | xx | Option Identifier |
| WAccept Option | xx | 0=No,1=Yes,3=Not Applic|
| WOption Data Len | xx xx | Number of following |
| | | option bytes (Hi Lo) |
| WOption Data | nn | Option specific data |
+---------------------------------------------------------------+
Routing Type Option:
One or more of the following router type options should be included
in a Timer Request packet. A router should ALWAYS include Routing
Type zero (0) if full interoperability is required with an older
implementation. The router types MUST be included in the senders
order of preference. If a router receives a Timer Response with more
than one Router Type having WAccept set to Yes, the link MUST be
disconnected.
+---------------------------------------------------------------+
| WOption Number | 00 | Define Routing Type |
| WAccept Option | 01 | 0=No,1=Yes,3=Not Applic|
| WOption Data Len | 00 01 | Option length (Hi Lo) |
| WOption Data | 00 | IPX RIP/SAP Routing |
+---------------------------------------------------------------+
+---------------------------------------------------------------+
| WOption Number | 00 | Define Routing Type |
| WAccept Option | 01 | 0=No,1=Yes,3=Not Applic|
| WOption Data Len | 00 01 | Option length (Hi Lo) |
| WOption Data | 01 | NLSP |
+---------------------------------------------------------------+
+---------------------------------------------------------------+
| WOption Number | 00 | Define Routing Type |
| WAccept Option | 01 | 0=No,1=Yes,3=Not Applic|
| WOption Data Len | 00 01 | Option length (Hi Lo) |
| WOption Data | 02 | Unnumbered RIP/SAP |
+---------------------------------------------------------------+
+---------------------------------------------------------------+
| WOption Number | 00 | Define Routing Type |
| WAccept Option | 01 | 0=No,1=Yes,3=Not Applic|
| WOption Data Len | 00 01 | Option length (Hi Lo) |
| WOption Data | 03 | On-demand, static Rting|
+---------------------------------------------------------------+
+---------------------------------------------------------------+
| WOption Number | 00 | Define Routing Type |
| WAccept Option | 01 | 0=No,1=Yes,3=Not Applic|
| WOption Data Len | 00 01 | Option length (Hi Lo) |
| WOption Data | 04 | Client - No RIP/SAP |
| | | except on request |
+---------------------------------------------------------------+
Extended Node ID Option:
The extended node ID should only be included if the WNodeID field is
set to zero AND the node constructing the packet is a router. Note
that an older version of IPXWAN will just reject this option and
automatically become the link master as the WNodeID is zero.
+---------------------------------------------------------------+
| WOption Number | 04 | Extended Node ID |
| WAccept Option | 01 | 0=No,1=Yes,3=Not Applic|
| WOption Data Len | 00 04 | Pad data length (Hi Lo)|
| WOption Data | xx xx xx xx | Real primary network # |
| | | of this router (Hi-Lo) |
+---------------------------------------------------------------+
Header Compression Option:
Although more than one header compression option may be specified in
a Timer Request packet, it is important that a MAXIMUM of ONE header
compression option is accepted. If an implementation receives a
Timer Response with more than one header compression option with the
accept option set to Yes, the link MUST be disconnected. [Ref 6]
defines the full Telebit Header Compression method.
+---------------------------------------------------------------+
| WOption Number | 80 | Header Compression |
| WAccept Option | 01 | 0=No,1=Yes,3=Not Applic|
| WOption Data Len | 00 03 | Variable - at least 1 |
| WOption Data | 00 | 0 = Telebit Hdr Compr. |
| | xx | Compression Options |
| | xx | Compression Slots |
+---------------------------------------------------------------+
PAD Option:
The PAD option is used to fill the Timer Request up to the 576 byte
limit. This field will be of variable length depending on the number
of other options in the packet. This option will normally be the
last entry in the packet. Its sole purpose is to fill the IPX
packet to be 576 bytes. The pad option data should be filled with a
selection of totally random numbers to avoid compression modems or
PPP data compression from destroying the link delay calculation.
Note that this is different from the original RFC 1362
specification. This should not affect implementations.
Implementations should not attempt to verify the contents of a PAD
option.
+---------------------------------------------------------------+
| WOption Number | FF | Pad option |
| WAccept Option | 01 | 0=No,1=Yes,3=Not Applic|
| WOption Data Len | xx xx | Pad data length (Hi Lo)|
| | | (enough to fill packet)|
| WOption Data | Random numbers | |
+---------------------------------------------------------------+
Note:
Timer Request packets will always be 576 bytes. However,
there should be no assumption made about the number of
options specified in this packet.
After link establishment, Timer Request packets are sent by both
sides of the link. Each end starts their sequence number at zero.
Subsequent retries (every 20 seconds) will increment the value of
this sequence number. Only a Timer Response packet with a sequence
number matching the last sent sequence number will be acted upon.
As mentioned earlier, the WNodeID field may be set to zero for a
router if it is unable to provide a network number for the link. If
a router ONLY supports the Numbered RIP/SAP option, it MUST be
capable of proving a network number for a WAN link.
Packets received on the reserved socket number not having the
WIdentifier set to the hexadecimal values noted above should be
discarded.
4.2 Timer Response Packet
+---------------------------------------------------------------+
| Checksum | FF FF | Always FFFF |
| Packet Length | 02 40 | Max IPX size (576 bytes|
| | | Hi Lo order) |
| Trans Control | 00 | Hops traversed |
| Packet Type | 04 | Packet Exchange Packet |
| Dest Net # | 00 00 00 00 | Local Network |
| Dest Node # | FF FF FF FF FF FF | Broadcast |
| Dest Socket # | 90 04 | Reserved WAN socket |
| Source Net # | 00 00 00 00 | Local Network |
| Source Node # | 00 00 00 00 00 00 | Set to zero |
| Source Socket # | 90 04 | Reserved WAN socket |
|------------------+-------------------+------------------------|
| WIdentifier | 57 41 53 4D | Confidence identifier |
| WPacket Type | 01 | Timer Response |
| WNode ID | xx xx xx xx | Primary Net # of |
| | | sending router |
| | | (Hi Lo order) |
| WSequence # | xx | Same as Timer Request |
| | | received |
| WNum Options | xx | Number of options |
|------------------+-------------------+------------------------|
| WOption Number | xx | Option Identifier |
| WAccept Option | xx | 0=No,1=Yes,3=Not Applic|
| WOption Data Len | xx xx | Number of following |
| | | option bytes (Hi Lo) |
| WOption Data | nn | Option specific data |
+---------------------------------------------------------------+
The options contained within this packet are as described in section
4.1 Any unknown options or not supported options within the Timer
Request MUST have the WAccept Option set to NO in the Timer Response.
If the Timer Request packet contained more than one Router Type
option and the "Slave" supports all the options, the "Slave" MUST set
the WAccept Option to YES on the FIRST Router Type supported and NO
to ALL other Router Types. This is the Router Type which is to be
adopted by both ends of the link. Information exchanges will then
proceed by the link master based on the accepted Router Type.
This packet must contain the same sequence number as the received
Timer Request. This packet should ONLY be sent by the router or
workstation determining themselves to be the "Slave" of the link.
(Workstations are ALWAYS the link slave).
Routers MUST set the WNodeID to their correct value when responding
with the Timer Response. A value of zero must NOT be used.
4.3 Information Request Packet
+---------------------------------------------------------------+
| Checksum | FF FF | Always FFFF |
| Packet Length | 00 63 | Size of header+data |
| | | (Hi Lo order) |
| Trans Control | 00 | Hops traversed |
| Packet Type | 04 | Packet Exchange Packet |
| Dest Net # | 00 00 00 00 | Local Network |
| Dest Node # | FF FF FF FF FF FF | Broadcast |
| Dest Socket # | 90 04 | Reserved WAN socket |
| Source Net # | 00 00 00 00 | Local Network |
| Source Node # | 00 00 00 00 00 00 | Set to zero |
| Source Socket # | 90 04 | Reserved WAN socket |
|------------------+-------------------+------------------------|
| WIdentifier | 57 41 53 4D | Confidence identifier |
| WPacket Type | 02 | Information Request |
| WNode ID | xx xx xx xx | Primary Net # of |
| | | sending router |
| | | (Hi Lo order) |
| WSequence # | 00 | Sequence start at 0 |
| WNum Options | 01 | 1 Option to follow |
| WOption Number | 01 | Define IPX RIP/SAP |
| | | info exchange |
| WAccept Option | 01 | 0=No,1=Yes,3=Not Applic|
| WOption Data Len | 00 36 | Option length (Hi Lo) |
| WOption Data | | |
| Link Delay | xx xx | Hi Lo link delay in |
| | | milli seconds (see |
| | | below for calculation) |
| Common Net # | xx xx xx xx | Hi Lo Common Network # |
| Router Name | xx (x 48 decimal) | Router name - as defned|
| | | in section 2. |
+---------------------------------------------------------------+
Routers MUST set the WNodeID to their correct value when sending an
Information Request. A value of zero must NOT be used.
A workstation should replace the Router Name with the configured
name, or a constant descriptor string as described in section 2.
For a Workstation Information Request, an extra option is added which
specifies the NIC address for the workstation. In this case, the
number of options will be set to two (2).
+---------------------------------------------------------------+
| WOption Number | 05 | Define NIC Address |
| WAccept Option | 01 | 0=No,1=Yes,3=Not Applic|
| WOption Data Len | 00 06 | Option length (Hi Lo) |
| WOption Data | 02 xx xx xx xx xx | NIC Address for W/S |
+---------------------------------------------------------------+
Routers or workstations should not refuse to use a NIC address having
a first byte with a value other than 02.
Calculation of link delay is performed as follows:
// Start_time is a time stamp when Timer Request sent out
// End_time is a time stamp when a Timer Response is
// received.
link_delay = end_time - start_time; // 1/18th second
if (link_delay < 1)
{
link_delay = 1;
}/*IF*/
// We are on a slow net, so add some biasing to help stop
// multiple workstation sessions timing out on the link
link_delay *= 6; /* Add the biasing for multiple sessions */
link_delay *= 55; /* Convert link delay to milliseconds */
If a higher resolution timer is available, better results may be
obtained using the following algorithm:
conversion_factor = number of timer units in 1/18th second;
link_delay = ((end_time - start_time) * 6) / conversion_factor;
if (link_delay == 0)
{
link_delay = 1;
}/*IF*/
link_delay *= 55; /* Convert link delay to milliseconds */
The "Link Delay" is used as the network transport time when
advertized in the IPX RIP packet tuple for the network entry "Common
Net #". For a consistent network, a common link delay is required at
both ends of the link and is calculated by the link "Master". Link
Delay is specified in milli seconds.
The Common Net # is supplied by the link "Master". This number must
be unique in the connected internetwork. Each WAN call requires a
separate number. If the negotiated Router Type was Unnumbered RIP,
On-demand, or NLSP, the specified Common Net # will be zero.
This packet should contain a sequence number starting at zero. This
packet should ONLY be sent by the router or workstation determining
themselves to be the "Slave" of the link.
If extra options are included in this packet, they should be silently
discarded.If the information option is missing, the link MUST be
disconnected.
4.4 Information Response Packet
+---------------------------------------------------------------+
| Checksum | FF FF | Always FFFF |
| Packet Length | 00 63 | Size of header+data |
| | | (Hi Lo Order) |
| Trans Control | 00 | Hops traversed |
| Packet Type | 04 | Packet Exchange Packet |
| Dest Net # | 00 00 00 00 | Local Network |
| Dest Node # | FF FF FF FF FF FF | Broadcast |
| Dest Socket # | 90 04 | Reserved WAN socket |
| Source Net # | 00 00 00 00 | Local Network |
| Source Node # | 00 00 00 00 00 00 | Set to zero |
| Source Socket # | 90 04 | Reserved WAN socket |
|------------------+-------------------+------------------------|
| WIdentifier | 57 41 53 4D | Confidence identifier |
| WPacket Type | 03 | Information Response |
| WNode ID | xx xx xx xx | Primary Net # of |
| | | sending router |
| | | (Hi Lo order) |
| WSequence # | 00 | Same as Info Request |
| WNum Options | 01 | 1 Option to follow |
| WOption Number | 01 | Define IPX RIP/SAP |
| | | info exchange |
| WAccept Option | 01 | 0=No,1=Yes,3=Not Applic|
| WOption Data Len | 00 36 | Option length (Hi Lo) |
| WOption Data | | |
| Link Delay | xx xx | Hi Lo link delay (as |
| | | received in Info Requ) |
| Common Net # | xx xx xx xx | Hi Lo Common Network # |
| | | (as received in Info |
| | | request) |
| Router Name | xx (x 48 decimal) | Router name - as defned|
| | | in section 2. |
+---------------------------------------------------------------+
The responses contained within this packet are as described in
section 4.3.
A link slave will additionally respond with the received NIC address
option as a confirmation of receipt. A workstation should replace the
Router Name with the configured name, or a constant descriptor string
as described in section 2. If the Information Request contained an
inappropriate Common Net # or NIC address, the Information Response
may set new values. The receiver of the Information Response is
responsible for checking on the value and terminating the connection
if the new values cannot be used.
Routers MUST set the WNodeID to their correct value when sending an
Information Response. A value of zero must NOT be used.
5. Running Unnumbered RIP
Unnumbered RIP refers to the case where two WAN routers are
communicating using the RIP protocol across a link with NO physical
IPX network address. The premise for this ability is that there is no
need to address a packet to anything on that WAN link. RIP and SAP
run in exactly the same way as before, except the source and
destination network numbers should be set to zero.
The advantage to running unnumbered RIP links is that it is not
necessary to allocate/configure a pool of usable IPX network numbers
which can be used on the WAN links. The other advantage is that when
there is a large number of WAN links, it is not necessary to flood
the network with an unnecessary set of extra RIP information.
6. Workstation Connectivity
Workstations MUST reside on a network and have a unique NIC address
on that network to be individually addressable. However, workstations
do not need to periodically receive RIP and SAP broadcasts as they
play no part in the routing process. This allows routers to reduce
background traffic on the workstation link by not sending any
periodic RIP and SAP data. Note that it will not cause a problem if
the RIP and SAP is sent. It will just slow down the workstation
access times.
RIP and SAP information should ONLY be sent if the workstation makes
a specific request for information - like a service or route request.
It should also be noted that if multiple workstations are attached to
a single WAN workstation network (per router), broadcasts on that
network - whether originated from a workstation or the router - MUST
reach ALL other workstations. This will involve the router
duplicating the packet to all WAN workstation connections.
7. On-demand, Statically Routed Links
On-demand, Static Routing serves two purposes. The "on-demand" part
means that a router initiates communication to a destination only
when there is data to be forwarded to that destination. "Inititating
comunication" includes making a datalink call (where necessary) and
performing the IPXWAN exchange. A transient connection is closed
after a period of inactivity.
The "static routing" part means that no routing information is sent
over the link - no RIP, no SAP, and no NLSP. Instead, the router at
each end is configured with the routes and services accessible
through the link.
With on-demand, static routing, the called router must be able to
identify the calling router so that statically configured routes and
services can be attached to that connection. For example, with X.25
switched virtual circuits, the calling DTE address can be used; with
PPP, the PPP authentication can be used; after IPXWAN has completed,
the "Router Name" can be used; with a persistent datalink connection,
the physical port identifier or a permanent virtual circuit
identifier can be used. The choice of identifier is an implementation
decision. Whatever value the called router uses is called a Remote
System Identifier, or RSI. For PPP links, Novell uses PPP PAP or CHAP
authentication to determine the caller.
A router implementing on-demand, static routing must maintain a
database of RSIs, and lists describing the network numbers and
services reachable through each RSI. These lists determine the
reachability information it transmits to other routers in a routing
area. Other routers treat each on-demand, static routing link as
though it were permanently available.
The on-demand exchange has a slight variation on the IPXWAN protocol.
The differences are as follows.
In the Timer Request, the calling router offers only the "On-demand,
static routing" Routing Type. If the called router is capable of On-
demand static routing, it offers "On-demand, static routing" in the
Timer Request, along with any additional routing types it is willing
to support on the link. The Master/Slave election and choice of
routing type proceeds as described previously. If the Slave detects a
mismatch in routing types, it disconnects the link.
For a persistent datalink (like X.25 PVCs), there may be no
descerable "link establishemnt" event. For such media, arrival of a
Timer Request plays the role of detecting link establishment.
As with Unnumbered RIP, there is no network number assigned to the
link. NLSP Packets are not sent on the link. Moreover, periodic RIP
and SAP packets are not sent on the link. However, a router must
respond to RIP and SAP queries received on the link.
8. References
[1] Simpson, W., Editor, "The Point-to-Point Protocol (PPP) for the
Transmission of Multi-protocol Datagrams over Point-to-Point
Links", RFC 1548, Daydreamer, December 1993.
[2] Malis, A., Robinson, D., and R. Ullman, "Multiprotocol
Interconnect on X.25 and ISDN in the Packet Mode", RFC 1356,
August 1992.
[3] Bradley, T., Brown, C., and A. Malis, "Multiprotocol Interconnect
over Frame Relay", RFC 1490, Wellfleet Communications, Inc.,
Ascom Timeplex, Inc., July 1993.
[4] Simpson, W., "The PPP Internetwork Packet Exchange Control
Protocol (IPXCP)", RFC 1552, Daydreamer, December 1993.
[5] Novell IPX Router Specification. Novell Part Number 107-000029-
001. This document may be retrieved via Anonymous FTP to SJF-LWP
(130.57.11.140) under /sys/ftpguest/dev_docs/ipx_rtr/ipxrtr.zip
[6] Mathur, S., and M. Lewis, "Compressing IPX Headers Over WAN Media
(CIPX)", RFC 1553, Telebit Corporation, December 1993.
[7] ANSI, "Integrated Services Digital Network (ISDN) - Digital
Subscriber Signalling System Number 1 (DSS1) - Signalling
Specification for Frame Relay", ANSI T1.617-1991, June 1991.
[8] Novell NetWare Link Services Protocol (NLSP) Specification.
Novell part number 100-001708-002. This document may be retrieved
via Anonymous FTP to SJF-LWP (130.57.11.140) under
/sys/ftpguest/dev_docs/ipx_rtr/nlsp.zip.
9. Security Considerations
Security issues are not discussed in this memo.
10. Author's Address
Michael Allen
Novell, Inc.
2180 Fortune Drive
San Jose, CA 95131
EMail: mallen@novell.com
The working group can be contacted via the current chair:
Fred Baker
Advanced Computer Communications
315 Bollay Drive
Santa Barbara, California, 93111
EMail: fbaker@acc.com
ISO Plain Language
On this page
§1Why IPX Needs a WAN Handshake
The document describes how Novell IPX operates over various wide area network media. It is strongly motivated by a desire for IPX to treat all wide area links in the same manner, and Sections 3 and 4 describe the common "IPX WAN" protocol that results.
IPXWAN begins immediately after link establishment. IPX itself is a connectionless datagram protocol, but WANs are often connection-oriented, and different WANs establish links in different ways. The subsections of Section 1 describe what link establishment means for IPX on each medium, along with the other media-dependent aspects such as protocol identification, frame encapsulation and link tear-down.
Over PPP, used on point-to-point synchronous and asynchronous networks, link establishment means the IPX NCP reaches the Open state. NetWare IPX negotiates down to an empty set of NCP options and uses normal PPP frame encapsulation, and IPXWAN must not occur until the NCP reaches the Open state. Options negotiated by IPXWAN override any options negotiated by the IPXCP. Either side can stop forwarding IPX by sending an IPXCP or LCP Terminate-Request, and a router that detects this reflects the lost connectivity in its routing information database straight away rather than waiting for it to age out.
Over X.25 switched virtual circuits, link establishment means opening the virtual circuit successfully. The protocol identifier 0x800000008137 is used in the X.25 Call User Data field of the Call Request frame, indicating that the circuit is devoted to IPX. Each IPX packet is encapsulated directly in X.25 data frame sequences with no extra framing, and either side may close the circuit, which tears down the IPX link.
Over X.25 permanent virtual circuits, no call request is made, so the router assumes link establishment is complete when it is told that X.25 Layer 2 is up. If the router receives a Layer 2 error condition such as an X.25 Restart, it should reflect the lost connectivity for its permanent circuits and repeat the steps needed for a full IPX connection.
Over Frame Relay permanent virtual circuits, the router checks periodically with the switch or service provider to see whether a circuit has become active or inactive, using one of two methods depending on the provider. IPXWAN exchanges over circuits that were active before and after a router restart may begin immediately. When an active circuit becomes inactive, the router reflects the lost connectivity in its routing information database, and when a circuit moves from inactive to active, link establishment is considered complete and the IPXWAN exchange begins.
IPX sends packets without keeping a connection open, but a wide area link usually works by establishing a connection first. Each kind of link says "up" in a different way.
IPXWAN is the common introduction that follows, so that the rest of IPX behaves the same everywhere.
§2Primary Network Number and Router Name
Every IPX WAN router has a primary network number: an IPX network number that is unique across the whole internet and permanently assigned to the router. For readers familiar with NetWare 3.x servers, this is the "Internal" network number.
Every IPX WAN router must also have a router name, a symbolic name that lets routers know who they are connected to after link establishment, particularly for network management. A symbolic name tells an operator more than a set of numbers does. The name should be between 1 and 47 characters long, drawn from the letters A to Z, the digits 0 to 9, the underscore, the hyphen and the "at" sign. The string is followed by a null character and padded to 48 characters with nulls. For NetWare 3.x readers, the router name is the file server name.
For workstation connections it is useful for the client connection software to be configured with a symbolic name reflecting the client's name, so a router management utility can tell which connection belongs to which client or router. Where no name is configured, the RFC recommends a default string such as "DIAL-IN-CLIENT".
Each router has a number that identifies it to the rest of the network, and a name that a human can read. The name is what appears in a management tool, so an operator can see which site is on the other end of a link.
§3.1The Initial Negotiation
After the data link is established, IPXWAN is activated to exchange identities and settle the operational characteristics of the link. There are two steps: negotiating the master and slave roles and choosing a routing protocol, and then exchanging the final router configuration. Once those are done, IPX routing packets and IPX data traffic start to flow.
The first exchange decides the roles, the routing protocol and the link delay used in the routing metrics. After link establishment both sides send Timer Request packets and start a timer waiting for a Timer Response. The requests are sent every 20 seconds until a response arrives or the far end is judged not to be responding, which could be after a predefined time of at least 60 seconds or a number of retries such as 16.
Each Timer Request records which routing protocols the sender supports, whether it is prepared to assign a network address to the link, whether it is a workstation that needs to name its own network and interface address on a reconnect, and whether it can support IPX header compression. Routing type options are listed in the sender's order of preference, most preferred first.
Some newer routing protocols do not need a network number on a WAN link, which is simpler because no pool of numbers has to be reserved. But an implementation that speaks those may still need to work with older implementations that do allocate numbers, so the method described below forces the older implementation to become the link master. A router that must support workstation dial-in has to be able to supply at least one network number for the workstation to sit on.
If the router is prepared to assign a network number to the link, it sends its primary network number in the Timer Request WNodeID field and omits the Extended Node ID option. If it is not prepared to do so, it sets the WNodeID field to zero and puts its primary network number in an Extended Node ID option instead.
Workstations follow similar but slightly different rules. On a first connection the workstation sets its WNodeID to zero, telling the router to be the link master and allocate a number, and it answers the router's Timer Request acknowledging only the Workstation Routing Type. A workstation never includes an Extended Node ID option. If the workstation is reconnecting after an earlier inactivity disconnect, it must be able to name its network, its interface address and its router name, so that file server connections survive the reconnect. It then sets its WNodeID to FFFFFFFFh, forcing itself to be the link master, and the router answers with only the Workstation Router Type acknowledged. Later packets in the exchange must use the correct WNodeID, and workstations always use zero.
On receiving a Timer Request, a router decides its role. The master role carries no privileges; it simply means this router asks the questions in the exchanges that follow. If both WNodeID fields are zero and both requests carry an Extended Node ID, the router with the higher numeric value is the master, and equal values are a configuration error that is reported before the data link is disconnected and manual intervention is needed. If only one request carries an Extended Node ID, the router that sent it is the master, and if neither does, the connection cannot be established. If either WNodeID field is nonzero, the router with the higher WNodeID is the master, and equal nonzero values are again a configuration error. The comparisons treat each byte as an unsigned integer with the first byte most significant.
The link slave answers the Timer Request with a Timer Response. Each option in the request is parsed, and an option that is not supported or not recognised is rejected by setting its WAccept field to "NO". The first router type in the request that the slave can support is accepted and all others are set to "NO". A router must not accept workstation connectivity to a node that is another router.
A router may support a numbered routing type while being unable to assign the network number. That type can then be selected only if the other router supports it and can assign the number, which the received WNodeID reveals. A router that cannot assign a network number must support Unnumbered RIP and offer that option.
There is one special case. If a router wants to provide WAN client access without supporting other WAN routing types, both it and the client would send a single Routing Type option naming WAN Client, and IPXWAN does not allow a WAN workstation to connect to another WAN workstation. The router must therefore not send a single Routing Type when that type is just WAN Client, and must add one or more other defined routing types, such as WAN RIP, with the accept option set to "NO", so a workstation can tell it is talking to a router. If a workstation detects that it is connecting to another workstation, it should disconnect.
A router supporting workstations must be able to supply at least one network number for them. All dial-in workstations could share one network and be given unique node numbers by the router, or each could get its own network number; this is an implementation detail, though a single shared network is preferred because it saves the router work with broadcast frames. When the router is the link master and allocates interface addresses on a single network, it should always use a unique value, incrementing for each client connection, so that a reconnecting workstation can name its old address. The six-byte interface address should have its first byte set to 2, which in IEEE address space represents a non-multicast, locally defined address, and node numbers of zero or -1 are not allowed.
If the slave cannot support any of the routing protocols in the request it received, it must disconnect the connection being established. The master, which is known once the Timer Response arrives, is responsible for defining the network number to be used as the common network number for the new link and for calculating the RIP transport time advertised to other RIP routers, using the algorithm in Section 4.3.
The two ends both say hello. From the numbers they put in the message, each works out whether it should be in charge. One of them then asks the other to use a particular routing protocol and tells it what to call the link.
The election is deliberately simple, so that two implementations written years apart still agree on who leads.
- TIMER REQUESTBoth sides send one, every 20 seconds until answered.
- TIMER RESPONSEAccepts one routing type and refuses the rest.
- INFORMATION REQUESTGives the common network number, the link delay and the router name.
- INFORMATION RESPONSEEchoes the values back.
§4The Packet Formats
All IPX WAN exchanges use the standard Novell IPX packet format. The packets carry IPX packet type 04, which defines a Packet Exchange Packet, and the socket number 0x9004, a Novell reserved socket used only for IPX WAN exchanges. IPX treats a network number of zero as a local network of unknown number requiring no routing, which is useful for transferring these packets before the common network number has been exchanged. Some routers need a node number, or MAC address, for each node on a link; node numbers are formed from the four bytes of the WNode ID field followed by two bytes of zero, while a workstation is explicitly assigned its node number by the router and told about it in the Information Request.
Other vendors' IPX routing protocols can use the IPXWAN definition by obtaining router types from Novell, who then include the new types in the document. The current routing types are 00 Numbered RIP/SAP, 01 NLSP, 02 Unnumbered RIP/SAP, 03 On Demand static routing, 04 Workstation, and 05 to FF currently undefined. Option numbers only need to be assigned from Novell for the Timer Request and Timer Response packets, though the options inside those packets depend on the router type negotiated, and are defined by the vendor who defines that routing type.
The Timer Request packet always has a checksum of FFFF, a length of 576 bytes, a transport control byte of 00, a packet type of 04, zero source and destination network numbers, a destination node number of all ones for broadcast, a destination socket of 9004 and a source socket of 9004, with the source node number set to zero. It carries a WIdentifier of 57 41 53 4D, a WPacket Type of 00, the WNode ID, a sequence number starting at zero and the number of options to follow, then the options themselves. Each option has a number, an accept field where 0 means no, 1 means yes and 3 means not applicable, a length, and option-specific data.
A Timer Request should contain one or more Routing Type options, and a router should always include routing type zero if full interoperability with older implementations is required. The types must appear in the sender's order of preference. If a router receives a Timer Response with more than one router type accepted, the link must be disconnected. The Extended Node ID option should only be included when the WNodeID field is zero and the sender is a router; an older IPXWAN implementation rejects the option and becomes the link master because the WNodeID is zero. The Header Compression option is included when supported, but at most one header compression option may be accepted, and receiving a Timer Response with more than one accepted must disconnect the link. The PAD option fills the Timer Request up to the 576 byte limit, is normally the last option, and should be filled with random numbers so that compression modems or PPP data compression do not distort the link delay calculation. Implementations should not try to verify its contents. Timer Request packets are always 576 bytes, but no assumption should be made about how many options a packet holds.
Both sides send Timer Requests after link establishment, each starting its sequence number at zero, and each retry increments the sequence number. Only a Timer Response whose sequence number matches the last one sent is acted on.
The Timer Response packet has the same fixed fields, with a WPacket Type of 01 and the same sequence number as the request it answers. Unknown or unsupported options must be answered with the accept option set to "NO". If the request held more than one router type and the slave supports them all, the slave must accept the first one it supports and refuse all the others, and that accepted type is the one both ends will use. Only the router or workstation that decides it is the slave sends this packet, and workstations are always the slave. Routers must set the WNodeID to their correct value when responding, and a value of zero must not be used.
The Information Request packet is sent by the link master to the slave. It specifies the network number to use on the new link, zero for Unnumbered RIP and On Demand, the calculated transport time for the routing metric, the router name, and, for a workstation connection, the interface address the workstation will adopt. The interface address is a separate option added for workstation connectivity and is not present for router-to-router links. Routers must set the WNodeID to their correct value, and a zero value must not be used. A workstation should replace the router name with its configured name or a constant descriptor string.
For a workstation Information Request an extra option specifies the workstation's interface address, and the number of options becomes two. Routers and workstations should not refuse to use an interface address whose first byte is not 02.
The link delay is worked out by timing the interval between sending the Timer Request and receiving the Timer Response, measured in 1/18th of a second, with a minimum of one unit, then multiplied by six to bias the value so that several workstation sessions on the link do not time out, and then by 55 to convert it to milliseconds. A higher resolution timer gives better results with a similar calculation. The link delay becomes the network transport time advertised in the IPX RIP tuple for the common network number, so both ends need the same value, and it is calculated by the link master. It is expressed in milliseconds.
The common network number comes from the link master and must be unique within the connected internetwork. Each WAN call needs a separate number. If the negotiated router type was Unnumbered RIP, On Demand or NLSP, the common network number is zero.
Under some circumstances, particularly on X.25 permanent circuits, the only way to notice that the remote router has gone away is when it comes back. A side that receives a Timer Request while IPX is fully connected must recognise that something went wrong and revert to the link establishment phase, discarding the routing information learned from that connection.
When Unnumbered RIP, On Demand or Workstation options are negotiated, Information Request packets are repeated every 20 seconds until a response arrives. For Numbered RIP links the Information Request is not resent and the link is instead disconnected after a suitable delay of at least 60 seconds, which keeps interoperability with earlier versions of IPXWAN. Each retry uses an incremented sequence number.
A NAK packet says that the received IPXWAN packet was not acceptable. It is an exact copy of the received packet with the WPacket Type field set to NAK, whose value is FFh. It is used when the received packet type is invalid or unrecognised, or when a badly formed IPXWAN packet arrives. Returning it gives the sender a chance to work out what was wrong, and if it cannot, the call can be disconnected.
The messages are ordinary IPX packets sent to a reserved socket number, so they look like any other traffic on the link.
Each packet carries a list of options. One says which routing protocol the sender prefers, one may carry a header compression setting, and one exists only to pad the packet to a fixed size so that the timing measurement works.
- 00NUMBERED RIP/SAP — The link carries a network number of its own.
- 01NLSP — Defined outside this document.
- 02UNNUMBERED RIP/SAP — The link has no network number.
- 03ON DEMAND, STATIC ROUTING — Routes are configured by hand; the link opens only when needed.
- 04WORKSTATION — A client connects, with no RIP or SAP.
Checksum | FF FF | Always FFFF
Packet Length | 02 40 | Max IPX size (576 bytes)
Trans Control | 00 | Hops traversed
Packet Type | 04 | Packet Exchange Packet
Dest Net # | 00 00 00 00 | Local Network
Dest Node # | FF FF FF FF FF FF | Broadcast
Dest Socket # | 90 04 | Reserved WAN socket
Source Net # | 00 00 00 00 | Local Network
Source Node # | 00 00 00 00 00 00 | Set to zero
Source Socket # | 90 04 | Reserved WAN socket
------------------+-------------------+------------------------
WIdentifier | 57 41 53 4D | Confidence identifier
WPacket Type | 00 | Timer Request
WNode ID | xx xx xx xx | Primary Net # of sending router
WSequence # | xx | Sequence start at 0
WNum Options | xx | Number of options
------------------+-------------------+------------------------
WOption Number | xx | Option Identifier
WAccept Option | xx | 0=No, 1=Yes, 3=Not Applicable
WOption Data Len | xx xx | Number of following option bytes
WOption Data | nn | Option specific data§5Three Ways to Run a WAN Link
Unnumbered RIP is the case where two WAN routers use RIP across a link with no physical IPX network address. The premise is that nothing on the link needs to be addressed. RIP and SAP run exactly as before, except that the source and destination network numbers are set to zero. The advantage is that no pool of usable IPX network numbers has to be allocated and configured for WAN links, and that a network with many WAN links is not flooded with unnecessary extra RIP information.
Workstation connectivity has its own rules. Workstations must live on a network and have a unique interface address on it so that they can be addressed individually, but they take no part in routing and do not need to receive RIP and SAP broadcasts. That lets routers cut background traffic on a workstation link, and sending it anyway causes no problem but does slow down workstation access. RIP and SAP information should only be sent when the workstation asks for it specifically, such as for a service or route request. If several workstations share one WAN workstation network behind a router, broadcasts on that network, from a workstation or from the router, must reach all the other workstations, which involves the router duplicating the packet to every workstation connection.
On-demand, statically routed links serve two purposes. The on-demand part means a router starts communicating with a destination only when there is data to forward, and initiating communication includes making the data link call where one is needed and performing the IPXWAN exchange. A transient connection is closed after a period of inactivity. The static routing part means no routing information is sent over the link at all, no RIP, no SAP and no NLSP; instead each router is configured with the routes and services reachable through the link.
With on-demand static routing, the called router must be able to identify the calling router, so that the statically configured routes and services can be attached to that connection. The calling X.25 address can be used on a switched virtual circuit, PPP authentication on a PPP link, the router name once IPXWAN has completed, or the physical port or permanent virtual circuit identifier on a persistent data link. Whatever the called router uses is called a Remote System Identifier, or RSI. For PPP links, Novell uses PPP PAP or CHAP authentication to determine the caller.
A router running on-demand static routing must keep a database of RSIs and lists of the network numbers and services reachable through each one. Those lists determine the reachability information it advertises to other routers in its routing area, and other routers treat each such link as though it were permanently available.
The on-demand exchange differs slightly. The calling router offers only the On-demand static routing type in its Timer Request. If the called router can do it, it offers the same type along with any other types it is willing to support on the link, and the master and slave election and the choice of routing type then proceed as before. If the slave detects a mismatch in routing types it disconnects the link. For a persistent data link such as an X.25 permanent virtual circuit there may be no link establishment event at all, so the arrival of a Timer Request takes that role. As with Unnumbered RIP, no network number is assigned to the link and NLSP packets are not sent, and periodic RIP and SAP packets are not sent either, although a router must answer RIP and SAP queries that arrive on the link.
The handshake can end in three different arrangements, and each saves something.
Unnumbered links avoid reserving address space for every circuit. Workstation links keep background routing traffic off the wire. On-demand links avoid both, because nothing is set up until there is something to send.
§9Security Considerations
The RFC says plainly that security issues are not discussed in this memo, and it contains no security section beyond that statement. There is no discussion of how the handshake itself could be attacked, of how the master and slave election could be manipulated, or of the trust placed in the peer that answers the Timer Request.
The one authentication mechanism the document mentions appears in the on-demand static routing section, and it is about identifying the peer rather than about protecting the exchange. There, Novell uses PPP PAP or CHAP authentication to determine the calling router, and the Remote System Identifier is what allows a called router to attach the right statically configured routes and services to the connection.
The RFC does not discuss security. It says so in one sentence and leaves it there.