Take the 2-minute tour ×

Been trying to learn about older networking protocols a bit, and figured that I would start with IPX/SPX. So I built two MS-DOS virtual machines in VirtualBox, and got IPX communications working (after much trial and error).

The idea being to get several old DOS games to run, link up to a multiplayer match, interact with each game window, and capture the traffic using Wireshark from the host machine. From this, I got Quake, Masters of Orion 2, and MechWarrior 2 to communicate back and forth. Doom, Doom2, Duke3d, Warcraft, and several others either buggered up under the VM or just couldn't see the other VM on the IPX network.

What did I discover? None of the working games used SPX. Not even Microsoft's NET DIAG used SPX. They all ran ONLY on top of IPX. I can't even find SPX examples or use-cases of SPX traffic running over IEEE 802.3 Ethernet II framing. I did find references that it was in abundant use on token ring, but that's it.

Yet any IPX-aware application that I've hunted down so far usually advertises itself as "IPX/SPX", which seems to be a bit of a misnomer, since it doesn't seem to use SPX.

So what was SPX used for? Any DOS applications out there that use it which will run under my VM setup?

Edit: I am aware that IPX is to SPX as IP is to TCP (layer 3 to layer 4), so I expected to see an SPX layer underneath the IPX layer in Wireshark when I ran my tests.

share|improve this question
add comment

closed as not a real question by RobM, Scott Pack, mailq, Dave M, Tim Brigham Aug 3 '12 at 18:57


1 Answer

up vote 2 down vote accepted

Application examples:

  • ArcServe Backup Agent for NetWare
  • Pervasive.SQL v7 NetWare
  • Lotus Domino Server

SPX (analogous to TCP) was optimised for LANs, and used per-packet NACKs (packets were assumed to be received instead of explicitly acknowledged) and had no concept of a transmission window.

Compare this with TCP, which uses an ACK for every byte; this also implies that you will buffer all the unacknowledged data and re-send after a lost packet.

However, IPX was not suitable for the WAN. For example, it couldn't cope with different frame sizes. I.e. two networks with different frames (say, Ethernet and Ethernet with jumbo frames) couldn't interoperate without a proxy server or some form of encapsulation.

Additionally, packet reordering in WANs is common but it plays hell with SPX (at least with Novell's implementation) causing a lot of spurious NAKs. Note 1

Finally, IPX/SPX supports a maximum of 20 sockets on a single node. Compare this to TCP, which supports the addressing of thousands of simultaneous sockets.

Note 1: Performance of IPX/SPX and TCP/IP

share|improve this answer
Interesting notes and link! Don't think I can easily run any of the listed applications under my two VMs, though. I did play with ArcServe briefly at one point as a prior sysadmin -- long enough to hate it. Any other suggested programs I can maybe find? –  Kumba Jul 3 '12 at 19:56
Check out lwared or mars_nwe, which emulate an NCP file server in linux... maybe you can hook that up to your DOS machines somehow? –  Mike Pennington Jul 3 '12 at 20:05
I actually have a NW65 install in a separate VM and I have IPX configured on it, but it seems to only use IPX and not SPX as well. I have not gotten a proper workstation connection to it, though, so perhaps that might be why. Wasn't sure if some old DOS LAN games might've used SPX that I could test out. –  Kumba Jul 3 '12 at 20:33
Got the MS-DOS clients to talk to the NW VM, but not SPX traffic. NCP, instead, which I thought ran under SPX -- kinda like how it goes IP --> TCP --> HTTP, I thought it'd be IPX --> SPX --> NCP. Instead, it appears SPX, NCP, RIP, SAP, and others all behave like layer 4 transport protocols versus application protocols. Neat! –  Kumba Jul 8 '12 at 11:23
I did find a simplistic SPX chat program, SPXDOS.EXE (the archive name). Can't get it to work, though. Using the HELLO.EXE program from it, it takes as a parameter the connection ID of the target user to chat to, but per WireShark, the sending station calls Function 0x17 on the NCP protocol to get the "internet address" of the target connection -- I assume it wanted the target IPX address -- and instead gets back a reference to the IP address of the NW server and told to use the UDP protocol. Probably will have to setup an NW3.11 server to make this app work. –  Kumba Jul 8 '12 at 11:26
add comment
