Toward Online Verification of Client Behavior in Distributed Applications
Existing techniques for a server to verify the correctness of client behavior in a distributed application suffer from imprecision, increased bandwidth consumption, or significant computational expense. We present a novel method for a server to efficiently search for a code path through the client that “explains” each client message, even though the server does not know local inputs to the client that might have caused the message. This method gives rise to a precise client verification technique that consumes no additional bandwidth and that validates most legitimate client messages much faster than previous such techniques. Our technique can gain even further improvements with a minimal increase in bandwidth use. We detail this innovation and use it to verify client behavior in two client-server games, namely XPilot and TetriNET. In our best configuration, verification often keeps pace with TetriNET gameplay.