Here I try to explain more detailed, how IPX routing works.
Every IPX packet has 30-byte header with network, node and socket address
for both the destination and the source. IPX packets are encapsulated to
MAC (Media Access Control protocol, in our case Ethernet_802.2).
Let some workstation wants to send information to another workstation (server).
If both are in same network segment (has same network number), sending
workstation sends packet directly. If workstaions are in different networks,
the sending workstation must first find a router on its own segment (network)
that can forward packets to the segment on which the destination workstation
To find this router, the sending workstation broadcasts a RIP
(Routing Information Packet) requesting the fastest route to the destination
segment. The router on the sending segment with the shorest path to the
destination segment responds to the request (in case of PPP there is only
router - Linux box). In its response, the router includes its own network
and node address in the IPX header.
When the sending workstation knows the router node address, it
addresses and sens packets to the destination workstation as
When a router receives an IPX packet:
The sending workstation places the destination node IPX network address -
node, address, socket numbers - in the corresponding destination fields of
the IPX header.
The sending workstation places its own IPX network address - node, address,
socket numbers - in the corresponding source fields of the IPX header,
also fill out all other fields in the header.
The sending workstation places the node address of the router that responded
to RIP request in the Destination Address field of MAC header (here it's
Ethernet 802.2 header, but of cource can be Ethernet_II or
The sending workstation places it's own node address in the Source Address
field of the MAC header.
The sending workstation sends the packet.
The router checks the Transport Control fileld of the IPX packet header
(to prevent more than 16 hops).
The router checks the IPX header Packet Type field etc.
The router checks IPX header Destination address field to determine how
to route the packet. If the packet is addressed to the router, the
appropriate socket process handles it internally, otherwise the router
forwards the packet.
When a router forwards packet, it can take one of two possible
actions. If packet is destined for a network number in which the
router is directly connected (just our case, Linux box is
directly connected by Ethernet with server), the router does
The router places the destination node address from IPX
header in the Destination Address field of the MAC header.
The router places its own node address in the Source Address
field of the MAC header.
The router increments the Transport Control field of the IPX
header and forwards the packet to the destination node segment.
If the router is not directly connected to the segment on which
the final destination node besides, it sends the packet (in
the analogious way) to the next router in the path to the
RIP (Routing Information Packet). Routers use RIP to
exchange routing information with neighboring routers on an IPX
network. A RIP router periodically broadcasts a packet containing
all routing information known to router (that's just work of
IPX RIP). So all routers in network are synchronized.
Workstatios also use RIP to locate the fastes route to a distant
network. A workstation initiates a route request by broadcasting
a RIP packet and then "listen" for thr RIP response that
contains the route information.
SAP (Service Advertising Packet) is conceptually similar to RIP.
It provides a means for routers and servers to advertise and exchange sevice
(print queues and servers, file servers etc) information. SAP includes up
to 7 Server Entrys, where sevice type, Server Name with address (network,
node, socket) etc. are described.
Look now, how it woks in our case (PPP).
When IPX over PPP starts, workstation (client) sends SAP
request (with sevice type "File Server"). Linux box (as router)
answers with SAP packets, where available servers are described.
Client waits for SAP packet, where "Preferred Server" is
described. There it found address (network, node, socket) of necessary
Then client sends RIP request, to find route to NW server.
Linux box is here only router on this segment and answers.
Client reads RIP answer from Linux box and sends packet, where
IPX address is address of server and MAC (Ethernet) address is
address of Linux box.
Linux box forwards packet to server.
When server receives packet, it requests (first RIP request to
find route, then send packet). Now connection between client and server
is established and client can first attach to the server and later user can
login to server.
Now client can receive SAP packets and use services like
NW server volumes, print servers and queues etc.
Back to PPP-IPX page