Re: [homenet] shncpd and Router Advertisements, comments on hncp-06

2015-07-14 Thread james woodyatt
On Jul 13, 2015, at 04:28, Juliusz Chroboczek  
wrote:
> 
> Last night, shncpd learned to send RAs.  It was a lot of fun.

Bravissimo!

—james

___
homenet mailing list
homenet@ietf.org
https://www.ietf.org/mailman/listinfo/homenet


Re: [homenet] shncpd and Router Advertisements, comments on hncp-06

2015-07-13 Thread Brian E Carpenter
On 14/07/2015 10:26, Lorenzo Colitti wrote:
> On Jul 13, 2015 12:28, "Juliusz Chroboczek" 
> wrote:
> 
>>   - I'm setting the A flag even for prefix lengths different from /64,
>> which is a reasonable thing to do according to my reading of RFC 7421.
> 
> What's the point of sending A=1 with a prefix length that's not 64?

Heh heh. That's part of why we wrote RFC7421.

Architecturally, A=1 and prefix length =N is perfectly fine, if and only
if all SLAAC-capable nodes on the link know how to generate an IID
of length 128-N.

In the real world this only works for N=64 today. afaik, there is no way
to negotiate a different value. IMHO it would have to be pre-configured
in every node on the link, but architecturally Juliusz is correct.

 Brian

___
homenet mailing list
homenet@ietf.org
https://www.ietf.org/mailman/listinfo/homenet


Re: [homenet] shncpd and Router Advertisements, comments on hncp-06

2015-07-13 Thread Lorenzo Colitti
On Jul 13, 2015 12:28, "Juliusz Chroboczek" 
wrote:

>   - I'm setting the A flag even for prefix lengths different from /64,
> which is a reasonable thing to do according to my reading of RFC 7421.

What's the point of sending A=1 with a prefix length that's not 64?
___
homenet mailing list
homenet@ietf.org
https://www.ietf.org/mailman/listinfo/homenet


Re: [homenet] shncpd and Router Advertisements, comments on hncp-06

2015-07-13 Thread Juliusz Chroboczek
> Didn't we have a thread on 7.2 a few days ago, already?
> At least I feel like having a slight deja-vu replying.

That was before I started implementing, while these are my conclusions
after implementing.  Obviously, there's a lot of overlap.

Sorry if I'm spamming, but I've been criticised before for having private
discussions without CC-ing half the universe.  TINC.

> Please read into 7084, Section 7.2 will hopefully go away entirely.

Not a good idea, 7.2 is fairly easy to read and comprehend, 7084 is a mess
of mostly irrelevant recommendations with no rationale.  I recommend
keeping it, but making it clear that these are informative recommendations
and that The Truth is in 7084.

>>  (1) Does that mean a default route advertised in the Homenet routing
>>  protocol, or do non-Homenet default routes count?

> All do, imagine you are the only (edge) router and your default route
> comes from your ISP via RAs.

Then you should be advertising this route over the routing protocol, no?

> Snooping the IGP is not an option. You may not even run an IGP,
> e.g. if you are an isolated node with only ISP and client connectivity.

In Section 11 you say

o It MUST implement and run a routing protocol appropriate for the
  given link type on all of the interfaces it sends and receives
  HNCP traffic on.

Obviously, you could be speaking HNCP on an empty set of interfaces, but
that's not a case I'm going to loose much sleep on.

-- Juliusz

___
homenet mailing list
homenet@ietf.org
https://www.ietf.org/mailman/listinfo/homenet


Re: [homenet] shncpd and Router Advertisements, comments on hncp-06

2015-07-13 Thread Steven Barth

> The implementation is different from what is mandated by -06, for a few
> reasons.  As usual, I'd like people to comment whether I'm being silly or
> whether some of the MUSTs in the draft can become SHOULDs or even MAYs.
> Note that I haven't checked RFC 7084 yet [2].
Didn't we have a thread on 7.2 a few days ago, already?
At least I feel like having a slight deja-vu replying. Anyway.

Please read into 7084, Section 7.2 will hopefully go away entirely.
We already refer to 7084 and that section just duplicates some
parts of it thus it is mainly redundant.

In the end I think v6ops is the more appropriate address for most
of these discussions anyway. I will reply with what the change
would be, if we default back to 7084 behavior.

>
>  - Since I don't implement DHCPv6, I'm not setting the "O" flag; for some
>reason, Section 7.2 says that this flag MUST be set.
O flag will be up to the implementor, if the router supports stateful
dhcpv6 both M and O flags are SHOULD.

Personal note: AFAIK statelss DHCPv6 is the only way for Windows
to receive DNS servers for IPv6.

>  - I always set a non-zero default router lifetime, which is clearly
>wrong.  Section 7.2 says that this flag MUST be set when a default
>route is "known in the HNCP network".  This requirement, or at least
>its formulation, has multiple issues to my eyes:
>
>  (1) Does that mean a default route advertised in the Homenet routing
>  protocol, or do non-Homenet default routes count?
All do, imagine you are the only (edge) router and your default route
comes from your ISP via RAs.

>  (2) How do you define a default route in the presence of source-
>  specific routing?
Maybe this should be discussed in v6ops?

>  (3) This requires either monitoring the kernel's routing tables or
>  snooping the routing protocol, and this is the only place in HNCP
>  that imposes such a requirement; it is a pity to add that sort of
>  incestuous interaction between protocols just for this single
>  feature.
Snooping the IGP is not an option. You may not even run an IGP,
e.g. if you are an isolated node with only ISP and client connectivity.
>  (4) A routing protocol can have hiccups at a faster rate than what
>  RFC 4861 is designed to handle.  For example, babeld in its
>  default configuration will react to a newly discovered wired link
>  within 2s, and to a lost link within 6s.  You don't want to flap
>  your RAs every 4s on average.
>
> I think a better solution is needed.  I'm planning to declare myself
> a default router whenever I know of an IPv6 delegated prefix that's
> not a ULA, and hope for redirects to fix any resulting issues.
As noted, the requirement came from 7084.

>   - I'm setting the A flag even for prefix lengths different from /64,
> which is a reasonable thing to do according to my reading of RFC 7421.
> HNCP says that it should be done "whenever the prefix is suitable for
> stateless configuration", whatever that means.
7084 says A and L MUST be set by default, though I think
that RFC only deals with /64 assignments in its pure version.

>
>   - Section 7.2 says that the RDNSS option must have "appropriate
> contents".  What's appropriate?  Should I merge all of the DHCP6-DATA
> TLVs that I've seen, should I merge just the ones from external
> connections that have delegated prefixes that I'm using for IPv6
> assignments, or should I pick just one DHCPv6-DATA section?  I'm
> currently merging everything, not even checking for duplicates.
>
>   - I'm not sending a DNS Search List, although the spec tells me I SHOULD,
> since (1) I hate DNS search lists (shortcuts should be done in the
> application, not in the resolver), and (2) the spec doesn't tell me how
> to build a suitable DNS search list.
7084 says the router MUST support providing the option,
nothing about the contents.

Btw. HNCP mentions search domains in 8.1 but this is only a special case.

>
>   - I'm not doing the router preference (RFC 4191) dance, since I don't
> understand how it interacts with multihomed hosts.  (For single-homed
> hosts it's irrelevant, since redirects will make things right.)
> I also generally prefer the hosts, not the routers, to be smart (think
> MP-TCP, think MP-Mosh, think MP-Kademlia [3]).
Yes, with the default to 7084 this would be gone anyway.


___
homenet mailing list
homenet@ietf.org
https://www.ietf.org/mailman/listinfo/homenet


Re: [homenet] shncpd and Router Advertisements, comments on hncp-06

2015-07-13 Thread Juliusz Chroboczek
>  - I always set a non-zero default router lifetime, which is clearly
>wrong.  Section 7.2 says that this flag MUST be set when a default
>route is "known in the HNCP network".  This requirement, or at least
>its formulation, has multiple issues to my eyes:

I've changed my mind.  This is a reasonable hing to do.  I suggest some
minor tweaks:

  - replace "a default route" by "a (possibly source-specific) default route";

  - add a note saying that hysteresis SHOULD be applied, i.e. that
a router SHOULD continue announcing itself as a default router for
a short time after the last default route has been retrated by the
routing protocol, in case it comes back.

-- Juliusz


___
homenet mailing list
homenet@ietf.org
https://www.ietf.org/mailman/listinfo/homenet


[homenet] shncpd and Router Advertisements, comments on hncp-06

2015-07-13 Thread Juliusz Chroboczek
Last night, shncpd learned to send RAs.  It was a lot of fun.

Having RAs in the same process as HNCP makes it easy to announce/retract
routes in a timely manner.  RAs cost some 400 lines of code (including the
silly RDNSS bits), which brings shncpd to slightly over 3000 lines.  For
pure IPv6 operation, the only external requirement is babeld; for double-
stack, you'll need an external DHCPv4 server [1].

The implementation is different from what is mandated by -06, for a few
reasons.  As usual, I'd like people to comment whether I'm being silly or
whether some of the MUSTs in the draft can become SHOULDs or even MAYs.
Note that I haven't checked RFC 7084 yet [2].

 - Since I don't implement DHCPv6, I'm not setting the "O" flag; for some
   reason, Section 7.2 says that this flag MUST be set.

 - I always set a non-zero default router lifetime, which is clearly
   wrong.  Section 7.2 says that this flag MUST be set when a default
   route is "known in the HNCP network".  This requirement, or at least
   its formulation, has multiple issues to my eyes:

 (1) Does that mean a default route advertised in the Homenet routing
 protocol, or do non-Homenet default routes count?

 (2) How do you define a default route in the presence of source-
 specific routing?

 (3) This requires either monitoring the kernel's routing tables or
 snooping the routing protocol, and this is the only place in HNCP
 that imposes such a requirement; it is a pity to add that sort of
 incestuous interaction between protocols just for this single
 feature.

 (4) A routing protocol can have hiccups at a faster rate than what
 RFC 4861 is designed to handle.  For example, babeld in its
 default configuration will react to a newly discovered wired link
 within 2s, and to a lost link within 6s.  You don't want to flap
 your RAs every 4s on average.

I think a better solution is needed.  I'm planning to declare myself
a default router whenever I know of an IPv6 delegated prefix that's
not a ULA, and hope for redirects to fix any resulting issues.

  - I'm setting the A flag even for prefix lengths different from /64,
which is a reasonable thing to do according to my reading of RFC 7421.
HNCP says that it should be done "whenever the prefix is suitable for
stateless configuration", whatever that means.

  - Section 7.2 says that the RDNSS option must have "appropriate
contents".  What's appropriate?  Should I merge all of the DHCP6-DATA
TLVs that I've seen, should I merge just the ones from external
connections that have delegated prefixes that I'm using for IPv6
assignments, or should I pick just one DHCPv6-DATA section?  I'm
currently merging everything, not even checking for duplicates.

  - I'm not sending a DNS Search List, although the spec tells me I SHOULD,
since (1) I hate DNS search lists (shortcuts should be done in the
application, not in the resolver), and (2) the spec doesn't tell me how
to build a suitable DNS search list.

  - I'm not doing the router preference (RFC 4191) dance, since I don't
understand how it interacts with multihomed hosts.  (For single-homed
hosts it's irrelevant, since redirects will make things right.)
I also generally prefer the hosts, not the routers, to be smart (think
MP-TCP, think MP-Mosh, think MP-Kademlia [3]).

Thanks for your attention.

[1] It is not yet clear to me how to integrate DHCPv4 in the highly
dynamic environment that we're building.  What should happen to
existing leases when a prefix disappears or when we lose an election?
It is also not clear whether it's better to have DHCPv4 in the shncpd
process, or to use an external daemon and communicate with it using
ASN.1 encoded in Baudot code over Unix domain sockets, OpenWRT-style.

[2] The number of distinct RFCs and drafts that you need to read in order
to implement HNCP is frightening.

[3] http://bittorrent.org/beps/bep_0045.html
This is implemented in Vuze, and I spent some time telling the author
about source-specific routing.

-- Juliusz

___
homenet mailing list
homenet@ietf.org
https://www.ietf.org/mailman/listinfo/homenet