I took a dig at MultiplayerSynchronizer for fun to see how it works.
The first thing I’ve noticed is that MultiplayerSynchronizer itself actually doesn’t do any synchronization, it just provides data, like what’s changed in get_delta_state.
This is then used by SceneReplicationInterface::_send_delta, which encodes and compresses the properties that have changed. The actual data sending goes through a bunch of steps:
The above then ends up calling the MultiplayerPeer’s put_packet method directly, which depends on which implementation you’ve chosen. Here’s ENetMultiplayerPeer::put_packet for example.
So to conclude, it just creates and sends the packets directly.