Initial Commit
[ltp2tcp] / README
1 This program is the first step in an LTP connection graphing program. Right now
2 it takes an LTP packet capture (LTP in UDP or DCCP in IP in Ethernet) and
3 converts it to a TCP packet capture. When this TCP capture is examined using
4 Tcptrace (http://www.tcptrace.org), you see a graphical description of the LTP
5 connection.
6
7 In order to build this program, please simply type make at the commandline. I have not
8 included a ./configure script at this time. Contact me, if major problems arise.
9
10 Usage is as follows:
11 ltptrace -t{encapsulation} ltp_file tcp_file [-d] [-b{block_size}] [-s{start session}-{end session}]
12         -d is debug (repeat for additional verbosity)
13         -t specifies what protocol LTP is encapsulated in.  Right now, only udp and dccp are supported.
14         -b specifies the LTP block size (NOT the bundle size) that is being used over this connection.
15                 This information can't be determined from a packet capture, so if not specified
16                 it defaults to is 500,000. If you set this value larger than your actual block size, the graph
17                 will contain empty spaces between each session, which is handy to separate sessions. However, in that case, tcptrace will report 
18                 inaccurate, lost data statistics.
19         -s requests a graph of only the specified range of sessions. Note that the session numbers are just the "session number"
20                 from wireshark, not the whole session id.
21
22 To generate the graphs run:
23         ltptrace -tudp ltp_file.dmp tcp_file.dmp
24         tcptrace -lGt tcp_file.dmp
25         xplot a2b_tsg.xpl
26
27 Plot Interpretation:
28    1. The only Tcptrace graphs that are valid are the Throughput Graph(tput) and Time Sequence Graph (tsg). 
29         The TSG is the main graph you want to look at.
30    2. White segments with arrows at both ends are LTP data segments (for those familiar with tcptrace,
31         these are represented by TCP data carrying packets).
32    3. Purple vertical lines are LTP report segments. The lines show the parts of the session that the receiver
33         is acknowledging (represented by TCP SACKS).
34    4. White crosses are LTP report acknowledgment segments (represented by TCP zero length data segments).
35    5. Retransmitted data is marked in red, just as in TCP.
36    6. LTP cancel and cancel ack segments have a RST_IN or RST_OUT over them (they become TCP Reset packets).
37    7. The green line is the point below which all data has been acknowledged, just as in TCP.
38    8. The yellow line has no meaning for LTP.
39    9. Note that there may be sequence number space between two adjacent sessions. This doesn't necessarily indicate loss.
40         Since the block size is not contained in the packet capture, we have to guess what it should be. If that guess is wrong,
41         there will be additional "space" in each session that isn't filled. Use the -b option to specify the correct block size
42         to eliminate this space.
43   10. A SYN/SYNACK/ACK and FIN/FINACK/ACK are added to the begining and end of the connection. These are purely to make the TCP
44         connections pretty and do not correspond to any packets in the LTP capture.
45
46 Statistics:
47 Most of the Tcptrace statistics are valid. However, those relating to the receiver's window are meaningless because the window represents nothing in the LTP capture. Unless the block size was specified, the "missed data" statistic is also wrong. The rest of the statistics, including those about the number of packets, number of retransmissions, idle time, and throughput are valid.
48
49
50 Limitations:
51         1)Only handles one LTP "connection". There isn't a good way to separate
52                 different LTP "connections" from new sessions of the same "connection".
53                 Use Tcpdump filters to separate connections. Libpcap filtering could also
54                 be added in ltptrace.
55         2)Uses some special types from Linux (u_char, u_int32_t)
56
57
58 ltptrace is free software: you can redistribute it and/or modify
59 it under the terms of the GNU General Public License as published by
60 the Free Software Foundation, either version 3 of the License, or
61 (at your option) any later version.
62
63 ltptrace is distributed in the hope that it will be useful,
64 but WITHOUT ANY WARRANTY; without even the implied warranty of
65 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
66 GNU General Public License for more details.
67
68 You should have received a copy of the GNU General Public License
69 along with ltptrace.  If not, see <http://www.gnu.org/licenses/>.
70
71 Samuel Jero
72 Internetworking Research Group
73 Ohio University
74 sj323707@ohio.edu
75 2/23/2011