root/trunk/docs/TODO

Revision 1782, 5.1 KB (checked in by aturner, 22 months ago)

update refs #66

  • Property svn:eol-style set to native
  • Property svn:keywords set to author date id revision
Line 
1This is a general list of things which should/could/may be done.
2If any of these features interest you let me know- especially if you're
3willing and able to help code it.  In general, higher priority tasks are
4tracked on the tcpreplay website: http://tcpreplay.synfin.net/
5
6Legend:
7    - = Not started
8    + = Done
9    O = Mostly done
10    o = Started work
11    . = Canceled
12    ? = To think about
13
14GENERAL:
15
16+ Improve config file format
17  + better variable names
18  + use "var: value" format
19  + have tcpreplay, tcpprep, tcprewrite sections
20  + Being solved using GNU AutoOpts
21
22+ Improve autoconf detection of libraries
23
24+ Re-organize source tree
25
26+ tcpdump decoder should print packets syncronously w/ the main process
27
28+ Better use of GNU Autotools
29
30+ Improve CLI/config file parsing
31
32+ Only tcpreplay/tcpbridge should need to run as root.
33
34+ Tcpreplay should use raw sockets or BPF directly for writing rather then
35      libnet where applicable for theoretically higher performance.
36
37- Detect system version of libopts b/c we need a recent version
38
39+ Generalize packet editing and printing code so it can be shipped as a
40  seperate library and plugged into tcpreplay/tcprewrite/flowreplay/etc
41
42+ See about removing libnet_init() from all binaries other then tcprewrite
43  so we don't have to run as root:
44  . libnet_addr2name4 (ignore, doesn't require libnet_t context)
45  + libnet_name2addr4
46  + libnet_get_hwaddr
47  + libnet_do_checksum
48
49TCPREPLAY:
50
51. Add support for dual-nic send on one intf, wait for packet, send next.
52  would be really useful for testing the effectiveness of how well an IPS
53  detects and blocks attacks. (TP's tomahawk does this even better then
54  described here, so why re-invent the wheel?)
55
56- Rewrite do_sleep() to handle sub sleep times by only nanosleep()'ing
57  once for multiple packets when the timestamps are close enough.  We
58  also need to time nanosleep, since different architectures have lower
59  minimum sleep times (Linux/Alpha is 1ms vs. 10ms for Linux/x86)
60
61+ Tcpreplay should say which interface each packet is going out
62
63TCPBRIDGE:
64
65- Duplicate all tcprewrite functionality
66
67TCPREWRITE:
68
69- Support fragrouter like features
70    - basic IP fragmenation
71    - TCP fudging
72    - then more advanced stuff
73    - Can we integrate FR's code?
74
75+ Look at VLAN (802.1q) packets
76    - others non-vanilla types?
77    + Add tags?  Remove tags?  Change tags?
78    - Tag only one side of the connection
79    - Support Q-in-Q tags:
80          http://www.informit.com/articles/article.asp?p=101367&rl=1
81    - Cisco's ISL trunking?
82
83- Add support for MPLS
84
85- Add support for GRE
86  http://www.linuxguruz.com/iptables/howto/2.4routing-5.html
87  Perhaps this should be done via the hardware interface rather then the GRE
88  virtual interface since libnet doesn't support the GRE virtual
89
90+ Add support for setting the ethernet protocol field so we can use
91    -I, -K to fill out an entire ethernet header w/o using -2
92
93+ Add a secondary interface full layer two rewrite option
94
95+ Fix MAC rewriting to allow sending packets with a MAC of 00:00:00:00:00:00
96
97- Add support for more linktypes (Prism Monitor, 802.11, FDDI, etc)
98    + Make it easier for others to add support for others
99
100+ Rip out packet munger from tcpreplay and put it into another tool so
101  that tcpreplay can be more optimized
102    ? perhaps use libnetdude?
103    ? make into a library?
104    + definately put it into a seperate binary (tcprewrite)
105
106- Add the ability to modify packet data via regex(es) in tcprewrite
107  - Should support pcre
108  - Support (foo) and $1, etc so new data can include old
109  - Limit matching which packets via BPF filter and tcpprep cache
110        (client/server)
111  - Step through packets ala tcpreplay and provide option to edit (Y/n)
112
113- Support connection tracking and generating 3way handshake for connections
114  missing them.
115
116- Bump Syn/Ack numbers by a pseudo random or given value so that running
117  the same pcap will behave as different streams.
118
119- IPv6 support?  People ask for this every few months, but nobody actually
120  says they "need" or "really want" it; seems more of "gee, wouldn't it be
121  nice".  What does that mean anyways???
122
123- tcprewrite should be able to remove the two byte ethernet FCS (checksums)
124  at the end of the frame.
125
126+ Support randomization of IP addresses in ARP packets
127
128- Add support for rewriting MAC addresses in the ARP body for
129  tcprewrite/tcpbridge to allow proxy-arp like behaviour
130
131- Add support for IP fragmenting frames which are > MTU
132
133
134TCPPREP:
135
136+ When splitting traffic via tcpprep print out each packet (tcpdump style)
137  so end users know where each packet is going
138
139FLOWREPLAY:
140
141- Improve flowreplay so it actually works
142  . Use libnids to read the pcaps.  This seems DOA at this time since
143    libnids is GPL and the author is unwilling to make it support multiple
144    threads which flowreplay probably needs to be.  The only other option is
145    a major rewrite which would break API compatibility.  Doesn't seem worth
146    it.
147  - Allow handoff to a socket after user specified client/server exchanges
148
149- Perhaps integrate stick/snot/fpg logic into flowreplay:
150  http://www.geschke-online.de/FLoP/fpg.8.html
151  to do full 3way handshakes
Note: See TracBrowser for help on using the browser.