Jump to content

The "Getting Bolo to work over the internet" challenge


Recommended Posts

@LaPorta, I had been thinking along similar lines: I do think that the Bolo server was forwarding modified packets. If we figured out the packet format we could re-implement it.

 

Like @cheesestraws, I also have an idea for a "VPN appliance" (AKA Raspberry Pi) that would enable internet Bolo games. It could be a stop-gap to use before the network protocol is reverse engineered. Our ideas might be basically the same. I'm working on setting up a test environment for this idea.

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

Top Posters In This Topic

Yes. No one ever receives replies from him,  unfortunately.

 

So, here is what is probably a long-winded suggestion from me.

 

The program Internet Bolo Buddy worked very well, and was able to connect to different "tracker" servers over the internet (North America and Eurpoe are two that come to mine, one I think was bolo.abo.fi). That program can be re-directed to another server of our choosing via preferences. Since that is an already stable, known-good front end to what we are attempting to do that I would suggest that we turn our efforts to that. Setting up some sort of redirect machine on the user end would mean that every single person wanting to play Bolo would have to implement the same kind of solution, which is probably beyond what only the most haedcore Bolo followers would do.

 

Therefore, I would say that a program should be created that will exist on a server of some sort and take care of the following:

 

1. Field incoming Bolo tracker requests. There is a way to direct Bolo to specify what tracker it reports its game to in the preferences if I am not mistaken. Bolo can then send these requests to the IP of the server. My assumption is the server would be listening for these requests on a designated port.

 

2. Be able to accept incoming packets from a given IP, and re-create these packets exactly with the exception of replacing the designated internal IP with the internet IP that the machine sending the packets registers as.

 

3. Forward these modified packets to the receiving computers. Accept packets and modify them from each machine playing the game in the same manner.

 

4. Collate information from the hosting computer and present it to Internet Bolo Buddy in a meaningful fashion so that the tracker will correctly display the map name, number of players, game style, etc.

 

In brief, I believe that is what a program of this sort would need. I, for one, would be willing to host such a service on my Mac Mini server to be on most of the time here in North America. A European counterpart could be hosted by Cheesestraws or some other person.

 

 

Now that I have framed this out, anyone want to add or correct me at all? Plus, who would take this on?

Link to post
Share on other sites

Well sure, we could just make it so we could play right now, but personally I'd be interested in making it so anyone, anywhere, anytime could play Bolo into the future.

 

That said, far be it from me to dissuade someone from just making a personal solution!

Link to post
Share on other sites

I absolutely also want a server (or other similar user-transparent solution). My perspective is that I can quickly create a workaround right now. That doesn't stop us from also creating a replacement server. But that is a nontrivial project that I won't have time to undertake for several months. If someone else gets started before I get to it, that would be awesome. But in the meantime, there would at least be a way to play, for those willing to use a raspberry pi.

Link to post
Share on other sites

So I've done a bit of digging and found some of the answers, but also more questions...

 

First of all, the main problem seems to be that Bolo was designed poorly to only work with computers directly connected to the internet (this was quite common in the earlier days of the internet), not behind a router or firewall. 

 

4. Bolo.NetworkingFAQ

Quote

• "My Mac has no direct Internet connection. Can I write a Unix proxy for playing Bolo?"

No. Your Mac itself needs to be connected to the Internet. Bolo is not a client-server program and cannot easily be modified to connect via some other computer acting as its proxy on the Internet. Purists will argue that this is false -- anything is possible on a Turing Complete computer, given enough programming. They are right of course, but in this case, "enough programming" is enough to effectively connect your computer to the Internet, at which point it becomes easier to *actually* connect your computer to the Internet using existing software. You should also note that in order to provide sufficient real-time performance, the Bolo proxy could not be written as a user-level program, or even as a root-level program. On Unix, protocols like TCP/IP do not run as separate programs because they require accurate timing to work reliably, so they have to be compiled into kernel itself, and the same would be true of the Bolo protocol.

 

Here's another snippet I found which probably explains why connections are problematic today.

http://web.archive.org/web/20030620123025/http://www.lgm.com/bolo/guides/longfaq.html#netbolo

Quote

Unlike most other network games, Bolo is not a client-server system. Bolo forms a network of Macs by linking them in a ring where one player sends packets of game information to a neighbor, who in turn sends packets to the next neighbor on the ring, and so on. These packets are either DDP on AppleTalk or UDP over the Internet. When a new player joins, he sends a packet to each machine in the ring to figure out the delay between it and all Macs, then it adds itself into the ring in such a way as to minimize the total time around the ring. The advantage of a ring is its flexibility: nobody needs to maintain a server, and anybody can start or join any game. The disadvantage is that everybody is limited by the slowest connection in the ring. This is why it's a very bad idea for a modem player to join a game with direct ethernet players, because they must then continuously wait on the slow modem connection, resulting in lag which is characterized by jerky, unresponsive play or outright errors when the ring is broken and the game is frozen.

 

 

I've yet to figure out those internet games people mentioned worked. As far as I can see the tracking servers have nothing to do with this, they simply list games, but it's possible there's something going on behind the scenes that's built in to Bolo and not documented?

 

The nuBolo page has some interesting notes:

Quote

Using the external nuBolo game tracker (bolo.usu.edu, port 50000), it is now possible for players using Network Address Translation (NAT) firewalls to start games.

I'm fairly certain that's a standard Bolo tracker they're stating nuBolo is compatible with.

 

And a bit further down, a note about getting around other connection issues:

Quote

Fortunately, nuBolo has a built-in protocol called firewall tunneling that is designed get around such lists. In a nutshell, firewall tunneling works by getting all the computers involved in a nuBolo game (or those who wish to join a game) to send packets to each other, thereby getting themselves on any approved sender lists. When a new computer tries to join a game, it sends a special packet to the nuBolo game tracker, and another one to the computer already in the game. The game tracker then relays the request, and the node sends its own special packet to the person wanting to join. 

 

You also have to keep in mind nuBolo and WinBolo likely did not have access to the original source of Bolo so they are more clones than ports. I'm not sure how compatible they are with the original Bolo.

 

 

Here are some additional resources I've found while searching around:

 

BoloWeb, a 68k web server that gets running games from trackers and displays them on the Web.

I've archived a copy of it on GitHub:

https://github.com/SuperSVGA/BoloWeb

https://supersvga.github.io/BoloWeb/

 

An archived BoloWeb page listing running games:

http://web.archive.org/web/19990117023011/http://boloweb.stanford.edu:80/BoloWeb.ACGI

 

An article on Bolo from NetGuide in 1995:

http://www.bolo.net/O Bolo Mio, Steve Silberman, NetGuide Magazine, May 1995.pdf

 

Stuart Cheshire's Dissertation, may have some useful networking details:

http://web.archive.org/web/20030512180643/http://www.lgm.com/bolo/guides/dissertation/

 

Another Bolo FAQ:

http://web.archive.org/web/20030620123025/http://www.lgm.com/bolo/guides/longfaq.html

 

WinBolo Source, with tracker server source code:

https://github.com/kippandrew/winbolo

Edited by SuperSVGA
Link to post
Share on other sites

Not sure if this helps at all, Peter N Lewis (peter.lewis@info.curtin.edu.au) wrote a program called Bolo Finder that searched a tracker that was run by Mike Ellis. Perhaps if they can be contacted they might have some useful information. In the help document Peter Lewis provides several e-mail addresses. I'd e-mail him but wouldn't even know what to ask.

Alternative addresses (in order from best to worst) peter@cujo.curtin.edu.au peter@ncrpda.curtin.edu.au peter@rocky.curtin.edu.au peter@gu.uwa.edu.au

Edited by History_SE30_Dude
Link to post
Share on other sites
7 hours ago, SuperSVGA said:

And a bit further down, a note about getting around other connection issues:

 

There are two distinct connectivity issues going on here, and I think it's important not to conflate them:

  1. Firewalls.  Port forwarding/opening is going to be essential to play Bolo, regardless, because of the bonkers overlay network stuff it does.
  2. NAT.  Routers that don't use NAT will be fine; it's not a problem with routers.  It's a NAT problem.  This is not really due to the bonkers overlay network stuff; so long as port forwarding is set up, it should work fine so long as it is the apparent sending address in the packet that is trusted, rather than the one in the payload.  This actually is poor design, I'm afraid.
7 hours ago, SuperSVGA said:

Stuart Cheshire's Dissertation, may have some useful networking details:

 

Oh, well found.  That looks like it has some fun information in it

Link to post
Share on other sites
14 hours ago, cheesestraws said:

There are two distinct connectivity issues going on here, and I think it's important not to conflate them:

Well the greater issue I see is that each client contacts another client, so everyone connecting needs to be reachable by everyone else. All the client’s would have to have a compatible networking setup, but possibly you might be able to get around this with an advanced relay to rewrite the packets and port forwarding on each client. 
Although NAT is part of the issue saying it’s just NAT doesn’t really get us to the right point.  I’m guessing the important part is finding out how it interacts with Port Address Translation(PAT)/NAT Masquerade, and if Source NAT might be part of the solution. 
 

Once I get enough time I’ll get a third client and some routers and do some testing. Unless I can find a reliable way to make them run in VMs, so I don’t have to climb around to touch each system with a dislocated shoulder. 

Link to post
Share on other sites
5 hours ago, SuperSVGA said:

Well the greater issue I see is that each client contacts another client, so everyone connecting needs to be reachable by everyone else.

 

If it really does this "ring" method described in the dissertation, I'm not sure how a server would have been possible. It makes sense for an AppleTalk network. But hopefully a different protocol was introduced when UDP support was added. Looking forward to hearing your findings after you get a test network set up.

Link to post
Share on other sites

The tracker software is the part that we really need.  If anyone can source that, we'd be all set.

 

As a side note ... I seem to recall that the WinBolo tracker kinda worked in one way or another.  I don't quite remember in which way.  I think I remember BoloTracker being able to query the WinBolo server just fine and list games.  But I don't think the WinBolo tracker would track Mac Bolo games, though.  Nor would it forward IPs to allow you to connect.

 

Edit:  As a side note, I've both emailed and called / left a message for Stuart.  He never replied.

 

Edited by olePigeon
Link to post
Share on other sites
22 hours ago, History_SE30_Dude said:

Not sure if this helps at all, Peter N Lewis (peter.lewis@info.curtin.edu.au) wrote a program called Bolo Finder that searched a tracker that was run by Mike Ellis. Perhaps if they can be contacted they might have some useful information. In the help document Peter Lewis provides several e-mail addresses. I'd e-mail him but wouldn't even know what to ask.

Alternative addresses (in order from best to worst) peter@cujo.curtin.edu.au peter@ncrpda.curtin.edu.au peter@rocky.curtin.edu.au peter@gu.uwa.edu.au

 

I'll send him an email if you like.  We're looking for the Tracker server software.  If he has a copy, then we could get it running and play some Bolo games.

Link to post
Share on other sites
15 hours ago, anthon said:

How do you figure that the tracker software would solve things?

 

It's essential for bypassing NAT since Bolo is dependent on a front-facing IP address to communicate.  You can still find old USENET groups discussing the server software.  As speculated earlier in the thread, it likely modifies the packets to include the real IP address, enabling the games to talk to each other.

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...