Re: [Webpush] Time to live for push messages

Martin Thomson <martin.thomson@gmail.com> Sat, 21 February 2015 22:33 UTC

Return-Path: <martin.thomson@gmail.com>
X-Original-To: webpush@ietfa.amsl.com
Delivered-To: webpush@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2423A1A00F6 for <webpush@ietfa.amsl.com>; Sat, 21 Feb 2015 14:33:05 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0QWcPeG2Wa-2 for <webpush@ietfa.amsl.com>; Sat, 21 Feb 2015 14:33:03 -0800 (PST)
Received: from mail-oi0-x236.google.com (mail-oi0-x236.google.com [IPv6:2607:f8b0:4003:c06::236]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 396021A004B for <webpush@ietf.org>; Sat, 21 Feb 2015 14:33:03 -0800 (PST)
Received: by mail-oi0-f54.google.com with SMTP id v63so8153725oia.13 for <webpush@ietf.org>; Sat, 21 Feb 2015 14:33:02 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=IRhe8cYPArsVk87b6fgXvrHmUHrASYcwyuiUpEULjmw=; b=f4jyWVgS6nOqQaJo9P2LcHC2NiltCb9FsVYqMIGpJgUyBRrHO3oyNyDf8cgA0ecS0s 37vlhZWT49kQ220Vi9SrzZ2hMyz0qgiT2V1V0ZEjC0V8XxOKVdLLndFuOIM7afg/z2vq PfIa8jEyykxbr73fD8AIbwbrtl+UpUrDsZBWCg/cgfLaEA8hLu7v2DZXpHxEm3WhyLTi cbeKBAnnGfU7oJXQec2Ww9Zo2GxvjVbbjEXagCaXtc+794mHDqFI3i28b2KwqX8uvDQQ PWHZ3T9EhhBB6yOoSW+FFdzZ//+PCXZ7smPnx3+6ES+BPO+h2S7BPegaPz4CcTC6MA2m 7rXA==
MIME-Version: 1.0
X-Received: by 10.60.92.5 with SMTP id ci5mr2808017oeb.26.1424557982497; Sat, 21 Feb 2015 14:33:02 -0800 (PST)
Received: by 10.202.225.135 with HTTP; Sat, 21 Feb 2015 14:33:02 -0800 (PST)
In-Reply-To: <CAP8-FqnORx-Fd5E4vR0CWN=n8JHK81iCwdqAovZr5276ADWDVQ@mail.gmail.com>
References: <CABkgnnX6rGfY99YX1RC+mxwAsVw0=gC1wjyZGCpZ3h+QQntehA@mail.gmail.com> <CAP8-FqnORx-Fd5E4vR0CWN=n8JHK81iCwdqAovZr5276ADWDVQ@mail.gmail.com>
Date: Sun, 22 Feb 2015 11:33:02 +1300
Message-ID: <CABkgnnUZEVazYFg0bv5a1gyjuRLgxXQ7NiPpy-fKXPo7SdNyag@mail.gmail.com>
From: Martin Thomson <martin.thomson@gmail.com>
To: Costin Manolache <costin@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Archived-At: <http://mailarchive.ietf.org/arch/msg/webpush/Q1THDu3m-m18REgw1__YINAsbpM>
Cc: "webpush@ietf.org" <webpush@ietf.org>
Subject: Re: [Webpush] Time to live for push messages
X-BeenThere: webpush@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Discussion of potential IETF work on a web push protocol <webpush.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webpush>, <mailto:webpush-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/webpush/>
List-Post: <mailto:webpush@ietf.org>
List-Help: <mailto:webpush-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webpush>, <mailto:webpush-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 21 Feb 2015 22:33:05 -0000

On 22 February 2015 at 06:53, Costin Manolache <costin@gmail.com> wrote:
> For option A: the format in RFC4918 is "Infinite | Second-1234".
> Unless 'infinite' is defined to be few weeks - it is going to be hard to
> support.
> I think using seconds instead of absolute value is very good.

It is customary for the server to have the ultimate authority on what
the timeout actually is.  A requested timeout of Infinite is always
going to be shorter anyway, and if the client asks for a month and the
server can only do a minute, then it will be a minute.

The only question there is how much value there is in having the
server notify the client about the actual timeout.  I guess if a
server refuses to store for a particular duration, a client could be
forced to retry for that duration.

> RFC3261 (SIP) uses ';ttl=12' as a URI parameter - without the constant
> "Second-".
> I would personally prefer this option.

The format is unnecessarily clunky, I agree.

> "Expires" header is another option.

I considered that at some length and rejected it for two reasons:

Expires only has defined semantics related to the cacheability of HTTP
responses.  Using Expires in a request context, even for a PUT (maybe
even especially for a PUT) is well outside its original definition.

Also, Expires uses an absolute time and clock skew has proven to be a
major issue.  In theory, an absolute time can be more precise, but
most uses for a TTL are on short timescales where clock skew can
dominate.  At least with a relative time, transit times can be
accounted for.

> An important decision is if the ttl (and other timestamps)
> need to be sent to the device and authenticated or it is going to
> be dropped or modified during transport.

As I alluded to in my first email, I think that the primary value of a
TTL parameter is where the push service uses the value.  Once the push
hits the user agent, it's value is greatly diminished.

Of course, there is nothing wrong with having the push message itself
contain time-based information that is consumed by the application.

> Another complication may be the case the message is
> forwarded multiple times, there are few cases where
> this may become necessary.

If you are required to forward the message, that's an internal detail
of the push service and I'd expect that you would account for any
elapsed time there.  You could, for instance, convert a relative time
into an absolute time for internal consumption, knowing that your
servers have good time synchronization.