Help me solve this argument

I’m having a - well, heated discussion - with an ITSP. Please weigh in with your opinion.

Following are details derived from SIP packet captures. The top was provided by the ITSP, the bottom two are inside my firewall (tcpdump on the Asterisk box). Please note the missing ACK on my side of the conversation and the fact that Asterisk aborted the call to the inside user 4 seconds after the last 200 OK message - even though the ITSP side stayed up for over a minute when the caller finally hung up.

One of us is saying that the ACK message missing on my end was a simple case of a lost UDP packet and that an ACK should have been resent in response to subsequent 200 OK messages. The other is saying that I have a NAT issue. It is important to note that we are having random call setup issues at a rate of about 2% of calls from this carrier. 98% of inbound calls have no issues.

ITSP SIP TRACE (provided by ITSP)
Jun 11 12:05:43.307 PM ITSP.IP.ADDR > MY.PUBLIC.IP INVITE sip:pho.nen.umbr@MY.PUBLIC.IP:5060 SIP/2.0
Jun 11 12:05:43.399 PM ITSP.IP.ADDR < MY.PUBLIC.IP SIP/2.0 100 Trying
Jun 11 12:05:43.503 PM ITSP.IP.ADDR < MY.PUBLIC.IP SIP/2.0 180 Ringing
Jun 11 12:05:59.149 PM ITSP.IP.ADDR < MY.PUBLIC.IP SIP/2.0 200 OK
Jun 11 12:05:59.150 PM ITSP.IP.ADDR > MY.PUBLIC.IP ACK sip:pho.nen.umbr@MY.PUBLIC.IP SIP/2.0
Jun 11 12:06:00.149 PM ITSP.IP.ADDR < MY.PUBLIC.IP SIP/2.0 200 OK
Jun 11 12:06:01.150 PM ITSP.IP.ADDR < MY.PUBLIC.IP SIP/2.0 200 OK
Jun 11 12:06:03.148 PM ITSP.IP.ADDR < MY.PUBLIC.IP SIP/2.0 200 OK
Jun 11 12:06:07.154 PM ITSP.IP.ADDR < MY.PUBLIC.IP SIP/2.0 200 OK
Jun 11 12:06:11.148 PM ITSP.IP.ADDR < MY.PUBLIC.IP SIP/2.0 200 OK
Jun 11 12:06:15.148 PM ITSP.IP.ADDR < MY.PUBLIC.IP SIP/2.0 200 OK
Jun 11 12:07:26.156 PM ITSP.IP.ADDR > MY.PUBLIC.IP BYE sip:pho.nen.umbr@MY.PUBLIC.IP SIP/2.0

Asterisk PBX SIP Trace - Peer Conversation
Ports 5060 and 10,000-20,000 are forwarded MY.PUBLIC.IP -> 10.1.10.200
Jun 11 12:05:43.337 PM ITSP.IP.ADDR > 10.1.10.200 INVITE sip:pho.nen.umbr@MY.PUBLIC.IP:5060 SIP/2.0
Jun 11 12:05:43.367 PM ITSP.IP.ADDR < 10.1.10.200 SIP/2.0 100 Trying
Jun 11 12:05:43.478 PM ITSP.IP.ADDR < 10.1.10.200 SIP/2.0 180 Ringing
Jun 11 12:05:59.119 PM ITSP.IP.ADDR < 10.1.10.200 SIP/2.0 200 OK
Jun 11 12:06:00.121 PM ITSP.IP.ADDR < 10.1.10.200 SIP/2.0 200 OK
Jun 11 12:06:01.120 PM ITSP.IP.ADDR < 10.1.10.200 SIP/2.0 200 OK
Jun 11 12:06:03.112 PM ITSP.IP.ADDR < 10.1.10.200 SIP/2.0 200 OK
Jun 11 12:06:07.126 PM ITSP.IP.ADDR < 10.1.10.200 SIP/2.0 200 OK
Jun 11 12:06:11.118 PM ITSP.IP.ADDR < 10.1.10.200 SIP/2.0 200 OK
Jun 11 12:06:15.114 PM ITSP.IP.ADDR < 10.1.10.200 SIP/2.0 200 OK
Jun 11 12:07:26.189 PM ITSP.IP.ADDR > 10.1.10.200 BYE sip:pho.nen.umbr@MY.PUBLIC.IP SIP/2.0

Asterisk PBX SIP Trace - User Conversation
Jun 11 12:05:43.437 PM 10.1.10.200 > 10.1.10.147 INVITE sip:1808@10.1.10.147:5060 SIP/2.0
Jun 11 12:05:43.517 PM 10.1.10.200 < 10.1.10.147 SIP/2.0 100 Ringing
Jun 11 12:05:59.109 PM 10.1.10.200 < 10.1.10.147 SIP/2.0 180 OK
Jun 11 12:05:59.109 PM 10.1.10.200 > 10.1.10.147 SIP/2.0 200 ACK
Jun 11 12:06:19.120 PM 10.1.10.200 > 10.1.10.147 SIP/2.0 200 BYE
Jun 11 12:06:19.129 PM 10.1.10.200 < 10.1.10.147 SIP/2.0 200 OK

You need to attach the real sip debug in order to get more help.