Ethereal-dev: [Ethereal-dev] [PATCH] T.38 dissector improvements
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: "Martin Regner" <martin.regner@xxxxxxxxx>
Date: Mon, 5 Jan 2004 18:12:24 +0100
Hi, In some scenarios for a T.38 fax call there is first a voice call setup (RTP) and then switching to T.38 UDPTL. The RTP packets and T.38 UDPTL packets may then be sent on the same UDP port numbers. Ethereal starts up a conversation for RTP if it can see the H.245/SDP signalling, and then the T.38 UDPTL packets may be shown as RTP packets with "unknown version: 0". Even if you try to use "Decode As..." T.38 the packets are still shown as RTP packets since conversations has the highest priority. This problem has been reported in the following message: http://www.ethereal.com/lists/ethereal-users/200312/msg00142.html A temporar solution can be to use a display filter "rtp.version == 0" and save just those packets in a new file, and use "Decode As.." after loading in that file. However it would be nice to solve this problem in a better way. There can also be similar problems even if a conversation is not setup for RTP (e.g. no H.245/SDP signalling in the capture file). If you mark one RTP packet and select "Decode As..." also the T.38 packets will be shown as RTP packets since its the same port number, and opposite if you mark a T.38 packet and use "Decode As..." you will get the RTP packets decoded as T.38 packets (many of them will be shown as "Malformed"). I have tried to solve these problem with the attached patches and also added some other improvements to the T.38 dissector. 1) I have added a new preference setting for RTP dissector that can be used to make RTP dissector reject packets that doesn't have the RTP version field set to 2. The default behaviour is that RTP dissector will dissect all packets independently of the version. For T.38 UDPTL packets the bits coresponding to the "RTP version" will in normal cases be zero since UDPTL sequence numbers should start from 0 according to T.38 specification. I guess that there needs to be a very long fax session in order to get sequence numbers above 32767 (a lot of fax-pages during one fax call). I haven't seen that in any captures I have looked at. 2) I also needed to do some small changes in epan/conversation.c and epan/packet.h so that Ethereal will continue with other dissectors if the conversation dissector rejects the packet. 3) I also added a preference setting in T.38 dissector to dissect packet with the RTP dissector if the packet looks like an RTP version 2 packet. This can be handy for the scenario where no conversation has been started. You select one of the UDP packets and select "Decode As..." T.38, and the packets for that port number will be dissected with RTP or T.38 dissector dependant on if the packet looks like an RTP packet or not. The default setting is that packets will be dissected as T.38 packets. 4) I have also added two preference settings in T.38 disector for the UDP and TCP port numbers. 5) The T.38 dissector will now give a summary of the T.38 packet (just for the primary part, not the redundancy data) in the Info-column, see attached printout example. 6) I have added a preference setting whether to use the Pre-Corrigendum T.38 ASN.1 specification (1998) or the Corrigendum (2001). These ASN.1 specifications are uncompatible and there is equipment that uses either of these specifications (openh323 can be configured to use either of these). http://www.openh323.org/pipermail/t38/2002-September/000112.html http://lists.cs.columbia.edu/pipermail/sip-implementors/2003-March/004619.ht ml PS! When I went through the T.38 specification I noticed that in the latest version it is recommended to use T.38 IFP over TPKT over TCP, when using TCP. Currently the T.38 dissector only supports T.38 IFP directly over TCP and also doesn't handle TCP desegmentation. I will try to look into that later, but I have only captures with T.38 UDPTL over UDP (Pre-Corrigendum) and T.38 IFP directly over TCP (Pre-Corrigendum and no segemented IFP packets). If there is someone that has some nice T.38 captures I would be happy if you could send them to me.
Attachment:
conversation.c.patch
Description: Binary data
Attachment:
packet-rtp.c.patch
Description: Binary data
916 13.254087 10.10.10.1 16558 10.10.10.8 19530 RTP 74 Payload type=ITU-T G.729, SSRC=261555009, Seq=620, Time=2780835868 917 13.257526 10.10.10.8 19530 10.10.10.1 16558 RTP 60 Payload type=ITU-T G.729, SSRC=254477122, Seq=3797, Time=4274218803 918 13.273893 10.10.10.1 16558 10.10.10.8 19530 RTP 74 Payload type=ITU-T G.729, SSRC=261555009, Seq=621, Time=2780836028 919 13.292783 10.10.10.1 1720 10.10.10.8 11028 H.245 128 CS: empty RequestMode 920 13.293534 10.10.10.1 16558 10.10.10.8 19530 RTP 74 Payload type=ITU-T G.729, SSRC=261555009, Seq=622, Time=2780836188 921 13.297494 10.10.10.8 19530 10.10.10.1 16558 RTP 60 Payload type=ITU-T G.729, SSRC=254477122, Seq=3798, Time=4274219123 922 13.313255 10.10.10.8 11028 10.10.10.1 1720 H.245 105 CS: empty RequestModeAck 923 13.313717 10.10.10.1 16558 10.10.10.8 19530 RTP 74 Payload type=ITU-T G.729, SSRC=261555009, Seq=623, Time=2780836348 924 13.318145 10.10.10.1 1720 10.10.10.8 11028 H.245 106 CS: empty CloseLogicalChannel 925 13.322309 10.10.10.1 16559 10.10.10.8 19531 RTCP 110 Receiver Report 926 13.336521 10.10.10.8 11028 10.10.10.1 1720 H.245 192 CS: empty CloseLogicalChannel CS: empty OpenLogicalChannel (t38fax) 927 13.337263 10.10.10.8 19531 10.10.10.1 16559 RTCP 86 Receiver Report 928 13.338207 10.10.10.1 1720 10.10.10.8 11028 H.245 140 CS: empty OpenLogicalChannel (t38fax) 929 13.339082 10.10.10.1 10.10.10.8 ICMP 70 Destination unreachable 930 13.354683 10.10.10.8 11028 10.10.10.1 1720 H.245 105 CS: empty CloseLogicalChannelAck 931 13.356660 10.10.10.1 1720 10.10.10.8 11028 H.245 105 CS: empty CloseLogicalChannelAck 932 13.573928 10.10.10.8 11028 10.10.10.1 1720 H.245 128 CS: empty OpenLogicalChannelAck 933 13.575195 10.10.10.1 1720 10.10.10.8 11028 H.245 128 CS: empty OpenLogicalChannelAck 934 13.588137 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00000 t30ind: no-signal 935 13.594435 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00000 t30ind: no-signal 936 13.678090 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00000 t30ind: no-signal 937 13.684354 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00000 t30ind: no-signal 938 13.768062 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00000 t30ind: no-signal 939 13.774354 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00000 t30ind: no-signal 940 13.775821 10.10.10.8 11028 10.10.10.1 1720 TCP 60 11028 > 1720 [ACK] Seq=846 Ack=968 Win=3161 Len=0 941 13.777983 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00001 t30ind: v21-preamble 942 13.864547 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00000 t30ind: no-signal 943 13.868116 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00001 t30ind: v21-preamble 944 13.954477 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00000 t30ind: no-signal 945 13.957936 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00001 t30ind: v21-preamble 946 14.044458 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00000 t30ind: no-signal 947 14.047882 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00001 t30ind: v21-preamble 948 14.134447 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00000 t30ind: no-signal 949 14.137891 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00001 t30ind: v21-preamble 950 14.224429 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00000 t30ind: no-signal 951 14.227889 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00001 t30ind: v21-preamble 952 14.308104 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00002 data:v21: hdlc-data[FF] 953 14.314321 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00000 t30ind: no-signal 954 14.338110 10.10.10.1 16558 10.10.10.8 19530 T.38 62 UDP: UDPTLPacket Seq=00003 data:v21: hdlc-data[C0] 955 14.358238 10.10.10.1 16558 10.10.10.8 19530 T.38 67 UDP: UDPTLPacket Seq=00004 data:v21: hdlc-data[04] 956 14.388159 10.10.10.1 16558 10.10.10.8 19530 T.38 67 UDP: UDPTLPacket Seq=00005 data:v21: hdlc-data[B5] 957 14.404728 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00000 t30ind: no-signal 958 14.418202 10.10.10.1 16558 10.10.10.8 19530 T.38 67 UDP: UDPTLPacket Seq=00006 data:v21: hdlc-data[00] 959 14.438175 10.10.10.1 16558 10.10.10.8 19530 T.38 67 UDP: UDPTLPacket Seq=00007 data:v21: hdlc-data[8A] 960 14.468172 10.10.10.1 16558 10.10.10.8 19530 T.38 67 UDP: UDPTLPacket Seq=00008 data:v21: hdlc-data[5A] 961 14.494343 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00000 t30ind: no-signal 1039 17.388011 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00028 t30ind: no-signal 1040 17.424507 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00001 t30ind: v21-preamble 1041 17.477965 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00028 t30ind: no-signal 1042 17.514229 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00001 t30ind: v21-preamble 1043 17.567977 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00028 t30ind: no-signal 1044 17.604307 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00002 data:v21: hdlc-data[FF] 1045 17.634463 10.10.10.8 19530 10.10.10.1 16558 T.38 62 UDP: UDPTLPacket Seq=00003 data:v21: hdlc-data[C8] 1046 17.654467 10.10.10.8 19530 10.10.10.1 16558 T.38 67 UDP: UDPTLPacket Seq=00004 data:v21: hdlc-data[C1] 1047 17.657978 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00028 t30ind: no-signal 1048 17.684451 10.10.10.8 19530 10.10.10.1 16558 T.38 67 UDP: UDPTLPacket Seq=00005 data:v21: hdlc-data[00] 1049 17.714370 10.10.10.8 19530 10.10.10.1 16558 T.38 67 UDP: UDPTLPacket Seq=00006 data:v21: hdlc-data[60] 1050 17.734323 10.10.10.8 19530 10.10.10.1 16558 T.38 67 UDP: UDPTLPacket Seq=00007 data:v21: hdlc-data[11] 1051 17.747851 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00028 t30ind: no-signal 1052 17.764272 10.10.10.8 19530 10.10.10.1 16558 T.38 67 UDP: UDPTLPacket Seq=00008 data:v21: hdlc-data[01] 1053 17.794351 10.10.10.8 19530 10.10.10.1 16558 T.38 67 UDP: UDPTLPacket Seq=00009 data:v21: hdlc-data[01] 1054 17.814367 10.10.10.8 19530 10.10.10.1 16558 T.38 67 UDP: UDPTLPacket Seq=00010 data:v21: hdlc-data[00] 1055 17.824283 10.10.10.8 19530 10.10.10.1 16558 T.38 64 UDP: UDPTLPacket Seq=00011 data:v21: hdlc-fcs-OK 1056 17.837797 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00028 t30ind: no-signal 1057 17.884471 10.10.10.8 19530 10.10.10.1 16558 T.38 61 UDP: UDPTLPacket Seq=00012 data:v21: hdlc-sig-end 1058 17.894310 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00013 t30ind: no-signal 1059 17.927873 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00028 t30ind: no-signal 1060 17.934276 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00014 t30ind: v29-9600-training 1061 18.017996 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00028 t30ind: no-signal 1062 18.024240 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00014 t30ind: v29-9600-training 1063 18.107909 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00028 t30ind: no-signal 1064 18.114200 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00014 t30ind: v29-9600-training 1065 18.154321 10.10.10.8 19530 10.10.10.1 16558 T.38 60 UDP: UDPTLPacket Seq=00015 data:v29-9600: t4-non-ecm-data[A5A5A5] 1066 18.194530 10.10.10.8 19530 10.10.10.1 16558 T.38 120 UDP: UDPTLPacket Seq=00016 data:v29-9600: t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] 1067 18.197809 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00028 t30ind: no-signal 1068 18.234590 10.10.10.8 19530 10.10.10.1 16558 T.38 181 UDP: UDPTLPacket Seq=00017 data:v29-9600: t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] 1069 18.274601 10.10.10.8 19530 10.10.10.1 16558 T.38 172 UDP: UDPTLPacket Seq=00018 data:v29-9600: t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] 1070 18.287832 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00028 t30ind: no-signal 1071 18.314628 10.10.10.8 19530 10.10.10.1 16558 T.38 172 UDP: UDPTLPacket Seq=00019 data:v29-9600: t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] 1072 18.354668 10.10.10.8 19530 10.10.10.1 16558 T.38 172 UDP: UDPTLPacket Seq=00020 data:v29-9600: t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] 1073 18.378106 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00028 t30ind: no-signal 1074 18.394753 10.10.10.8 19530 10.10.10.1 16558 T.38 172 UDP: UDPTLPacket Seq=00021 data:v29-9600: t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] 1075 18.434729 10.10.10.8 19530 10.10.10.1 16558 T.38 172 UDP: UDPTLPacket Seq=00022 data:v29-9600: t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] t4-non-ecm-data[A5A5A5A5A5A5A5...] 1076 18.467919 10.10.10.1 16558 10.10.10.8 19530 T.38 60 UDP: UDPTLPacket Seq=00028 t30ind: no-signal
Attachment:
packet.h.patch
Description: Binary data
Attachment:
packet-t38.c.patch
Description: Binary data
- Follow-Ups:
- Re: [Ethereal-dev] [PATCH] T.38 dissector improvements
- From: Guy Harris
- Re: [Ethereal-dev] [PATCH] T.38 dissector improvements
- Prev by Date: Re: [Ethereal-dev] errors linking ethereal CVS - Visual Studio .NET Professional
- Next by Date: Re: [Ethereal-dev] support for X11 replies and events
- Previous by thread: [Ethereal-dev] Re: cvs commit: ethereal packet-x11.c
- Next by thread: Re: [Ethereal-dev] [PATCH] T.38 dissector improvements
- Index(es):