My device is in a NAT environment, how does ACS access my device?
Can the source port be configured to be fixed
Your device send the information to the ACS server at which port the devices want to be reached. NAT broke this because it rewrite the IP address and port of your device when it goes through the NATing router and your device is unaware of those change.
If supported, the device will ask the STUN server which public address and port the STUN server see and send those instead. The problem with STUN is that it’s not sure that the external port will stay the same for a connection to another server (ACS server instead of STUN server) depending of how the NAT is configured on the router.
XMPP is a better option than STUN for NAT traversal if your device support it.
If using stun, then stun and acs must be on the same server. I have accessed ACS’s IP port, and when ACS accesses me, he must also use the same IP port, otherwise he cannot access it.