Hi Teemu,
I read your proposal and have been thinking about it. I'd like to share some of 
my thoughts as feedback for you.
My thoughts are a bit random and not well-organized.
They are also many in number. Sorry about that.

First let me say that I do see increased prevalence of network interfaces, 
entire physical devices, and other device resources that have "sleep modes". 
This is largely driven by regulatory requirements around the world to save 
energy, as well as increased energy costs causing consumers to want more energy 
efficient devices.
The main reason I hear from vendors who try to avoid implementing or defaulting 
to these energy saving modes is that of usability and user experience. People 
don't like it when devices just disappear from the network and they don't know 
why it's not reachable any longer.
So I think the problem you're trying to address is quite real.
Providing awareness that the cause of unreachability may be due to a sleeping 
interface is, IMO, a very useful way of lessening the usability problem.

But, I'm not convinced yet that this ICMPv6 code proposal will be able to 
provide such information reliably in enough instances, to make it worth the 
effort. Part of what I think I'd need to understand would be the use cases 
you're considering, where you believe this would be effective. 
I mostly think of this problem in the context of Consumer Electronics devices 
and usability inside the home network. So it's in the context of that use case 
that I'm unsure of how useful this would be.
If this is part of the use case you're considering, you might want to include 
homenet in your list of IETF WGs to consider. My experience with homenet 
suggests it has a number of individuals who know about physical CE devices, and 
the physical layer technologies of network interfaces used by CE devices. These 
are very good characteristics for people to have wrt this particular issue.

Some underlying complexities that make this issue hard (not exhaustively 
thought through):
- For the router to know that the network interface of a host has entered sleep 
mode, there must be some signaling that happens just before the network 
interface enters sleep mode. A number of physical layer technologies (PHYs) 
have defined such signaling, at PHY/link layer. The messages are PHY-specific, 
and do not get forwarded across PHY boundaries. For a router to see one of 
these messages, the router must have an interface on the same PHY as the host 
interface. If there is an intermediary bridge (e.g., from PHY to Ethernet) 
between the router and the PHY, the router will never see the message.
- Many interfaces enter sleep modes without sending any messages. This is 
particularly true of Ethernet interfaces and PHYs that have based their sleep 
mode behaviors on Ethernet. Routers know nothing about these interfaces being 
in sleep modes.
- Wi-Fi has great signaling for entering sleep modes. But the duration is 
usually ~200ms and the IP messages are buffered, so this ICMPv6 mechanism 
wouldn't be needed in this case.
- Interfaces that do longer sleep modes often take down their IP stack. They 
re-acquire IP addresses when re-awakening. If the IP address of interest 
happens to be based on info that changes with every IP address re-acquisition 
(e.g., temporary or "privacy" addresses), they will not be using the same IP 
address when they come back up. It would be undesirable in this case for the 
router to respond to ICMP messages for the old address with an indication that 
the interface is asleep.
- It's possible that the interface did initially enter a sleep mode, but that 
the device was subsequently totally powered down and removed from the network. 
At some point, the router would need to stop saying the IP interface was asleep 
and would need to say the IP address was unreachable. It's not clear at what 
point or how the router decides its info about the interface sleep state is 
stale.

Alternate approaches:
There are other possibilities for achieving the goal, but they require higher 
layer protocol activity, higher layer apps, and a more stateful awareness on 
the part of these apps.
For example, UPnP just published a new DCP 
(http://upnp.org/specs/lp/energymanagement1/) that allows devices to get info 
about a host's network interfaces, such as whether or not the interface is 
configured to enter a sleep mode, whether such an interface is externally 
wakeable when it's sleeping, what bit pattern might succeed in waking it, how 
long it might take for the device to be reachable on that interface after the 
bit pattern is received, whether the interface is set to automatically 
re-awaken, how long the interface sleeps before auto-awakening, IP addresses 
and MAC address associated with the interface [if the IP stack is currently 
up], and some other stuff. The DCP also allows for this info to be proxied by 
other devices, so when the host is unreachable, it's still possible to discover 
this info.
The intent is to give an application the ability to recognize that there is a 
strong possibility that a host's unreachability is due to a sleep mode, because 
the network interface was known to be configured to enter one. Knowledge of a 
wake-up bit pattern might also prove useful.
It would be possible to make this same xml info available using DNS-SD and/or 
mDNS to discover that a device has this info available.
But this may only be useful inside an intranet (e.g., home network, SOHO net) 
and not a good approach across the Internet. 
BTW, if you're interested in pursuing this alternative approach, I've already 
had discussions with some people about maybe starting a homenet activity to 
define what would be needed for a usable industry-common approach for "how to 
get various device info, from other devices inside the 'home' network, 
expressed in xml". I've even started a draft outline, and was hoping to flesh 
it out and upload it in the not too distant future. I hadn't been thinking 
about including this sort of interface info in my first iteration, but would be 
happy to add it. So if you are interested in this alternate approach, let me 
know.
Barbara


> -----Original Message-----
> From: ipv6-boun...@ietf.org [mailto:ipv6-boun...@ietf.org] On Behalf Of
> teemu.savolai...@nokia.com
> Sent: Tuesday, September 10, 2013 5:42 AM
> To: ipv6@ietf.org
> Subject: ICMPv6 Destination at Sleep
> 
> Hi,
> 
> I have drafted an I-D about ICMPv6 code for explicitly indicating destination
> node to be at sleep ("Destination at sleep") and thus being unreachable
> (sleep lasting longer than is practical to buffer a packet). The intent is to 
> allow
> upper layers (such as TCP) and applications to behave more wisely than if
> receiving only ICMPv6 Code "address unreachable" (or nothing, if packet is
> silently dropped due sleep).
> 
> I would like to solicit 6man for feedback.
> 
> This might be something for 6lo as well, but I have not intended this for very
> low power use-cases only, but for any kind of case where destination is in
> some kind of sleep mode and thus unable to receive packets.
> 
> The I-D itself is here: http://tools.ietf.org/id/draft-savolainen-6man-icmp-
> destination-sleeping-00.txt
> 
> Best regards,
> 
>       Teemu
> --------------------------------------------------------------------
> IETF IPv6 working group mailing list
> ipv6@ietf.org
> Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6
> --------------------------------------------------------------------
--------------------------------------------------------------------
IETF IPv6 working group mailing list
ipv6@ietf.org
Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6
--------------------------------------------------------------------

Reply via email to