Discussion:
[OSC_dev] [ANN] OSCgroups update (mid-2013)
Ross Bencina
2013-07-28 22:33:15 UTC
Permalink
Hi All,

OSCgroups has been updated with much improved support for 64 bit
platforms and a bunch of cleanups (see below).

The update was completed about a month ago. Everything seems fine so
far. The new version has been built and tested on Windows, Mac OS X and
Linux, in both 32 and 64 bit modes, with a variety of compilers. Please
get in touch if you find any bugs.

There are updated binaries, and a new source archive available at
googlecode:

https://code.google.com/p/oscgroups/downloads/list

What is it?

OSCgroups is a system for routing OSC messages between a group of
collaborating users. It is designed to make joining and leaving a group
simple, and to overcome the problem of connecting multiple users behind
different NAT routers using a NAT traversal server with the usual "NAT
hole punching" scheme. OSCgroups also implements basic group
functionality similar to the concept of channels in internet relay chat.

OSCgroups home page: http://www.rossbencina.com/code/oscgroups
OSCgroups repo at google code: https://code.google.com/p/oscgroups/

What's changed?

- Fixes to support 64-bit builds on Mac OS X, Linux and Windows
- Moved to standard integer types for 64-bit compatibility
- Fixed various 64-bit issues (incluing a problem with the md5 hashing)
- Cleaned up for modern C++ header includes
- Improved Makefile
- Added CMake build configuration file


Thanks to Syneme at the University of Calgary for providing financial
support for the 64-bit update.

Thanks to Rob Canning for his help with testing on Linux x64.

Cheers,

Ross.
Studio Channing
2013-07-29 00:45:23 UTC
Permalink
naive questions:

How does this compare with liblo multicast? e.g.
lo_server_thread_new_multicast

NAT traversal seems like an obvious difference..

What about on a LAN? what are the ramifications of using this vs "plain"
liblo UDP multicast?

Thanks!
Post by Ross Bencina
Hi All,
OSCgroups has been updated with much improved support for 64 bit
platforms and a bunch of cleanups (see below).
The update was completed about a month ago. Everything seems fine so
far. The new version has been built and tested on Windows, Mac OS X and
Linux, in both 32 and 64 bit modes, with a variety of compilers. Please
get in touch if you find any bugs.
There are updated binaries, and a new source archive available at
https://code.google.com/p/oscgroups/downloads/list
What is it?
OSCgroups is a system for routing OSC messages between a group of
collaborating users. It is designed to make joining and leaving a group
simple, and to overcome the problem of connecting multiple users behind
different NAT routers using a NAT traversal server with the usual "NAT
hole punching" scheme. OSCgroups also implements basic group
functionality similar to the concept of channels in internet relay chat.
OSCgroups home page: http://www.rossbencina.com/code/oscgroups
OSCgroups repo at google code: https://code.google.com/p/oscgroups/
What's changed?
- Fixes to support 64-bit builds on Mac OS X, Linux and Windows
- Moved to standard integer types for 64-bit compatibility
- Fixed various 64-bit issues (incluing a problem with the md5 hashing)
- Cleaned up for modern C++ header includes
- Improved Makefile
- Added CMake build configuration file
Thanks to Syneme at the University of Calgary for providing financial
support for the 64-bit update.
Thanks to Rob Canning for his help with testing on Linux x64.
Cheers,
Ross.
_______________________________________________
OSC_dev mailing list
http://lists.create.ucsb.edu/mailman/listinfo/osc_dev
Ross Bencina
2013-07-29 04:16:47 UTC
Permalink
Post by Studio Channing
How does this compare with liblo multicast? e.g.
lo_server_thread_new_multicast
NAT traversal seems like an obvious difference..
What about on a LAN? what are the ramifications of using this vs "plain"
liblo UDP multicast?
I don't know anything about liblo, but from looking at the docs:
http://liblo.sourcearchive.com/documentation/0.26~repack-1/group__liblo_ga0fa9fcae4eabe09847d46b134dc33aa4.html

Liblo is using IP multicast. OSCgroups uses unicast between peers (ie it
retransmits the same packet to each peer to achieve a multicast-like
result).

Unless you have multicast WAN capability then obviously peer-to-peer is
the main option on a WAN.

On a LAN, there would be benefits and disadvantages to both schemes. You
would need to inform yourself about the differences between uncast and
multicast UDP.

If I remember correctly, unicast performs quite differently to multicast
on a WiFi LAN (certainly broadcast performs quite differently from
unicast) -- in that unicast packets get ACKed/retransmitted between the
client and access point, whereas broadcast (multicast?) packets don't.
So the packet loss rate is higher with broadcast (multicast?) on a WiFi
network. On a wired LAN there is probably not so much difference, if any.

In any case, OSCgroups is an application-level protocol that uses
unicast UDP packets between peers. IP multicast is IP layer.

Other differences:

Multicast groups are addressed using numbers, there is no admission control.

OSCgroups groups are addressed by group name, admission is controlled by
knowing the group name and password (shared secret). It isn't any more
secure, but it does support multiple groups very easily without having
to know anything about multicast.

Oscgroups clients associate user names with endpoints, so it's possible
to determine which users are connected at any given time.

Oscgroups requires running a server. IP Multicast doesn't.

Does that help?

Ross
Post by Studio Channing
Thanks!
Post by Ross Bencina
Hi All,
OSCgroups has been updated with much improved support for 64 bit
platforms and a bunch of cleanups (see below).
The update was completed about a month ago. Everything seems fine so
far. The new version has been built and tested on Windows, Mac OS X and
Linux, in both 32 and 64 bit modes, with a variety of compilers. Please
get in touch if you find any bugs.
There are updated binaries, and a new source archive available at
https://code.google.com/p/oscgroups/downloads/list
What is it?
OSCgroups is a system for routing OSC messages between a group of
collaborating users. It is designed to make joining and leaving a group
simple, and to overcome the problem of connecting multiple users behind
different NAT routers using a NAT traversal server with the usual "NAT
hole punching" scheme. OSCgroups also implements basic group
functionality similar to the concept of channels in internet relay chat.
OSCgroups home page: http://www.rossbencina.com/code/oscgroups
OSCgroups repo at google code: https://code.google.com/p/oscgroups/
What's changed?
- Fixes to support 64-bit builds on Mac OS X, Linux and Windows
- Moved to standard integer types for 64-bit compatibility
- Fixed various 64-bit issues (incluing a problem with the md5 hashing)
- Cleaned up for modern C++ header includes
- Improved Makefile
- Added CMake build configuration file
Thanks to Syneme at the University of Calgary for providing financial
support for the 64-bit update.
Thanks to Rob Canning for his help with testing on Linux x64.
Cheers,
Ross.
_______________________________________________
OSC_dev mailing list
http://lists.create.ucsb.edu/mailman/listinfo/osc_dev
_______________________________________________
OSC_dev mailing list
http://lists.create.ucsb.edu/mailman/listinfo/osc_dev
Studio Channing
2013-07-30 03:03:04 UTC
Permalink
Post by Ross Bencina
Post by Studio Channing
How does this compare with liblo multicast? e.g.
lo_server_thread_new_multicast
NAT traversal seems like an obvious difference..
What about on a LAN? what are the ramifications of using this vs "plain"
liblo UDP multicast?
http://liblo.sourcearchive.com/documentation/0.26~repack-1/group__liblo_ga0fa9fcae4eabe09847d46b134dc33aa4.html
Liblo is using IP multicast. OSCgroups uses unicast between peers (ie it
retransmits the same packet to each peer to achieve a multicast-like
result).
Unless you have multicast WAN capability then obviously peer-to-peer is
the main option on a WAN.
On a LAN, there would be benefits and disadvantages to both schemes. You
would need to inform yourself about the differences between uncast and
multicast UDP.
If I remember correctly, unicast performs quite differently to multicast
on a WiFi LAN (certainly broadcast performs quite differently from
unicast) -- in that unicast packets get ACKed/retransmitted between the
client and access point, whereas broadcast (multicast?) packets don't.
So the packet loss rate is higher with broadcast (multicast?) on a WiFi
network. On a wired LAN there is probably not so much difference, if any.
In any case, OSCgroups is an application-level protocol that uses
unicast UDP packets between peers. IP multicast is IP layer.
Multicast groups are addressed using numbers, there is no admission control.
OSCgroups groups are addressed by group name, admission is controlled by
knowing the group name and password (shared secret). It isn't any more
secure, but it does support multiple groups very easily without having
to know anything about multicast.
Oscgroups clients associate user names with endpoints, so it's possible
to determine which users are connected at any given time.
Oscgroups requires running a server. IP Multicast doesn't.
Does that help?
Ross
Yes - that helps immensely - UDP unicast vs multicast, admissions
control vs none, these were exactly the sort of differences we were
wondering about.

Thanks for the information and the software itself!

John @ Studio Channing

Loading...