|
12 | 12 |
|
13 | 13 | ## Intro |
14 | 14 |
|
15 | | -`traceflow` is a utility written for educational purposes. |
| 15 | +`traceflow` is a python version of traceroute, with some notable changes. This utility written for educational purposes, mainly. |
16 | 16 |
|
17 | | -`traceflow` which attempts to enumerate the number of paths between this host and a given destination. The mechanism for this is by not varying the destination source or destination port by TTL, thus keeping the inputs to any flow hashing calculations by routers along the path consistent for a single run. Then for each new run, vary the source port. |
| 17 | +`traceflow` which attempts to enumerate the number of paths between a source host and a given destination. The mechanism for this is by not varying the destination source or destination port by TTL, thus keeping the inputs to any flow hashing calculations by routers along the path consistent for a single run. Then for each new run, vary the source port. only. |
18 | 18 |
|
19 | 19 | By using raw sockets, `traceflow` can set the `IP.ID` of egress IP packets to both the Path ID and TTL, thus enabling us to match up return packets to a path easily. |
20 | 20 |
|
21 | 21 | The goal is to develop this utility to a point where it can be useful in production networks to detect the following: |
22 | 22 |
|
23 | | -- Pre/post maintanace path changes |
| 23 | +- Pre/post maintenance path changes |
24 | 24 | - as-path relax scenarios across IXPs/ISPs |
25 | 25 | - IP Topology discovery and visualisation |
26 | 26 |
|
@@ -112,28 +112,30 @@ This idea came to me in Stockholm, so I would like to call it Stockholm tracerou |
112 | 112 | - Will identify and print unique paths in three different formats (Including browser based) |
113 | 113 | - Detects uneven path lengths |
114 | 114 | - Has a packet encoding and decoding library |
| 115 | +- Duplicate path detection |
| 116 | +- Support for vis.js(experimental) |
115 | 117 |
|
116 | 118 |
|
117 | 119 |
|
118 | 120 | ## TODO |
119 | 121 |
|
120 | | -- Duplicate path detection |
121 | 122 | - IPv6 Support |
122 | | -- MPLS Support (Sending and decoding) |
| 123 | +- MPLS Support (Sending,decoding and rfc4950) |
123 | 124 | - TCP Support (Currently UDP only) |
124 | | -- Support for vis.js |
125 | 125 | - Understand raw sockets on OSX correctly to add support |
126 | 126 | - Test on Windows |
127 | 127 | - Add more resiliance to the code |
128 | 128 | - Implement ICMP probes to detect hosts which dont generate Port Unreachable |
129 | | -- Time stamps / latency |
| 129 | +- Time stamps / latency detection |
| 130 | +- rDNS support |
| 131 | +- ASN lookup support |
130 | 132 |
|
131 | 133 |
|
132 | 134 | ## Bugs |
133 | 135 |
|
134 | | -- Currently not very good at handling unequal length paths |
135 | 136 | - Darwin/OSX not functional yet |
136 | | -- Probably lots more |
| 137 | +- Windows has not been tested - at all |
| 138 | + |
137 | 139 |
|
138 | 140 | ## Debugging |
139 | 141 |
|
|
0 commit comments