Saturday, 29 January 2011

Strawberries and a Python through the Looking Glass

How do we get OpenPGM on Windows?  This is an obvious question popular with new developers.  The stumbling blocks tend to be that OpenPGM is written to the ANSI C99 specification and Microsoft's Visual C++ 2010 compiler only supports ANSI C89 or C++ 2003.

Convexing Cross-Compiling of C

Microsoft hasn't the only C compiler vendor targeting Windows, and it also isn't necessary that the compiler actually runs on Windows, by a process called cross-compiling the Windows platform can be targeted from another.  This also tends to be scary for many Windows developers as they need a second operating system, learn how to use a new compiler, and finally you have additional compiler dependencies when bringing back the library on Windows.

Priceless Princely Patch for Progress

As it so happens cross-compilation has its pros and cons, on the plus side it means one code base and one build system; on the negative side it means the resultant library brings in additional libraries for the cross-compiler and its compatibility layers, and debugging is made rather inconvenient.

So the benefits of a native build are strong but how much effort is required to modify C99 code to get it working in a C89 compiler and how difficult is a native build system?  Well the differences from one compiler to the next can be managed with a patch cluster.  The build system is similar to Automake and SConscript build components as the Autoconf comparables are constant to Windows XP SP3.  We choose a build system that can target agnostic to Visual Studio compiler version for greatest compatibility to minimize maintenance overhead.

CMake Make Make

With Microsoft Visual C++ 2010 installed we need to install some extra software to start, first the build system called CMake which has a simple Win32 installer with minimal options, it is recommended to allow it to update your system PATH so you can use immediately.  Next are two critical build dependencies for OpenPGM, we need both the Perl and Python 2 scripting languages both of which offer x86 and x64 builds depending on your platform architecture.

Extract the source for the latest OpenPGM archive into somewhere convenient, for example C:\>

CMake generating Makefile.
By default CMake is creating a Makefile with debugging enabled, you can use cmake-gui to update the parameter for a release build.

CMake-GUI updating configuration parameters and regenerating Makefile.
With a successfully generated Makefile we can start the build process using Microsoft's standard command line tools.

Generating C89-compatible source files.
The build process continues automatically by first patching all the source files for C89 compatibility,  the C89-compatible source files are fed into the compiler, finally the object files are linked together into the native library.

Generating object files and final libpgm library.
Now complete we can start to use the library to build the example applications and start development.  An additional feature of the CMake system is called CPack which allows us to create a Windows installer we can use to install OpenPGM binaries on other systems.

First download the latest NSIS package and install with full options, then simply run cmake package to produce the Windows installer.

Building an OpenPGM Windows installer with CPack and NSIS.

What is PGM? What is OpenPGM?

Well lets start by saying PGM is the name of a internet, lower-case "i", communications protocol, and OpenPGM is an implementation of that protocol.  A communications protocol being the definition of how two or more computers or electronic devices communicate with each other.  For example you just enjoyed a good slice of cherry pie and damn fine cup of coffee and you wanted to tweet it to your friends, you tap the message into your phone and hit a button, then by magic the message appears on your microblog.  Between your phone's Twitter app' and the Twitter website your tweet message has been sent following a predefined communications protocol.

There is a subtle difference between the Internet, upper-case "I", and an internet, lower-case "i", the former is the name for the public network where we can access Facebook and Twitter, the latter is the generic term for a group of interconnected networks.  This means we could find PGM on the Internet or we could find it on other non-public networks such as within a stock exchange's trading system or communicating physics of the Higgs Boson at the Large Hadron Collider.

So what is special about PGM?

The erhu is a Chinese two-stringed bowed musical instrument and not commonly found in Western music.  If you wanted to listen to a recital of Sanmen Capriccio a convenient choice might be to watch a performance by Yang Ying on YouTube.  For a live performance you might tune in the radio and listen alongside other fans of huqin.  On the Internet you may find an Internet radio station to listen on but there is fundamental limitation on how many fans can be plugging in.  Say Girls Generation announced a online concert tonight the stampede from eager fans may overload the site and crash the network as the concert site has to stream a duplicate copy of the event to each and every listener.  The PGM protocol allows one sent stream of data to be received by multiple recipients, the fan-out of the stream to each recipient being managed by the network instead of say the host concert site.

Why should I choose OpenPGM?

So PGM is the protocol on paper, digitally at least, you need an actual implementation for something to start looking like it will work.  There are a selection of vendors providing commercial solutions, including Microsoft, IBM, and TIBCO,  and a variety of open source projects as long as your preferred platform is FreeBSD.  So an open source implementation that works on multiple platforms, is compatible with existing vendor solutions, and is even faster and more flexible sounds like a good choice, then have a look at OpenPGM.

Tuesday, 7 September 2010

Miru Announces OpenPGM 5

New York - September 6, 2010 - Miru, Limited, a small development studio of enterprise middleware, announces a new BSD socket interface for its OpenPGM messaging software, an open source low latency reliable multicast solution based on the standard for broadcasting information over an internet.  The Berkeley sockets API is the defacto standard for abstraction of network sockets and so reduces the learning curve necessary to implement new solutions using OpenPGM.

Performance for one-way messaging of roughly 75 to 80 microseconds with throughput of approximately 540 megabits per second to applications running on a single core commodity system.
The transport technology standard, known as Pragmatic General Multicast, enables private networks and the Internet to handle more traffic by sending critical business information in a more reliable, cost-effective and bandwidth-friendly manner.

The PGM reliable transport protocol communications technology, which was designed by Cisco Systems and TIBCO Software, is registered with the Internet Engineering Task Force (IETF), the Internet standards body.

PGM enabled network devices, such as Cisco, Juniper, or Nortel routers, enhance the scalability and reliability of the technology by eliminating redundant traffic when recovering lost messages.

The updated transport is supported on Linux and Solaris platforms on IA32, x86-64, SPARCv9 architectures, with other platforms and architectures such as Microsoft Windows and Mac OS X with functional builds but support added as customer needs dictate.  OpenPGM is Wire compatible with Microsoft’s PGM implementation as available in Microsoft Windows Server 2003 and Microsoft Windows XP with Microsoft Message Queuing.

About IP Multicast

In computer networking, broadcast refers to transmitting a message to every device on the network, a one-to-many paradigm similar to television or radio. Multicast is a technique to only deliver to those recipients expressing an interest in the content. A multicast source is only required to send a message once, the network infrastructure takes care of replicating to each receiver as necessary. Conventional unicast applications require the server to send copies of the same message to each recipient.

Multicast does not guarantee reliability or ordering of messages. A recipient may receive messages out of order, duplicated, or missing with no notice.

About Pragmatic General Multicast (PGM)

PGM is a reliable multicast transport protocol developed by a range of vendors including Cisco and TIBCO and described in RFC 3208.

About Miru, Limited.

Miru is development studio specialising in building high-quality, open source multicast message orientated middleware systems. Miru also offers support, training and consulting services to its customers worldwide.
Learn more: http://miru.hk .


LINUX is a trademark of Linus Torvalds. MIRU is a trademark of Miru, Limited. All other product and company names and marks mentioned in this document are property of their respective owners and are mentioned for identification purposes only.

Friday, 23 April 2010

Miru Announces OpenPGM 3

Hong Kong - April 23, 2010 - Miru, Limited, a small development studio of enterprise middleware, announces support for Solaris 10 on SPARCv9 platform for its OpenPGM messaging software, an open source low latency reliable multicast solution based on the standard for broadcasting information over an internet.  Performance for one-way messaging of roughly 75 to 99 microseconds with throughput of approximately 540 megabits per second to applications running on a single core commodity system.
The transport technology standard, known as Pragmatic General Multicast, enables private networks and the Internet to handle more traffic by sending critical business information in a more reliable, cost-effective and bandwidth-friendly manner.

The PGM reliable transport protocol communications technology, which was designed by Cisco Systems and TIBCO Software, is registered with the Internet Engineering Task Force (IETF), the Internet standards body.

PGM enabled network devices, such as Cisco, Juniper, or Nortel routers, enhance the scalability and reliability of the technology by eliminating redundant traffic when recovering lost messages.

The updated transport is supported on Linux and Solaris platforms on IA32, x86-64, SPARCv9 architectures, with other platforms and architectures added as customer needs dictate.  OpenPGM is Wire compatible with Microsoft’s PGM implementation as available in Microsoft Windows Server 2003 and Microsoft Windows XP with Microsoft Message Queuing.

About IP Multicast

In computer networking, broadcast refers to transmitting a message to every device on the network, a one-to-many paradigm similar to television or radio. Multicast is a technique to only deliver to those recipients expressing an interest in the content. A multicast source is only required to send a message once, the network infrastructure takes care of replicating to each receiver as necessary. Conventional unicast applications require the server to send copies of the same message to each recipient.

Multicast does not guarantee reliability or ordering of messages. A recipient may receive messages out of order, duplicated, or missing with no notice.

About Pragmatic General Multicast (PGM)

PGM is a reliable multicast transport protocol developed by a range of vendors including Cisco and TIBCO and described in RFC 3208.

About Miru, Limited.

Miru is development studio specialising in building high-quality, open source multicast message orientated middleware systems. Miru also offers support, training and consulting services to its customers worldwide.
Learn more: http://miru.hk .


LINUX is a trademark of Linus Torvalds. MIRU is a trademark of Miru, Limited. All other product and company names and marks mentioned in this document are property of their respective owners and are mentioned for identification purposes only.

Saturday, 20 February 2010

Miru Announces Full IPv6 and Windows Support with Sub 100-Microsecond Latency


Hong Kong - February 20, 2010 - Miru, Limited, a small development studio of enterprise middleware, announces support for Internet Protocol version 6 (IPv6) and Microsoft Windows XP through Windows 7 platforms for its OpenPGM messaging software, an open source low latency reliable multicast solution based on the standard for broadcasting information over an internet.  Performance for one-way messaging of roughly 82 to 107 microseconds with throughput of approximately 270 megabits per second to applications running on a single core commodity system.

Miru has developed Windows platform support to remove the deficiencies in the native support for the PGM protocol, including IPv6 support and UDP encapsulation, and to provide a consistent cross platform interface for application development.

The transport technology standard, known as Pragmatic General Multicast, enables private networks and the Internet to handle more traffic by sending critical business information in a more reliable, cost-effective and bandwidth-friendly manner.

The PGM reliable transport protocol communications technology, which was designed by Cisco Systems and TIBCO Software, is registered with the Internet Engineering Task Force (IETF), the Internet standards body.

PGM enabled network devices, such as Cisco, Juniper, or Nortel routers, enhance the scalability and reliability of the technology by eliminating redundant traffic when recovering lost messages.

The updated transport is supported on Windows, Linux and Solaris platforms on IA32 and x86-64 architectures, with other platforms and architectures added as customer needs dictate.  OpenPGM is Wire compatible with Microsoft’s PGM implementation as available in Microsoft Windows Server 2003 and Microsoft Windows XP with Microsoft Message Queuing.


About IP Multicast

In computer networking, broadcast refers to transmitting a message to every device on the network, a one-to-many paradigm similar to television or radio. Multicast is a technique to only deliver to those recipients expressing an interest in the content. A multicast source is only required to send a message once, the network infrastructure takes care of replicating to each receiver as necessary. Conventional unicast applications require the server to send copies of the same message to each recipient.

Multicast does not guarantee reliability or ordering of messages. A recipient may receive messages out of order, duplicated, or missing with no notice.

About Pragmatic General Multicast (PGM)

PGM is a reliable multicast transport protocol developed by a range of vendors including Cisco and TIBCO and described in RFC 3208.

About Miru, Limited.

Miru is development studio specialising in building high-quality, open source multicast message orientated middleware systems. Miru also offers support, training and consulting services to its customers worldwide.
Learn more: http://miru.hk .


LINUX is a trademark of Linus Torvalds. MIRU is a trademark of Miru, Limited. All other product and company names and marks mentioned in this document are property of their respective owners and are mentioned for identification purposes only.

Friday, 15 May 2009

Miru Ships Standards Based Low Latency Open Source Messaging Software

Hong Kong - May 15, 2009 - Miru, Limited, a development studio of enterprise middleware and applications integration, today announced the immediate availability of OpenPGM, an open source low latency reliable multicast messaging software based on the standard for broadcasting information over an internet.

The transport technology standard, known as Pragmatic General Multicast, enables private networks and the Internet to handle more traffic by sending critical business information in a more reliable, cost-effective and bandwidth-friendly manner.

The PGM reliable transport protocol communications technology, which was designed by Cisco Systems and TIBCO Software, is registered with the Internet Engineering Task Force (IETF), the Internet standards body.

PGM enabled network devices, such as Cisco, Juniper, or Nortel routers, enhance the scalability and reliability of the technology by eliminating redundant traffic when recovering lost messages.

The initial general release is available for Linux and Solaris platforms on IA32 and x86-64 architectures and is wire compatible with Microsoft’s PGM implementation as available in Microsoft Windows Server 2003 and Microsoft Windows XP with Microsoft Message Queuing.

About IP Multicast

In computer networking, broadcast refers to transmitting a message to every device on the network, a one-to-many paradigm similar to television or radio. Multicast is a technique to only deliver to those recipients expressing an interest in the content. A multicast source is only required to send a message once, the network infrastructure takes care of replicating to each receiver as necessary. Conventional unicast applications require the server to send copies of the same message to each recipient.

Multicast does not guarantee reliability or ordering of messages. A recipient may receive messages out of order, duplicated, or missing with no notice.

About Pragmatic General Multicast (PGM)

PGM is a reliable multicast transport protocol developed by a range of vendors including Cisco and TIBCO and described in RFC 3208.

About Miru, Limited.

Miru is development studio specialising in building high-quality, open source multicast message orientated middleware systems. Miru also offers support, training and consulting services to its customers worldwide.
Learn more: http://miru.hk .


LINUX is a trademark of Linus Torvalds. MIRU is a trademark of Miru, Limited. All other product and company names and marks mentioned in this document are property of their respective owners and are mentioned for identification purposes only.

Tuesday, 24 February 2009

Flavours of Multicast

The reason why multicast is not prevalent on the Internet today is due to two main reasons, first is lack of support in network infrastructure.  Multicast is an optional part of the IPv4 protocol and so not every vendor has implemented support.  Second is filtering, as in what control is there over different parties sending data to any multicast group.  This is an issue as multicast uses a separate range of IP addresses for its communication of which is a limited number.

As an example, imagine the US President Obama’s inauguration is being being multicast live on the Internet, what happens if at the same time a radio station in New Zealand is broadcasting live news, the Hong Kong Stock Exchange is publishing stock prices, and Wembley stadium sending live match details from London?  The answer is a mess, wasted routing and link resources forwarding packets from all around to world to parties simply not interested.


This method of multicast, the default operation, is called any-source multicast (ASM), and is more suited to controlled environments such as private networks in which applications and network topology can be arranged to suit the expected usage and conflicts from other applications is not going to occur.

Source-specific multicast (SSM) was then created to limit the source of packets to a selected range of addresses.  This requires end-point router support, IGMPv3 for IPv4, and MLDv2 for IPv6, together with operating system support for the matching API and filtering without router support.