"EnTerr" wrote:
How about google-ing a little, here is Sonos listing routers with multicast issues, here is Chromecast and HDHomeRun - both give work-arounds for most routers -
Yep, saw those long ago... and don't 100% trust the content due to entries that are outdated or were provably incorrect from the outset.
And note, I've been drawing a distinction between routers that have SSDP support turned off in the config vs those that have removed support (or have a broken implementation).
That's something those lists seem to be a bit loose on in their language.
"EnTerr" wrote:
yet both list SMCD3GNV as hopeless ("broken and will block this traffic regardless of what configuration options are set").
Yeah, saw that one a while ago as well.
Can't prove it since I've never had access to that specific model, but I suspect the issue with the SMCD3GNV is that it's admin interface is not publicly documented, and has some hard to find or miss-labeled setting (I've dealt with other SMC routers many times, and that has been the case on more than one occasion). I do know other SMC router models support multicast as long as the config settings are correct.
"EnTerr" wrote:
If you want to dig the Actiontec case, i seem to recollect now that to have that configurable setting in UI, one had to have the right firmware - and that had to be pushed by Qwest, since PK5000 being DSL combo is provisioned by the ISP. Which Qwest would not do at the time. Chromecast Help puts it vaguely: "ActionTec Routers may not support the multicast protocol, which your network must have to detect your Chromecast. If multicast is available, you need to..."
If I recall correctly, that was both a poor config and a "hidden" config UI issue combined, which eventually got resolved - the firmware versions that had the problem did have the config UI for the settings, but there was no link into the screen from any other screen (and so not obvious that the setting UI did exist), so the URL to the needed screen had to be entered manually. Someone managed to find and publish that URL last year or the year before.
"EnTerr" wrote:
Case #1 is real.
OK, so at the very least, you agree this case means that automatic timed expiration or manual removal (or both) has to exist to prevent the polluted list issue, right?
"EnTerr" wrote:
Case #2 is a straw-man: SSDP with new IP will have to get lost 3 times in a row (assuming current TTL of 60 mins and renewal every 20) and even then it will "magically" fix itself on the 4th (or N+1) time.
Not quite - all it takes is to miss the SSDP broadcast twice (once per introduction to the network with a new manually entered IP in eclipse) to orphan the first IP.
Once the first IP addy is orphaned, without a default expiration for manual entry, it's toast - no "magical fix" except for DHCP re-use (or manual static assignment) of that address.
"EnTerr" wrote:
But if network conditions are really so bad that multiple datagrams get dropped - that would mean you cannot trust "radio silence" to expire IPs.
Right, hence the ability to manually enter IP addresses (that get a default timeout value) as a workaround for the rare network (or temporary situation) where that's an issue.
For those boxes that were discovered when SSDP was being received, the SSDP spec is clear that a client impl is supposed to remove the cache entry after the expiration, unless a new broadcast or M-Search query response is received (the fact that they may not be received is implicit in the selection of both UDP and multicast as part of the protocol definition).
"EnTerr" wrote:
P.S. Oh i see S/N worried you, that's real... but one can collect that from UPnP descriptor at http://IP:8060/ 8-)
Excellent point - completely forgot that that info is available from the ECP/REST endpoint on the box.
BTW, is that documented somewhere? I remember accidentally discovering this a while back, but I don't see it documented in the current ECP guide.
"EnTerr" wrote:
It seems clear - you really, really, really like the way you expire the IPs in your plugin...
No - but since the plugin is using SSDP to simplify discovery, it's following the IETF spec (which says a client implementation should remove devices from it's cache when the expiration time is reached).
As I've said, the ability to explicitly remove IP addresses that were manually entered is an enhancement request I'd gladly file for anyone using the plugin that thinks they need it. So far, no one has.
And BTW, the decision of what to add or change in the plugin is not mine - my contact at Roku makes those decisions, and he tends to err on the side of not allowing changes, however minor, unless there's a clear and notable benefit for the majority of plugin users.
"EnTerr" wrote:
And there are probably what - about hundred people? (3-digit number anyway) - using said plugin. The chance of encountering the issue is low and those are people you can ask to play with router config or replace it. It's manageable. However, if you have tens of thousands of users to your app, that's not the right approach - and if you have over a MILLION users (which is the case with RokuCo mobile apps), that'd be absurd. Oh, and the level of sophistication of those users is far removed from a developer's, i can share as much.
Yep, agreed - they are a notably different set of constraints given the size and technical expertise of the audience.
Although I'd argue that an end-user environment where UPnp isn't working is a problem that needs to be solved, not punted (by the end-user or by their equipment provider), and not just for the sake of Roku - there are plenty of other consumer devices and software that rely on that protocol combo, and it's not going away anytime soon. A multicast/SSDP/UPnp problem will likely rear it's ugly head for those users, in other contexts, until fixed.
So far, this aspect of the plugin implementation has only been a minor irritant for a very small number of devs that have a latent networking problem.
Nevertheless, if it were solely up to me and I felt free to ignore the cost/benefit ratio...
I'd tighten up this aspect of the implementation a bit by adding: the aforementioned manual removal capability, user pref for the timeout for manually entered items (including infinite timeout), and the ECP query you mentioned above, just to cover all the bases.
Cheers