By the way, the SRP case looks messy because SRP chooses to have different 
lease lifetimes for KEY records. If the lease lifetimes were all the same, as I 
would expect for most UPDATES, everything would be simpler.

Tom

> 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

Reply via email to