I’m not sure I understand your comment.

I believe I just showed you how SRP does work in the existing draft. If I’ve 
somehow mis-understood how SRP works, please let me know.

Tom

> On Aug 26, 2018, at 10:48 PM, Ted Lemon <mel...@fugue.com> wrote:
> 
> SRP has to work.   We updated the DNS update lease spec to account for the 
> different lease times; there may be further work to do there.   But the lease 
> on the name and service instance name KEY records has to be able to be 
> different than the lease on the other data—we want that data to expire 
> quickly, but for the KEY to stick around for a while so that the name can't 
> be claimed by a rogue service just because e.g. the printer is powered off 
> right now.
> 
>> On Aug 26, 2018, at 10:22 PM, Tom Pusateri <pusat...@bangj.com> wrote:
>> 
>> 
>>> On Aug 26, 2018, at 8:12 PM, Ted Lemon <mel...@fugue.com> wrote:
>>> 
>>> The timeout isn't the same for DNSSD Registration Protocol.
>> 
>> Ok, this is a little detailed but let's take what the current draft says and 
>> be explicit about your particular SRP case. I think I am representing SRP 
>> correctly but if not, please correct me.
>> 
>> <srp>
>> [1. One thing that’s not clear about SRP is if the same host registers more 
>> than one service, does your particular form of UPDATE (which isn’t standard 
>> UPDATE) have to contain the same A and/or AAAA records in both registrations 
>> and if so, what is the server to do about different lifetimes?]
>> [2. Also, does SRP recommend including PTR records for name registrations of 
>> A & AAAA names? It doesn’t appear to but should it?]
>> [3. I think you’re going to run into trouble having non-standard UPDATE 
>> rules.]
>> (These are separate discussions about SRP for another forum and if you want 
>> to follow up on these, we should follow up on the dns-sd list.)
>> </srp>
>> 
>> At the end, I’ll do the more simple case of just A & AAAA records.
>> 
>> Let’s assume 3 clients, all with the same service type (different service 
>> types will have different owner names). We will use _ipp._tcp.example.com as 
>> an example.
>> 
>> Client A sends a registration at time Ta with lease life L1a for PTR, SRV, 
>> A, AAAA, TXT records, lease life L2a for KEY record.
>> Client B sends a registration at time Tb with lease life L1b for PTR, SRV, 
>> A, TXT records (no AAAA), lease life L2b for KEY record.
>> Client C sends two different instances of the same service (different 
>> instance names) at time Tc with lease life L1c for PTR, SRV, A, AAAA, TXT 
>> records, lease life L2c for KEY record.
>> 
>> Client A’s UPDATE contains:
>> 
>> _ipp._tcp.example.com PTR p1._ipp._tcp.example.com
>> p1._ipp._tcp.example.com SRV 0 0 631 p1.example.com
>> p1._ipp._tcp.example.com TXT paper=A4
>> p1.example.com  A  192.0.2.1
>> p1.example.com  AAAA  2001:db8::1
>> p1.example.com  KEY “key material here"
>> 
>> Client B's UPDATE contains:
>> 
>> _ipp._tcp.example.com PTR p2._ipp._tcp.example.com
>> p2._ipp._tcp.example.com SRV 0 0 631 p2.example.com
>> p2._ipp._tcp.example.com TXT paper=A4
>> p2.example.com  A  192.0.2.2
>> p2.example.com  KEY “key material here”
>> 2.2.0.192.in-addr.arpa.                       PTR   p2.example.com.
>> 2.0.0.0.0.0.0.0.0.0.0.0.b8.0d.01.20.ip6.arpa. PTR   p2.example.com. (using 
>> bytes instead of nibbles for compactness)
>> 
>> Client C's UPDATE contains two services at the same time with the same lease 
>> lifes:
>> 
>> _ipp._tcp.example.com PTR p3._ipp._tcp.example.com
>> p3._ipp._tcp.example.com SRV 0 0 631 p3.example.com
>> p3._ipp._tcp.example.com TXT paper=A4
>> p3.example.com  A  192.0.2.3
>> p3.example.com  AAAA  2001:db8::3
>> p3.example.com  KEY “key material here”
>> 
>> _ipp._tcp.example.com PTR p4._ipp._tcp.example.com
>> p4._ipp._tcp.example.com SRV 0 0 631 p4.example.com
>> p4._ipp._tcp.example.com TXT paper=A4
>> p4.example.com  A  192.0.2.4
>> p4.example.com  AAAA  2001:db8::4
>> p4.example.com  KEY “key material here”
>> 
>> The TIMEOUT records on the server would look like the following:
>> (owner_name TIMEOUT count algorithm expire hash_list, count algorithm expire 
>> hash_list, etc.)
>> 
>> _ipp.tcp.example.com TIMEOUT 1 1 Ta+L1a (#hash for p1._ipp._tcp.example.com 
>> PTR record)
>>                            1 1 Tb+L1b (#hash for p2._ipp._tcp.example.com 
>> PTR record)
>>                            2 1 Tc+L1c (#hash for p3._ipp._tcp.example.com 
>> PTR record) (#hash for p4._ipp._tcp.example.com PTR record)
>> 
>> p1._ipp._tcp.example.com TIMEOUT 0 0 Ta+L1a
>> 
>> p2._ipp._tcp.example.com TIMEOUT 0 0 Tb+L1b
>> 
>> p3._ipp._tcp.example.com TIMEOUT 0 0 Tc+L1c
>> 
>> p4._ipp._tcp.example.com TIMEOUT 0 0 Tc+L1c
>> 
>> p1.example.com  TIMEOUT  2 1 Ta+L1a (#hash for 192.0.2.1 A record) (#hash 
>> for 2001:db8::1 AAAA record)
>>                        1 1 Ta+L2a (#hash for p1.example.com KEY record)
>> 
>> p2.example.com  TIMEOUT  1 1 Tb+L1b (#hash for 192.0.2.2 A record)
>>                        1 1 Tb+L2b (#hash for p2.example.com KEY record)
>> 
>> p3.example.com  TIMEOUT  2 1 Tc+L1c (#hash for 192.0.2.3 A record) (#hash 
>> for 2001:db8::3 AAAA record)
>>                        1 1 Tc+L2c (#hash for p3.example.com KEY record)
>> 
>> p4.example.com  TIMEOUT  2 1 Tc+L1c (#hash for 192.0.2.4 A record) (#hash 
>> for 2001:db8::4 AAAA record)
>>                        1 1 Tc+L2c (#hash for p4.example.com KEY record)
>> 
>> 2.2.0.192.in-addr.arpa.                       TIMEOUT 0 0 Tb+L1b
>> 2.0.0.0.0.0.0.0.0.0.0.0.b8.0d.01.20.ip6.arpa. TIMEOUT 0 0 Tb+L1b (using 
>> bytes instead of nibbles for compactness)
>> 
>> 
>> So, in general, for any one service registration without PTR records for 
>> addresses, you will create:
>> 3 TIMEOUT records, 2 with a hash and 1 without a hash
>> 
>> or with PTR records for names included, you will create:
>> 5 TIMEOUT records, 2 with a hash and 3 without a hash.
>> 
>> 
>> For the simpler case, a host sending a name registration at time Tn for A & 
>> AAAA records with lease lifetime Ln would have an UPDATE that contains:
>> 
>> name_n.example.com                            A     192.0.2.5
>> name_n.example.com                            AAAA  2001:db8::5
>> 5.2.0.192.in-addr.arpa.                       PTR   name_n.example.com.
>> 5.0.0.0.0.0.0.0.0.0.0.0.b8.0d.01.20.ip6.arpa. PTR   name_n.example.com. 
>> (using bytes instead of nibbles for compactness)
>> 
>> None of the 3 TIMEOUT records on the server would contain a hash:
>> 
>> name_n.example.com                            TIMEOUT 0 0 Tn+Ln
>> 5.2.0.192.in-addr.arpa.                       TIMEOUT 0 0 Tn+Ln
>> 5.0.0.0.0.0.0.0.0.0.0.0.b8.0d.01.20.ip6.arpa. TIMEOUT 0 0 Tn+Ln (using bytes 
>> instead of nibbles for compactness)
>> 
>> 
>> Hope this makes things more clear.
>> 
>> Tom
>> 
>> 
>> 
> 
> _______________________________________________
> DNSOP mailing list
> DNSOP@ietf.org
> https://www.ietf.org/mailman/listinfo/dnsop

_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop

Reply via email to