Taskforce Mobility Mailarchive
|
Subject |
Re: loop detection, current state |
|
From |
Stig Venaas <stig.venaas@xxxxxxxxxx> |
|
Date |
Thu, 14 Aug 2008 17:05:28 +0200 |
Stefan Winter wrote:
Hello,
some time has passed after the last TF-Mobility meeting. Meanwhile, I've
been negotiating what can be done and would like to present the options
so far.
I'll comment from radsecproxy perspective.
- check incoming IP != outgoing IP. This is similar to what we do in
RADIUS right now. It only detects a loop if a tight sub-loop (direct
bounces) is present within the loop. Can not distinguish between
multiple instances on one IP address. This is not doable in a completely
dynamic setup right now - there were some suggestions from OSC how to do
it in AuthBy DNSROAM or ServerRADSEC clauses, but only if one end of the
connection has a list of IPs - which is not the case in a dynamic setup.
Implementing this should be rather easy though.
- check cert of incoming != cert of outgoing. Same restriction to tight
loops. Can distinguish between multiple instances, assuming that
different instances use different certificates. Is not implemented yet,
but might be easy to do.
Can be configured to do the two above.
- introduce attribute with a TTL and count down, if 0 discard. Can
detect all kinds of loops. Attribute definition is easy, we have a
eduroam-Loop-TTL attribute assigned (within the Dante PEN). Requires
arithmetics in proxy hops to decrement attribute. That may be a bit
clumsy to implement, and I'm not sure if we get support in mainstream
servers.
I like this one and it's easy to implement. It needs additional code but
nothing complicated. It will help solve the problem if at least one
proxy in the loop supports it.
- count number of Proxy-State attributes, if too high, discard. Proposed
by Alan DeKok. Can detect all kinds of loops. Doesn't need any new
attribute. Still needs arithmetics in servers. Is not quaranteed to work
in all environments. That is because: 1) a proxy may choose not to add
its own Proxy-State (thereby not incrementing the count); 2) a proxy may
take all Proxy-State attributes out of the packet, store them statefully
and re-inject them when the packet comes back. According to Alan these 2
things are not as discouraging as they sound: *most* servers add
Proxy-State, and *most* leave them untouched.
radsecproxy does not add them, but does leave them untouched. So far
there has been no good reason (AFAICT) for radsecproxy to add any. The
main problem with adding them is increased message size (MTU). This also
is more complex to implement than the TTL. I think this is a bad idea.
Stig
As you can see from above, none of the options is all-roses. We might go
for a combination of them. Let's see.
Greetings,
Stefan Winter