forwarding with ttl=1

Alexander Botov alexb at mail.bg
Thu Feb 5 06:58:59 PST 2004


> > The problem is that the ISP's
> > gateway returns every time packets with ttl=1 which makes
> > further forwarding impossible . My gateway returns icmp error
> > mesage "time exceeded" and discards packets .
>
> TTL (Time To Live) is a counter value in an IP packet that gets
> decremented
> by every "hop" (router). When it reaches a value of zero, the packet is
> discarded.
>
> Using a TTL of 1 isn't going to be very useful as your packets will all be
> discarded at the first router. This is working as intended.
>

 That's what I mean . The incoming packets are with TTL=1 and my gateway
cannot forward them to the local network . Probably the reason is that the
ISP doesn't want from his clients to share one Internet connection between
different machines in the local network . I dont have problem with outgoing
packets .

here is the code fragment from ip_forward() in ip_input.c
/usr/src/sys/netinet/ip_input.c :
if  (ip->ip_ttl <= IPTTLDEC) { //Yes !!! the TTL == 1
     icmp_error(m, ICMP_TIMXCEED, ICMP_TIMXCEED_INTRANS,0, 0);
     return;
 }

and further:
    ip->ip_ttl -= IPTTLDEC;

when i execute netstat -s there is a big number of icmp time exceed errors
indicating that the packets are discarded because of TTL expiration  I need
a way to avoid this .

Thanks




More information about the freebsd-questions mailing list