Re: Bug#104450: ITP: tcptraceroute -- A traceroute implementation using TCP packets
Thank you Michael,
Now it becomes really easy to find broken server.
Christophe
Le sam, 14 jui 2001 08:07:29, Michael C. Toren a écrit :
> christophe.barbe@lineo.fr writes:
>
> > When I saw your ITP mail I said myself that tcptraceroute could be
> > usefull to find non ecn compliant server. In fact when you turn on ecn
> > on a 2.4 kernel you expose yourself to unreachable sites due to broken
> > server on the road. You can't find the broken server with traceroute
> > because it doesn't send tcp packets. So I've tried tcptraceroute and
> > surprisingly it is not concerned by ecn.
>
> tcptraceroute isn't affected by /proc/sys/net/ipv4/tcp_ecn because it
> constructs TCP SYN packets on it's own (with the help of libnet) and
> writes them to a raw socket, as oppose to requesting that the kernel
> establish a TCP connection. You are correct, the SYN packets it
> constructs do not have the TH_ECN or TH_CWR bits set.
>
> jpenny@debian.org writes:
>
> > Ahh, but is it? How does one track down which device is ECN
> > blocking? It would be very useful to have something that would
> > perform traceroute type functionality but show the first device
> > which was blocking ECN, or flag ECN incompatibility.
>
> It's fairly trivial to hack tcptraceroute so that it has the ability to
> send SYN packets with the ECN bits set. I've included a patch against
> 1.1
> at the bottom of this message which adds a -E command line option:
>
> # ./tcptraceroute -f 10 oss.software.ibm.com
> Selected device eth0, address 207.8.132.210, port 3171 for outgoing
> packets
> Tracing the path to oss.software.ibm.com (129.42.244.202) on TCP port 80
> (www), 30 hops max
> 10 gbr1-p80.cb1ma.ip.att.net (12.122.5.54) 13.747 ms
> 11 gar2-p360.cb1ma.ip.att.net (12.123.40.137) 13.861 ms
> 12 12.125.33.54 (12.125.33.54) 14.573 ms
> 13 oss.lotus.com (129.42.244.202) [open] 14.628 ms
>
> # ./tcptraceroute -f 10 -E oss.software.ibm.com
> Selected device eth0, address 207.8.132.210, port 3172 for outgoing
> packets
> Tracing the path to oss.software.ibm.com (129.42.244.202) on TCP port 80
> (www), 30 hops max
> 10 gbr1-p80.cb1ma.ip.att.net (12.122.5.54) 13.834 ms
> 11 gar2-p360.cb1ma.ip.att.net (12.123.40.137) 13.864 ms
> 12 12.125.33.54 (12.125.33.54) 14.822 ms
> 13 *
> 14 *
>
> I'm hoping to release 1.2 sometime in the next two weeks, which will
> include this patch, plus a few other things. If all goes well, perhaps
> David will be able to upload 1.2 to woody before the freeze.
>
> Thanks,
>
> -mct
>
>
> diff -ru tcptraceroute-1.1/tcptraceroute.c
> tcptraceroute-1.1+ecn/tcptraceroute.c
> --- tcptraceroute-1.1/tcptraceroute.c Sun Jul 1 15:37:57 2001
> +++ tcptraceroute-1.1+ecn/tcptraceroute.c Sat Jul 14 00:47:47 2001
> @@ -70,6 +70,16 @@
> #include <stdarg.h>
> #include <stdio.h>
>
> +/*
> + * ECN (RFC 2481)
> + */
> +#ifndef TH_ECN
> +#define TH_ECN 0x40
> +#endif
> +#ifndef TH_CWR
> +#define TH_CWR 0x80
> +#endif
> +
> /* Buffer size used for a few strings, including the pcap filter */
> #define TEXTSIZE 1024
>
> @@ -91,7 +101,7 @@
> u_long dst_ip, src_ip;
> u_short src_prt, dst_prt;
> int sockfd, datalink, offset, minttl, maxttl, timeout;
> -int o_debug, o_numeric;
> +int o_debug, o_numeric, o_ecn;
> char *device, *name, *dst, *src;
> char dst_name[TEXTSIZE+1], dst_prt_name[TEXTSIZE+1], filter[TEXTSIZE+1];
> pcap_t *pcap;
> @@ -389,7 +399,7 @@
> dst_prt, /* dest port */
> 0, /* seq number */
> 0, /* ack number */
> - TH_SYN, /* control */
> + TH_SYN | (o_ecn ? TH_CWR|TH_ECN : 0), /*
> control */
> 0, /* window */
> 0, /* urgent? */
> NULL, /* data */
> @@ -625,6 +635,7 @@
> maxttl = 30;
> o_debug = 0;
> o_numeric = 0;
> + o_ecn = 0;
> device = NULL;
> dst_prt = 0;
> timeout = 3;
> @@ -707,6 +718,11 @@
> if (getuid()) fatal("Sorry, must
> be root to use -s\n");
> src = argv[1];
> argc--, argv++;
> + break;
> +
> + case 'E':
> + o_ecn = 1;
> + debug("Enabled ECN support\n");
> break;
>
> default:
>
>
> --
> To UNSUBSCRIBE, email to debian-devel-request@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact
> listmaster@lists.debian.org
>
--
Christophe Barbé
Software Engineer - christophe.barbe@lineo.fr
Lineo France - Lineo High Availability Group
42-46, rue Médéric - 92110 Clichy - France
phone (33).1.41.40.02.12 - fax (33).1.41.40.02.01
http://www.lineo.com
Reply to: