North American Network Operators Group
Date Prev | Date Next |
Date Index |
Thread Index |
Author Index |
Historical
Re: BGP TTL check in 12.3(7)T
- From: Iljitsch van Beijnum
- Date: Thu Apr 08 16:04:44 2004
On 8-apr-04, at 20:37, Blaine Christian wrote:
However, this says a TTL of 254 will be accepted. Now the
fact that I can talk to boxes running a slightly older IOS
with a TTL of 0 without any problems suggests to me that
emitting packets with a TTL of 255 on router A and accepting
packets with a TTL of 254 on router B allows for
the presence of a router C in the middle. That can't be good.
I suspect they set the limit to 254 because they expected to decrement
the
TTL on ingress (or that the box sending the packets would decrement on
send).
But neither common sense nor observations support this expectation.
You have an interesting point WRT the TTL 0. Perhaps if you receive
a packet with a TTL of 0 that is destined for yourself you should just
accept it?
The interesting thing is that packets with a TTL of 0 wouldn't
ordinarily be seen in the wild. A router won't forward a packet with a
TTL of 1 (as this becomes 0 during the forwarding process) and a host
that sends out packets with a TTL 0 can only expect to communicate on
the local subnet. (So I guess doing all of this with TTL 0 rather than
255 would have been just as effective.)
It is not clear to me exactly when you "have" to throw away the
packet (on ingress/themiddle/egress). I believe it is valid to accept
a
packet that is destined for yourself with a TTL of zero.
Agree.
Yet another interesting aspect: a Cisco won't forward a packet with a
TTL of 0:
Minimum Time to Live [1]: 0
Maximum Time to Live [30]: 4
Port Number [33434]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Type escape sequence to abort.
Tracing the route to 23.16.3.14
0 23.16.3.19 8 msec 0 msec 4 msec
1 23.16.3.19) 4 msec 4 msec 4 msec
2 23.16.3.14) 12 msec * 16 msec
So apparently a Cisco checks for TTL <= 1 on ingress when forwarding
rather than TTL == 0 on egress. How hard do we have to look before we
find a box that doesn't and accepts a packet with a TTL of 0 and then
emits this packet with a TTL of 255?
Since I have observed that packets received from some types of routers
have
their TTL set to 255 (on upon reaching the receiving device route
processor)
I would have to assume that the TTL is not being decremented for route
processor packets. Of course I was only playing with one router and
it may
be vendor dependant (the vendor was not Cisco).
In the (Free)BSD (4.9) code the TTL decrementing is done in the
ip_forward() function. (That is, unless IPSTEALTH is defined, in which
case the box doesn't bother.) Since many a router vendor borrowed code
from BSD it is likely most do it like this.
I am not sure that 254 is a good maximum number. Perhaps someone "in
the
know" can enlighten all of us as to why they chose to stop at 254
instead of
255.
Yes, that would be helpful.
Iljitsch
|