PGM: Reliable General Multicast Implementation for Linux? Christoph Lameter, christoph@lameter.com
Overview • Why “reliable” multicasting. • “Middleware” for signaling • Existing implementations • The PGM standard in brief. • A proposed sockets based implementation • Kernel implementation challenges • Future outlook #
Why “reliable” Multicasting • Need to signal events in the fastest way to a large group of changing recipients. • TCP – Is slow and reliable – Consumes lots of resources – Can only reach one destination • UDP multicast – Fast – Reaches unlimited number of destinations – But unreliable #
Middleware • Multicast data streams – IGMP – Pub/Sub with network hardware support. • Sequence numbers • Retransmission • Protocols – IP based PGM native version – UDP encapsulated PGM #
Existing Implementations • Proprietary • Open Source Open Source • Tibco • Openpgm • 29West • AMQP (not PGM) • IBM Websphere • 0MQ (zeromq) • Wombat MAMA (not PGM) • Microsoft Windows PGM (MS-PGM) #
PGM standard (RFC 3208) • Multicast packets • Network element with sequence ids. assist. • Receiver check • Scalability issues. sequence id. • FEC capabilities. • NAK on missing • NCF packets. Sender • ODATA sends repair traffic. • RDATA • Heartbeat. • Receive / Send # Window
Hardware support for Native PGM • Network • Cisco Switches “Elements” • Juniper Switches • NAK suppression • Nortel Networks • Optimize Repair Switches traffic • Exploit FEC. #
A Linux Sockets Based Implementation • Use socket like an • Based on Miru's UDP socket openpgm code • IPPROTO_PGM • API Challenge • SOCK_RDM since Miru uses • Reverse connection library interface. over UDP • MS-PGM interface – Sender is not suffered bit rot. handshaking • Thus new API – Receiver waits for packet and then # accepts.
Why in the kernel? • Framework for creating • Potential of high speed new protocols exists in processing since we the kernel have direct access to the NIC and the • RAW sockets used to implement native PGM queues. cause various issues. • Natural priority over • Middleware uses PGM everything else. over UDP and thus • Able to detect cannot use network dysfunctional network elements for NAK behavior. suppression. #
What exists • Documentation • Code – Manpage • Sample code – Basic howto • Basic pgm – Variable structures skeleton partially – Integration of completed. SOCK_RDM and • Nothing that is IPPROTO_PGM runnable yet. Keep – Openpgm getting distracted implementation. by other projects. #
Fundamental Challenges • Kernel socket API • Receive/Memory competes with bare usage in kernel for metal implementations. large receive windows • Need alternative to • Third party interactions message copying via – MS-PGM send()/receive(). – Tibco • Issues with Offload – IBM Websphere technology having a – AMQP (not PGM?) hard time getting acceptance. #
Future • Having a kernel implementation would simplify a lot of things. • Minimal implementations so that user space frameworks can be built on top. • Need to address publish → large subscriber issues. • Manpage / Definition • Questions and Answers. #
Recommend
More recommend