CGN makes this more difficult, I can configure the router of the system that I'm usually fixing and I have no choice for the ISP available here. Other users might want to connect to users under a CGN.
We need a server (maybe a TURN server: the same could be used for federated VoIP; an SSH server that the user can access; or maybe a custom server for this service) for some (most?) cases, direct connection if a host is public (which one? and IPv4 or IPv6?), or some kind of hole punching working with some kinds of NAT. (I think the assumption that the connection must be over the public Internet and not e.g. an internal network of an organization/single ISP is reasonable.) This leads to having many options, making it difficult to configure. Some of these are specific to both hosts, so they need negotiating for each connection (in the protocol discussed here over IM, it needs to be simple). We could implement a solution using one specific server protocol and then optimize it for other uses.
pgpioBBT6CEpn.pgp
Description: PGP signature
