In January 2002, Commetrex offered the telecommunications industry a no-charge T.38
interoperability testing service. Why? Commetrex licenses T.38 and fax-modem
technologies and believes that, among other reasons, the demand for these products
will increase as interoperability increases. But until Commetrex' announcement,
there has been no industry-wide interoperability clearing house. Now there is.
Today, enterprises and service providers cannot purchase T.38-capable equipment
from multiple vendors and assume interoperability. Our goal is for users to be able
to assume T.38 interoperability.
Another reason for making it a no-charge service is that it's quite easy for
Commetrex to do with our terminating T.38 product. TerminatingT38 is a combination
of Commetrex' T.38 and T.30 technologies. This allows us to terminate hundreds of
T.38 sessions into one server. No gateways required. And TerminatingT38 is heavily
instrumented, giving us the kind of insight into your implementation needed to
offer sound interop advice.
The response has been gratifying, so much so that we've had to tighten up a little
on the no-charge offer. It's only available to vendors of fielded equipment. So, if
you're still in development, sorry, we'll have to charge for the service. But it's
pretty good service. No, we don't have a stimulus system that executes test cases.
We use the debug version of our off-the-shelf TerminatingT38. We run through a
check-list, given below, of tests with you. If there are any problems, it's easy to
identify the cause. We provide an analysis of the trace logs, an example of which
follows:
1) v21-preamble indicator needs only be sent once. It
appears that you are sending it for each detected
flag character.
Cisco sends only one indicator.
Lucent send one at start and one between
frames.
2) Field length value for a data field should start with
0 for a single data octet. Thus, a field
containing 3 octets would have the length
field set to 2.
3) The Cisco boxes send no-signal at the end of the
V21 sequence and appears not to work without
it.
4) The v17-14400 long-training signal is sent multiple
times. It appears that you are sending the
indicator every 40 milliseconds while the
training is present. This is not required.
5) Image data bits appear to be reversed.
6) First packet sent should be no-signal
(Probably will not affect interoperability,
but is common practice.)
7) The format of the "Open type" is not correctly
interpreted. The length of the frame should
preceed the frame. For example:
++-- length of primary
VV
00 04 06 c0 01 80 00 00 c0 00 02 06 c0 01 80 00
00 ff 01 06 ^^ ^^ ^^
|| || ++-- length of first 2ndary
|| ++----- Number of redundant frames
++-------- Type of 2ndary frames (Redundant)
This problem existed in older versions of Telogy
T.38, but has since been corrected.
The Steps
OK, what are the steps? First, we exchange contact info on the lead engineer at
each company. They then decide on how the connection will be established and what
testing is to be done.
We have found that establishing a connection can sometimes be a significant part of
the effort. Here are the options we offer:
1) No call-control negotiation - Lacking compatible signaling protocols, we can
manually establish the T.38 session over either UDP or TCP. With this method, both
sides simply use agreed-upon port numbers and IP addresses.
2) H.323: Two H.323 endpoints first establish a voice call (i.e. G.711) session.
Upon the detection of fax tone, one side commands the session switchover to T.38
fax. Commetrex supports either V3 & V4 standard negotiation or the earlier V2 non-
standard negotiation (UDP only). Typically, the call originator needs the IP
address of the remote gateway or gatekeeper and the number of a fax terminal.
Once the sessions can be established, we run through the following tests:
Transmit UDP & TCP
1) FEC (2 and 3 FEC frames) (3 and 2 span)
2) redundancy level 0 and 3
3) Poll Rx
4) ECM
5) Local TCF
6) Pass TCF
7) hundred-page
8) very long page (1MB)
Receive UDP & TCP
8) FEC (2 and 3 FEC frames) (3 and 2 span)
9) redundancy level 0 and 3
10) Poll TX
11) ECM
12) Local TCF
13) Pass TCF
14) 100-page
15) One-byte page
We then analyze the results, make any necessary modifications, retest as required,
and issue a press release when complete. Test completion is published on this site.
Here's a sample trace log:
(026:288) Send_Net: dly: 0 sz: 312
(026:288)
(026:288) <<<<---- outgoing T.38 ____________________
(026:288) Sequence Number: 36
(026:288) Number of bits: 48
(026:288) UDPTL:[0000] 00 24 01 00 00 00 | .$....
(026:288)
(026:288) UDPTL: Frame Sequence Number: 36
(026:288) UDPTL: Primary length: 1
(026:288) Primary: Message type: no_signal (0x00)
(026:288) Primary: ECC type: Redundant
(026:288) Primary: RED Cnt: 0
(026:288) <<<<---- outgoing T.38 ____________________
(026:288) ENC_Fill_Data_Buffer: ECC_Depth: 0 flags: 0x000a
(026:288) Encode queue is empty return True
(026:288) Processing Event. code: 0x4 del_time: 6203 delay: 2025
(026:288) Do callback: RT: 6.209 qsiz: 84 Sim: 6.203 lag: 6
(026:288)
==> Process Event HW_V21_TX_END data: 0
(026:288) Uncased Event: SIM_HW_V21_TX_END
(026:288) $ --- Raw Event=4(HW_V21_TX_END ) fsm=4015 sp=0
(026:288)
===
(1020191914.292)
(026:288) FSM old: WT_DIS cmd: TX_V21_DONE rtn: WDISNT21 new: WT_TRN_RESP
(026:288) Start timer for 6000 ms for event 4003 (EVT_TMR_INT_EXP)
(026:288)
back from rtn: WDISNT21 new: WT_TRN_RESP
===
(026:288) It is now 1020191914 sec 292000000 nsec
(026:288) Sleeping till 1020191914 sec 376000000 nsec
(026:288) Sleeping, queue len: 84 pause: 84 next event @ 6293 now: 6209
(026:378) Sleep returned, queue len: 84, next event @ 6293
(026:378) Processing Event. code: 0xcb del_time: 6293 delay: 2115
(026:378) Do callback: RT: 6.299 qsiz: 83 Sim: 6.293 lag: 6
(026:378) Got event: SIM_EPT_1700
(026:378) Data size: 8
(026:378) ================ Modem Packet processing ===============
(026:378) >>>>>> Incoming Modem __________________
(026:378) ENC code: ENC_SIG_TONE_DETECTED
(026:378) ENC : 3
(026:378) ENC data; 0x0005
(026:378) ENC size: 0
(026:378) Dump buffer @ 0x02a8fe18
(026:378) ________________________________________
(026:378) Process single modem signal
(026:378) ENC_Put_Signal: signal 1 qualifier: 3 data: 0x0005
(026:378) ENC_Put_Signal: flags: 0x000a
(026:378) ENC_Put_Signal: Put ENC_TONE_DETECTED
(026:378) ENC_Fill_Data_Buffer: ECC_Depth: 0 flags: 0x000a
|