On 11.12.2014 11:53, Larry Moore wrote:
> You may very well find getting T.38 working in your environment in a way you 
> would like will consume a large amount of your time, you will also find 
> yourself doing a lot of research. What you should have found out by now (or 
> perhaps deduced) is that the T.38 is a standard that is varied thus one 
> cannot be assured a T.38 solution will always work.

Agreed. But firstly, I really need a working fax, and secondly, I am just 
trying to make it work with one specific provider (I have identified two 
providers in Germany which could be a possibility and have signed up a full 
account with both of them for testing purposes (no problem since the fees are 
small and the cancellation period is short in both cases), and as soon as one 
of these works like expected I'll cancel the contract with the other one). So I 
don't need to have a general solution which works with every provider around 
the world.

>> exten =>  _00., 1, NoOp()
>>    same =>  n, Answer()
>>    same =>  n, Progress()
>>    same =>  n, Set(FAXOPT(gateway)=yes)
>>    same =>  n, Dial(SIP/${EXTEN}@27XgY8YwfI2S9NAg)
>>    same =>  n, Hangup()
> 
> One may assume this is your dialplan for the outgoing connection with which 
> you want T.38 to be supported.

You are right.

> To obtain better assistance you will need to include information such as what 
> the local T.38 endpoint is and how it connects to your system. If it is in 
> fact a T.38 capable endpoint then you should setting FAXOPT(gateway) to no. 
> having Answer() & Progress() for an outgoing T.38 connection doesn't seem to 
> make sense to me!

The endpoint is T.38 capable. I have configured FAXOPT(gateway)=yes because I 
have read that the gateway automatically goes out of the way if Asterisk 
determines that the two endpoints which should be connected use the same 
protocols and parameters, and otherwise translates between the endpoints (see 
https://wiki.asterisk.org/wiki/display/AST/T.38+Fax+Gateway, section "Using 
T.38 gateway mode").

Furthermore, T.38 passthrough never worked for me. My initial tries were with 
Asterisk 1.8 which is included in Debian wheezy (and does not have the gateway 
capability anyway), but whatever I did there, no T.38 INVITE was accepted by 
Asterisk (this was some weeks ago, so I don't remember the details). I then 
downloaded, compiled and installed Asterisk 13.0.1 and tried T.38 passthrough, 
but to no avail as well. When I added FAXOPT(gateway)=yes, I saw correct T.38 
INVITEs for the first time.

Regarding Progress(), I am not sure if I need this. I think one day I could 
solve a certain problem by using it, but I really have done a million of tries 
and don't remember every one.

Regarding Answer(), I think I need this. Without Answer(), no T.38 would be 
used in many cases; it seems that switching from initial G.711 to T.38 is done 
in-band, and that couldn't be done without the Answer() in the dialplan, could 
it?

> You should also include information relating to your SIP configuration (with 
> appropriate obfuscations) for the connection to peer 27XgY8YwfI2S9NAg as well 
> as what T.38 options you have set in the general section of sip.conf.

You are right. I will now provide every detail and the logs. By the way, I have 
switched back to chan_sip today for the purpose of testing again and generating 
logs.

Unfortunately, the moderator rejected this message in the first version due to 
oversize (40 kB limit), so I now have removed the logs and instead have put 
them onto a web server for download. 

The Wireshark overview log (all packets of the fax transmission) is here: 
http://www.omeganet.de/t38-overview-log.txt

The detailed packet contents of all INVITE, OK and ACK packets are here: 
http://www.omeganet.de/t38-detailed-log.txt

General remarks:

- Asterisk runs on the IP address 192.168.20.48.
- The hostname spock-asterisk.home.omeganet.de resolves to that IP address.
- The fax software is Tobit David which is T.38 capable. I can't use another 
fax software; an extensive explanation for that would be off-topic here, but if 
somebody is interested, I will send respective information via PM.
- The fax software runs on another machine than Asterisk.
- The fax software runs on the IP address 192.168.20.14.
- I don't want Asterisk to do any NAT wizardry because I have configured my 
firewall to do the NAT for SIP and RTP.
- I am very sure that NAT is not the problem.
- In extensions.conf, I basically have configured only one extension pattern 
for outbound fax calls (to keep tests simple). The pattern is _00. (for 
testing, I make the fax software call numbers which always begin with 0049, so 
this pattern is sufficient).
- In sip.conf, the context for the provider is "unauthenticated" since the 
first step is to send a fax (and not to receive one, which I think is more 
complicated).

Wireshark overview log remarks:

- The overview log shows that it works in principle: A first INVITE series 
happens, and some G.711 data is exchanged between Asterisk and the fax software.
- After this, a second INVITE series happens, everybody switches to T.38, and 
UDPTL packets are exchanged.
- The second INVITE series starts at second 15 (packet 28879).
- The second INVITE series is begun by the local fax software with CSeq 4264.
- Up to this point, all INVITEs, OKs and ACKs are in the right order.
- The training begins and is finished successfully, and the actual fax data 
begins to flow.
- Every few seconds, Asterisk send an OK message (with CSeq 4264 (as in 
original INVITE)) to the local fax software.
- Please note that the local fax software *always* correctly ACKs these OK 
messages (with CSeq 4264 (as in original INVITE)).
- Nevertheless, at about second 47, Asterisk says "BYE" to both parties (i.e. 
local fax software and provider) *although* the fax transfer is not finished 
yet.
- Note that there are 32 seconds between the begin of the second INVITE series 
and the BYE messages.

Asterisk console log remarks:

- I do the tests after having started Asterisk by "asterisk -c" so that I 
immediately see serious errors or warnings at the console.
- In this case, after having freshly started Asterisk, having re-registered the 
fax software endpoint, and having tried to send the fax, there are two console 
messages. The first one claims that the critical packet with CSeq 4264 timed 
out after 32 seconds, and the second one tells us that Asterisk hung up due to 
this.
- Please note that the 32 seconds are exactly the time between the second 
INVITE series and the BYE messages in the Wireshark overview log.
- This means that Asterisk thinks that packet CSeq 4264 has timed out 
*although* the Wireshark overview log clearly shows that every packet of this 
CSeq has been ACKed by the local fax software.

Oddities which I have seen myself so far (which may or may not be responsible 
for the failures - this is beyond my current knowledge):

- At the begin of the T.38 communication (packet 28879), the local fax software 
invites Asterisk with 0049...@..., and Asterisk then invites the provider with 
49...@..., i.e. Asterisk cuts off the leading two zeroes. Why? I don't think my 
dialplan does Asterisk instruct to do so.
- In packet 28887, Asterisk gives [email protected] as contact. But in the 
original invite in packet 28879, the contact was 
[email protected]. Is this bad?


Thank you very much in advance to everybody who tries to help.

Regards,

Recursive


********************
This is my sip.conf:
********************

[general]
session-timers = refuse
context=unauthenticated
allowguest=no
allowoverlap=no
udpbindaddr=192.168.20.48:5060
tcpenable=no
tcpbindaddr=192.168.20.48:5060
tlsenable=no
tlsbindaddr=192.168.20.48:5061
transport=udp
srvlookup=no
defaultexpiry=600

nat = no
directmedia = no
ignoresdpversion=yes

register => 
USERNAME_PROVIDER:[email protected]/USERNAME_PROVIDER

[authentication]

;David T38 endpoint
[bCo9m7OfHWK2Y2sb]
context = david_t38_inbound
type = peer
host = dynamic
secret = PASSWORD_FAX
t38pt_udptl = yes,redundancy,maxdatagram=400
t38pt_rtp = no
t38pt_tcp = no
insecure = port,invite
canreinvite = yes

;Trunk (SIP provider)
[USERNAME_PROVIDER]
context = unauthenticated
type = peer
host = proxy.provider.net
outboundproxy = proxy.provider.net
defaultuser = USERNAME_PROVIDER
fromuser = USERNAME_PROVIDER
fromdomain = proxy.provider.net
remotesecret = PASSWORD_PROVIDER
insecure = port,invite
t38pt_udptl = yes,redundancy,maxdatagram=400
t38_rtp = no
t38_tcp = no
canreinvite = yes


***************************
This is my extensions.conf:
***************************

[general]
static=yes
writeprotect=no
clearglobalvars=no

[globals]

[default]
exten => s, 1, Hangup()

[unauthenticated]
exten => s, 1, Hangup()

[david_t38_inbound]
exten => _00., 1, NoOp()
  same => n, Answer()
  same => n, Progress()
  same => n, Set(FAXOPT(gateway)=yes)
  same => n, Dial(SIP/${EXTEN}@USERNAME_PROVIDER)
  same => n, Hangup()



*********************************************
These are the messages in Asterisk's console:
*********************************************

*CLI> [Dec 13 12:51:01] WARNING[5651]: chan_sip.c:4046 retrans_pkt: 
Retransmission timeout reached on transmission 24edd33abaae904f for seqno 4264 
(Critical Response) -- See 
https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions
Packet timed out after 32000ms with no response
[Dec 13 12:51:01] WARNING[5651]: chan_sip.c:4075 retrans_pkt: Hanging up call 
24edd33abaae904f - no reply to our critical packet (see 
https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions).

-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
               http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Reply via email to