Jump to content

The "Getting Bolo to work over the internet" challenge


Recommended Posts

Hello everyone,

 

There's something that has been frustrating both myself and others who have tried to play Bolo over the internet of late: it simply does not work. There appears to be something that the internet either does now or does not support that it did previously that breaks its ability to play games over the UDP/IP protocol. This limits Bolo to local AppleTalk networks, or rigged "AppleTalk over Internet" solutions, none of which I know how to make work. My challenge is this: if you have some sort of way to work around this already (AppleTalk tunneling over the internet that is easy to do) or something, please let me know. If this is really as difficult as I am lead to believe, necessitating some sort of add-on, reprogramming, or separate background application on the host computer, I'll front $50 to the person who pulls it off. If anyone else would really like to see this happen, feel free to say "Hey, I'll add $5 to that!" or whatever you want. Only catch: this needs to work on a real OS 7/8/9 computer, and not within SheepShaver, Basilisk or some such.

 

Anyone can help with this?

Link to post
Share on other sites
  • Replies 97
  • Created
  • Last Reply

Top Posters In This Topic

There used to be Bolo servers that would let you play over the internet.  Unfortunately the tracker server software appears to have disappeared.  I tried asking about the server software on various forums (including emailing Stuart Cheshire), but I got no replies.

 

Perhaps someone could figure out how it worked and make a new one.  That'd be really useful.  I've been dying for a game of Bolo.

Link to post
Share on other sites

The tracker itself I still have a copy of. The server is a different matter, yes. However, that is not the main issue I am hoping to address. The issue is Bolo itself. If you know someone's IP, and they are hosting, and you attempt to join...it no longer works. Something is fundamentally broken with the way that Bolo sends/receives game information, and I don't know exactly what it is or how to fix it.

Link to post
Share on other sites

@LaPorta One of many mythical servers, from what I understand, yes.  There used to be plenty of them.  You had to manually type in the "Bolo Tracker" when you started a game so it would show up on one of the servers, which would handle the IP forwarding.  Then someone made a hack (0.99.7bv) that integrated support for 3rd party software called "Internet Bolo Buddy" to automatically obtain a list of games on the Bolo Tracker, then auto-fill the tracker IP to register / join an internet based game.

 

Unfortunately, yes, we need to either track down the Bolo Tracker server software, or somehow reverse engineer it.  The only other option would be to manually bridge AppleTalk networks.

 

Stuart Cheshire is still employed at Apple, but he hasn't replied to any of my emails.  I even left a voice mail.  *shrug*

Link to post
Share on other sites

Having thought about this, I bet Bolo is putting its own IP address in its packets.  I've had this suspicion for a while now, and today on the documentation page for bbraun's AppleTalk VPN (http://www.synack.net/~bbraun/avpn.html) I found a note that Bolo does precisely this on AppleTalk, putting its own AppleTalk address in packets, and that the AppleTalk VPN fixes up the packets to make them actually work.  In this case, you could probably come up with an ALG like for other protocols that need this (e.g. SIP), which would be unwieldy but not the end of the world...

Link to post
Share on other sites
  • 1 month later...

@LaPorta just helped me grab some packet captures from Bolo attempting to connect, and that, along with a sarcastic comment in the README, demonstrates why this doesn't work.  The answer is, as I suspected, NAT.

 

When Bolo is negotiating its communications, it embeds the IP address it thinks of as the sender into packets.  And, crucially, it trusts the networking information in the payload of the packet above the actual routing information in the packet itself.  This is a decidedly questionable bit of design; not just now, but it was already questionable design back then.  The author in the README rants about how he considers the OSI 7 layer model to be a trendy magic bullet; this is as may be, but if he'd paid more attention to layered models of networking in general, this would still be working.

 

This means that any normal end-user network connection sharing will break this, as will several other kinds of non-trivial routing policy.  All of these require that the application use the information in the routing information in the packet itself to function, and don't try to second-guess the network.  And, if the readme is to be believed, this failure is due to Attitude. 

 

So yay for Attitude.

 

In fairness, much higher-profile protocols from much more august bodies have fallen into similar traps; SIP, for example, the VoIP protocol, does kind of similar (though perhaps not through Attitude).  In those cases, because they're reasonably high-profile, a lot of routers will essentially fix the traffic silently on the way through to make it "look" right.  But the interest in Bolo is, unfortunately, insufficient to divert the entire home router industry into fixing up its traffic on the way through like it was for SIP.

 

Which is a shame.

 

The same approach could be taken here, though: if the Bolo protocol is documented anywhere, someone could make a UDP proxy that would quietly rewrite the packets on the way through.  This wouldn't be that difficult, but would require a bit of finesse.  I know that bbraun's AppleTalk over IP stuff does fixups for Bolo specifically to mitigate this problem, by replacing the "fake" addresses in the packets with "real" ones, so that could perhaps act as a basis here.

 

The other option is essentially to run a VPN either to the Mac itself or to a router upstream of it such that there is no address translation between the players.  This is a pain but is feasible; someone with a Mikrotik RouterBoard or similar could set up a little VPN concentrator.

Link to post
Share on other sites

I would love to get Bolo working. It would be awesome to have people to play with. The easy way would be for one of us to throw wireguard onto one of our servers and let people route their Bolo traffic through that.

 

Realistically, probably at most 3 people would actually take the steps needed to configure their networks for that.

 

Another option is for someone to develop a patch that changes Bolo to use proper network addresses. But I have never been good at binary patching. Reverse engineering the network protocol and writing a proxy is probably easier. But a patch would be more user-friendly and attract more players. Unless we're talking about a proxy that could run locally on the Mac. That would be pretty easy for users.

 

 

Link to post
Share on other sites

I've been considering how to build a kind of plug and play retro VPN box for 68kmla users that would allow the creation of one big virtual IP and ideally AppleTalk network that people could just plug their retro machines into when they wanted and connect to a hub somewhere to talk to other MLA users.  But while I'm reasonably sure how to do it, in theory, I also don't have either the time or the health to take on maintaining an Internet service in my spare time right now.

Link to post
Share on other sites

Here are my thoughts: the original Bolo trackers did more than just track the Bolo games and relay that information. I would summise that they actually took the packets from each game, renumbered the incoming packet with the host's actual IP address, and then sent them on the way to the corresponding machines. Maybe that never happened, but I would think that would happen. If we could make a similar program to do that, today's internet throughput is so vast that the amount of traffic would be trivial. Perhaps easier than modifying Bolo would be to make a modern-day program that simply re-routes the game packets, and also shows games in play.

Link to post
Share on other sites
4 hours ago, LaPorta said:

Here are my thoughts: the original Bolo trackers did more than just track the Bolo games and relay that information. I would summise that they actually took the packets from each game, renumbered the incoming packet with the host's actual IP address, and then sent them on the way to the corresponding machines

 

That's a really sensible idea, actually.  I didn't think of that.

Link to post
Share on other sites

I'm no programer but, I see that winbolo has been made open source, also the documentation seems to suggest that modern networking was implemented, theres a client software and a server software. I wonder if the src can be modified to work on a 68k mac again. Or possibly a PC could serve a tracker anyways here's a link to the project's files, the main site seems to be down with Archive's snapshot being rather limited.

https://code.google.com/archive/p/winbolo/

Edited by FunnymanSE30
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...