[slim] Re: Synchronization should use fine-grained network clock

2006-01-08 Thread mikew

In order to maintain sub-ms clock accuracy, ntp requires significant
support from the host operating system, which the squeezeboxen may not
have in place. Under linux, there is an entire kernel process devoted
to system time, with a corresponding API for slewing the time in a
gapless fashion to maintain a highly accurate system time (which is NOT
based on the RTC, but the processor clocks while the system is
running--the RTC is read/set only on system startup/shutdown). ntp may
have impose too much overhead for small embedded devices; not positive
though.


-- 
mikew

mikew's Profile: http://forums.slimdevices.com/member.php?userid=3250
View this thread: http://forums.slimdevices.com/showthread.php?t=19466

___
Discuss mailing list
Discuss@lists.slimdevices.com
http://lists.slimdevices.com/lists/listinfo/discuss


[slim] Re: Synchronization should use fine-grained network clock

2006-01-07 Thread seanadams

Michaelwagner Wrote: 
> 
> 
> Across a hub, propegation is essentially instantaneous. 
> 
> Across a switch, there is a very tiny delay and the potential of a
> longer one if there is interfering traffic on the other side of the
> switch. I don't know if there is a promise by the protocol to limit the
> delay to a level where it would be insignificant for this use. 
> 
> Across a wireless access point? I expect all bets are off. I'm not sure
> multicast will offer any advantages there ...

You need to reconsider your definition of instantaneous.  :)

Sound only travels at measely 1.1 feet per millisecond, so even if your
synchronization were "only" accurate to within a millisecond, you would
still be synced to just a small fraction of the distance between your
speakers.

The thing is NTP can even do a lot better than 1ms... how accurate you
can get is mostly a function of variance over long periods time in the
latency of the network/OS (and this is very low for Squeezeboxes on a
wireless lan), NOT the absolute timing between hosts.

i.e. it doesn't matter if one machine is directly connected and the
other is on wireless, you can compensate for this with a high degree of
accuracy, provided you can make reasonable assumptions about the latency
being consistent and symmetric for trasmit vs receive (which lucky for
us it is).

When you consider the speed of sound (30,000 uS between rooms) vs the
speed of 802.11g (600 uS to go the same distance) it makes sense that
even our simple "go now!" signal should work in most cases (usually
within 2-5ms). But with  NTP (or similar protocol) it could be a lot
more accurate, and there are other sync improvements that would be
possible once a solid continuous time base is available, eg using
multicast to save bandwidth, and drifting instead of rebuffering to
align clocks.


-- 
seanadams

seanadams's Profile: http://forums.slimdevices.com/member.php?userid=3
View this thread: http://forums.slimdevices.com/showthread.php?t=19466

___
Discuss mailing list
Discuss@lists.slimdevices.com
http://lists.slimdevices.com/lists/listinfo/discuss


[slim] Re: Synchronization should use fine-grained network clock

2006-01-07 Thread mikew

The 802.11 MAC requires that all broadcast and multicast packets be sent
at rates only in the Basic Service Set, which is generally the 1 or
2Mbps rate, even under 802.11g. Also, these packets do not receive the
reliable (ACKed) transmission sevice, so drops go undetected and
uncorrected at the link layer. This behavior is at the root of a lot of
wireless network behavior oddities. It is sometimes possible to extend
the BSS with good driver software, but I have never seen consumer-grade
equipment offering this feature. One would certainly not attempt to
suggest it to the public at large as a solution.

The true benefit of multicast for synchronization is that if the server
sends a single multicast sync packet, all squeezeboxes should receive it
simultaneously (aside from propagation variations, about 1ns per foot
difference in distance from the host access point, which is negligible
for our purposes) This approach eliminates the delay difference in the
multiple unicast approach, even if the 802.11 MAC transmits the sync
packet at a low rate in an unreliable fashion. If you send one sync
packet per second, even if one gets lost there is another one coming
real soon.

Don't try to sync all squeezeboxes to a single squeezebox on the
network, sync them all to the server. Buffering and streaming do not
need to be changed; just signpost to a single common clock and all
should be well.


-- 
mikew

mikew's Profile: http://forums.slimdevices.com/member.php?userid=3250
View this thread: http://forums.slimdevices.com/showthread.php?t=19466

___
Discuss mailing list
Discuss@lists.slimdevices.com
http://lists.slimdevices.com/lists/listinfo/discuss


Re: [slim] Re: Synchronization should use fine-grained network clock

2005-12-28 Thread Jack Coates

> Jack Coates wrote:
>>
>> Anyway, as others have noted, multicast doesn't like wireless.
>
> There may be issues with layer 2 ethernet multicast over certain
> vendors' APs, but the standard layer 3 routed multicast packets (that
> I at least was speaking of?) will work fine regardless of the layer 2
> device underneath..  Wireless won't make a difference as long as the
> device is acting as a bridge and not a router.
>
> -- Mike

Theoretically, you are right. In practice, multicast does not like
wireless. Granted, it may be able to struggle along well enough to serve
the low-bandwidth needs of a Squeezebox stream, but since there are plenty
of people unable to get that working now, I have my doubts.

On a side note, try typing "Theory" into Google Earth :)

Anyway, multicast (much like Ethernet itself) rather requires that all
nodes in the group are able to operate at a lowest common denominator
speed. WAPs deal with this situation by either breaking the bus down into
bridged zones based on the connection speeds attained by the connected
nodes, or by forcing all nodes to the speed attained by the slowest node.
Therefore an IP multicast group may contain members who are at 1.1 mbps
half-duplex and members who are at 11 mbps half-duplex. A WAP that's
bridging into a real Ethernet is even worse, as now the fast end of the
pool is 100 Mbps full-duplex.

End result is that your entire multicast group bumbles along at 50% of 1.1
mbps in order to cater to the slowest node, who is still complaining
mightily that it's going too fast and that he's missing half the packets.
By doing unicast streams instead, most nodes perform fine and the slow
node is the only one who sucks. Sure, you could write your multicast so
that slow complainers get dropped, but why would SDI go to that effort for
this application?

-- 
Jack At Monkeynoodle.Org:  It's A Scientific Venture...
"Believe what you're told; there'd be chaos if everyone thought for
themselves." -- Top Dog hotdog stand, Berkeley, CA
___
Discuss mailing list
Discuss@lists.slimdevices.com
http://lists.slimdevices.com/lists/listinfo/discuss


Re: [slim] Re: Synchronization should use fine-grained network clock

2005-12-28 Thread Mike Benjamin

Jack Coates wrote:


Anyway, as others have noted, multicast doesn't like wireless.


There may be issues with layer 2 ethernet multicast over certain 
vendors' APs, but the standard layer 3 routed multicast packets (that 
I at least was speaking of?) will work fine regardless of the layer 2 
device underneath..  Wireless won't make a difference as long as the 
device is acting as a bridge and not a router.


-- Mike
___
Discuss mailing list
Discuss@lists.slimdevices.com
http://lists.slimdevices.com/lists/listinfo/discuss


Re: [slim] Re: Synchronization should use fine-grained network clock

2005-12-28 Thread Jack Coates

>
> mikeb Wrote:
>> A heart-beat sent to the server by each client
>> with a frame number and ntp time synched time stamp would allow the
>> server to send a signal to the client to advance the track 3 frames to
>> catch up with the other clients.
>
> Personally, that's not a route I would prefer.
>
> Assuming the drift of the timebase (crystal?) in the squeezeboxen is
> fairly low but there is some individual variation amongst them, a
> better correction would be, at startup time, establish error in the
> crystal and correct for it low in the timing chain.
>
> Dropping frames, as you propose, would be audible. Correcting the clock
> errors could be done much more fine-grained.
>
> Michael
>
>

either would be a vast improvement over the current situation though. I
tend to prefer the idea of dropping frames because I don't assume that the
clock is the only source of error. In fact, if I had to guess what causes
the synchronization issues that are seen now, I'd blame the TCP stack.

Anyway, as others have noted, multicast doesn't like wireless.

-- 
Jack At Monkeynoodle.Org:  It's A Scientific Venture...
"Believe what you're told; there'd be chaos if everyone thought for
themselves." -- Top Dog hotdog stand, Berkeley, CA
___
Discuss mailing list
Discuss@lists.slimdevices.com
http://lists.slimdevices.com/lists/listinfo/discuss


Re: [slim] Re: Synchronization should use fine-grained network clock

2005-12-27 Thread Mike Benjamin

Michaelwagner wrote:
mikeb Wrote: 
A heart-beat sent to the server by each client 
with a frame number and ntp time synched time stamp would allow the

server to send a signal to the client to advance the track 3 frames to
catch up with the other clients.


Personally, that's not a route I would prefer.

Assuming the drift of the timebase (crystal?) in the squeezeboxen is
fairly low but there is some individual variation amongst them, a
better correction would be, at startup time, establish error in the
crystal and correct for it low in the timing chain.

Dropping frames, as you propose, would be audible. Correcting the clock
errors could be done much more fine-grained.


Slimserver could even instruct the player to play the next ten frames 
at a 2% quicker speed to make up the sub-second variation.  You're 
right dropping would be suboptimal..


-- Mike


Michael




___
Discuss mailing list
Discuss@lists.slimdevices.com
http://lists.slimdevices.com/lists/listinfo/discuss


[slim] Re: Synchronization should use fine-grained network clock

2005-12-27 Thread Michaelwagner

mikeb Wrote: 
> A heart-beat sent to the server by each client 
> with a frame number and ntp time synched time stamp would allow the
> server to send a signal to the client to advance the track 3 frames to
> catch up with the other clients.

Personally, that's not a route I would prefer.

Assuming the drift of the timebase (crystal?) in the squeezeboxen is
fairly low but there is some individual variation amongst them, a
better correction would be, at startup time, establish error in the
crystal and correct for it low in the timing chain.

Dropping frames, as you propose, would be audible. Correcting the clock
errors could be done much more fine-grained.

Michael


-- 
Michaelwagner

Michaelwagner's Profile: http://forums.slimdevices.com/member.php?userid=428
View this thread: http://forums.slimdevices.com/showthread.php?t=19466

___
Discuss mailing list
Discuss@lists.slimdevices.com
http://lists.slimdevices.com/lists/listinfo/discuss


Re: [slim] Re: Synchronization should use fine-grained network clock

2005-12-27 Thread Mike Benjamin


inline.

Michaelwagner wrote:

I am sure I only understand some of the issues involved, but the problem
is complex.

At the moment, synchronization occurs at every new song. 


The various squeezeboxen (which can be of different generations) all
buffer up and wait for a "go" signal. The go signal is probably sent
multicast, but I actually don't know that for sure. After the go


The signal is sent unicast to each client.  No multicast traffic is 
being generated.



signal, they all buffer and stream out music to the end of the song,
then all buffer up and wait for the next song to start.

Within one song, they rely on the accuracy of their own clocks to keep
in sync with each other.

In the software roadmap 
http://wiki.slimdevices.com/index.cgi?SoftwareRoadmap 
there is a line item for using a network clock for synchronization. I'm

not sure what implementation that would take and whether multicast would
play a role, but it seems a likely route. The goal, though, would not be
to multicast the content (which is very difficult when sending to
multiple generations with different buffering and streaming
requirements) but merely to multicast a synchronization clock.

Even still, I don't know what accuracy you can get with multicast. 

Across a hub, propegation is essentially instantaneous. 


Across a switch, there is a very tiny delay and the potential of a
longer one if there is interfering traffic on the other side of the
switch. I don't know if there is a promise by the protocol to limit the
delay to a level where it would be insignificant for this use. 


Across a wireless access point? I expect all bets are off. I'm not sure
multicast will offer any advantages there ...


As you've said, the benefit in multicast to the multiple client 
synchronization would be minimal (if nonexistent).  The benefit to 
multicast would be lower bandwidth utilization in a situation where 
many clients exist.  A heart-beat sent to the server by each client 
with a frame number and ntp time synched time stamp would allow the 
server to send a signal to the client to advance the track 3 frames to 
catch up with the other clients.  Of course, if there are only two 
players there would need to be logic in the server to decide who was 
more accurate on a consistent basis.  If done every second, the effect 
would be near perfect synchronization.  From reading about Sonos, this 
network heartbeat is how they synchronize accurately.


Multicast could be used to send the heartbeat to a group address, but 
since the logic needs to be controlled at a central location (if 4 of 
your squeezeboxes all decide the one fast is the most accurate you get 
degraded sound on 4 instead of 1, there needs to be central control of 
the logic), it makes the most sense to only unicast it to the server. 
 This continues to follow the client/server model Slim Devices has 
incorporated to date as well.


Now, for the actual music stream, I send 192k VBR MP3 to the 
squeezeboxes in my house.  I can imagine the remote possibility of say 
7 of them, and on a high bitrate song, that comes out at about 
1.8mbit.  My 54mbit network is hardly going to even hiccup at that. 
Personally I prefer the rudimentary network capabilities of a unicast 
network that would allow me to easily setup remote routed nodes for my 
squeezeboxes, be it either in the house or over the Internet.  Keep in 
mind I also work on a few hundred node network using Multicast in 
multiple capacities for a living, and I don't want Multicast because 
of it's complexities, watch out for your standard user..


My suggestion for anything with a HUGE number of squeezeboxes is the 
development of a method to bounce streams off another slimserver, so 
that 30 squeezeboxes on floors 1 and 2 of the hotel can be on 
slimserver 1, and the 30 squeezeboxes on floors 3 and 4 can be on the 
second one.  While both slimservers synchronize themselves in the 
background.  But even with 60 squeezeboxes running at 256kbit, you're 
still only talking 15mbit.  Find APs, switches, and routers that can 
understand 802.1p QoS and set the priorities accordingly so you can 
differentiate your music over the web browsing on the network and you 
should be good.


Hell, with 60 rooms and a 100mbit network you could have every room 
listen to music, talk on a VoIP phone, and browse the web with very 
little degradation to their web surfing, and absolutely none to their 
phone calls and music if CoS is enabled properly..  Since not every 
room will do everything at the same time, a cheap 100mbit switched 
network could provide the entertainment and communications for a 60 
room hotel..  pretty impressive.


Now, if you're scaling a setup with 100s of squeezeboxes I would 
suggest you talk to Slim Devices before going forward, I bet they 
could dedicate some development time to figuring out how to meet your 
needs =) (hey, money talks right?).  If Multicast is the only answer, 
they may be able to do it in the squeezebox

[slim] Re: Synchronization should use fine-grained network clock

2005-12-27 Thread Michaelwagner

I am sure I only understand some of the issues involved, but the problem
is complex.

At the moment, synchronization occurs at every new song. 

The various squeezeboxen (which can be of different generations) all
buffer up and wait for a "go" signal. The go signal is probably sent
multicast, but I actually don't know that for sure. After the go
signal, they all buffer and stream out music to the end of the song,
then all buffer up and wait for the next song to start.

Within one song, they rely on the accuracy of their own clocks to keep
in sync with each other.

In the software roadmap 
http://wiki.slimdevices.com/index.cgi?SoftwareRoadmap 
there is a line item for using a network clock for synchronization. I'm
not sure what implementation that would take and whether multicast would
play a role, but it seems a likely route. The goal, though, would not be
to multicast the content (which is very difficult when sending to
multiple generations with different buffering and streaming
requirements) but merely to multicast a synchronization clock.

Even still, I don't know what accuracy you can get with multicast. 

Across a hub, propegation is essentially instantaneous. 

Across a switch, there is a very tiny delay and the potential of a
longer one if there is interfering traffic on the other side of the
switch. I don't know if there is a promise by the protocol to limit the
delay to a level where it would be insignificant for this use. 

Across a wireless access point? I expect all bets are off. I'm not sure
multicast will offer any advantages there ...


-- 
Michaelwagner

Michaelwagner's Profile: http://forums.slimdevices.com/member.php?userid=428
View this thread: http://forums.slimdevices.com/showthread.php?t=19466

___
Discuss mailing list
Discuss@lists.slimdevices.com
http://lists.slimdevices.com/lists/listinfo/discuss