Search this site


Metadata

Articles

Projects

Presentations

xbox system link - description of the protocol

Table of Contents

  1. System link protocol

System link protocol

My xbox proxy doesn't know anything about anything above layer 3 with respect to xbox system link. This means you don't need to know anything either, if you want to write a proxy.

All traffic from the xbox comes from IP 0.0.0.1. The general idea is that I take the entire layer2 (ethernet) packet and send it in an UDP packet to another proxy. That proxy receives it and dumps it, unchanged, on the remote network. That's it. That's the whole deal.

Let me reiterate. It doesn't matter what happens above the UDP layer. You don't care. The proxy just forwards the raw packets, and your xbox gets them unchanged. Works like a charm and is game agnostic.

This works through the magic of switches learning mac addresses. Your local network starts to learn that all of the remote xboxes are coming from your machine. The xboxproxy itself also tries to be a bit smarter. It learns which mac addresses (xboxes) are coming from what proxies and only sends unicast packets to the correct proxy housing that xbox.

That's pretty much all of the proxy. It could be done in much fewer lines in Java or Python (Scapy for example) becuase 70% of the code is just setting up and managing the list of known proxies and xboxes as well as fancy packet checking. I'm reasonably certain that if you were to implement my xboxproxy in scapy, it would be around 20 lines of code if not less.