Using PCP (Port Control Protocol) in practice?

Solution 1:

On the "client" (ISP subscriber PC), what is responsible for sending PCP MAP requests? The OS, application, or some wrapper? (ie. where should I be looking for "PCP supported"?)

Currently, each program sends such requests on its own. There also are standalone tools for sending map requests (e.g. upnpc or natpmpc).

However, I'm not sure if any software supports PCP yet. If you're lucky, you might find support for NAT-PMP (the predecesor to PCP), and your gateway might support NAT-PMP requests. But a large part only support UPnP IGD.

With DS-Lite, I think your home router/gateway is then responsible for translating all received requests (UPnP IGD, NAT-PMP) into PCP and forwarding them to the ISP's upstream router.

Alternatively, the Cisco page mentions a UPnP-PCP Internetworking function, which I gather is basically a translator that sits on the home router, listening for UPnP port mapping requests and forwarding them over PCP to the CGNAT. Would this mean that as long as this is enabled on the router, I only need the application (game server) to support UPnP?

Yes (as long as your router actually supports this feature...)