Best way to implement pawn movement with network capabilities?

I am developing something that requires the implementation of my own pawn movement (just a rolling ball with some physics really). In order to get a better understanding, I have been looking a bit into the existing implementation of Character.{h, cpp} and… it is a lot to digest.

How would one go about using the stuff that is offered by the UE4 framework in order to synchronize a pawn between all clients? Server->Client is probably exclusively through replications? How about client->server?

I was thinking of sending all input to the server (even though Character seems not to do it this way). Should this be done with RPC or does something else exist for that? This part has to be obviously done as fast as possible network-wise. Would RPC within UE4 fit that bill?

As far as I have seen, most synchronization is being done through the RPC calls. Server->Client is done through replications and Client->Server through the RPC calls – this seems also to be true for the CharacterMovementComponent (used for Character). It suffices in terms of performance and the result mostly relies on how you use the offered tools. Most of what UE4 has to offer in terms of synchronization is presented here: A new, community-hosted Unreal Engine Wiki - Announcements - Unreal Engine Forums. Also very useful: Character Movement Component | Unreal Engine Documentation