The 20 second timeout sounds like one of the two SIP partners (device or server in this case) is not receiving all the SIP messages and a SIP timer fires, terminating the call; or a NAT connection is broken on the RTP stream after 20 seconds.
Here are some things to try (not in any particular order):
1) Turn off the SIP NAT helper:
/ip firewall service-port disable sip
2) Ensure you are allowing all traffic outbound from the LAN to the Internet and all "established" connections back to the LAN.
3) If you are trying to load balance among multiple Internet connections, then you have to sure all traffic to/from the SIP devices use the same connection (there are ways around this, but it violates the KISS principle).
4) Ensure you have Connection Tracking enabled.
5) Make sure your provider supports NAT'ed devices with proper keepalives. You can detect this by watching the connection table and seeing at least 8 UDP "connections", usually to port 5060. These timers should be getting reset by a periodic keep-alive being sent from the phone to the SIP server and/or vice versa. Here is an example of the connection table showing the tracking of 15 SIP sessions from 15 devices on a LAN to a single SIP server:
3-11-2012 11-19-29 AM.png
6) Disable any DST-NAT's for "SIP" ports. If the provider truly supports NAT'ed devices, then no DST-NAT will be normally required. If your provider doesn't support NAT'ed devices, then either find one that does or you'll have to come up with a more complex solution.
You do not have the required permissions to view the files attached to this post.