Application Layer Multicast Extensions to RELOAD draft-kolberg-sam-baseline-protocol-00 ALM Usage for RELOAD John Buford, Mario Kolberg 3/29/2011
Overview Baseline document –Extension to RELOAD, uses P2PSIP RELOAD as the overlay layer –Split document: This document concentrates on ALM only RELOAD Usage Another document soon on Hybrid ALM RELOAD Usage –Initial focus for ALM only is using a Scribe like algorithm for ALM, more algorithms later Any comments welcome!
P2P-SIP Architecture Usage Layer –Set of application data types Message Transport –Handles end-to-end reliability and request state for usages Topology Plug-in –Implements specific overlay algorithm Forwarding & Link Mgmt –Forwarding packets between nodes SIP Usage XMPP Usage … Messaging Service Boundary Message Transport Storage Forwarding & Link Mgmt Topology Plug-in Overlay Link Service Boundary TLSDTLS
P2P-SIP Architecture SIP Usage XMPP Usage … Message Transport Storage Forwarding & Link Mgmt Topology Plug-in TLSDTLS Real Internet Internet Model Correspondence to Overlay RELOAD Application Transport (Routing) Network Link Application Transport Network Link
ALM Usage for RELOAD Usage Layer –Set of application data types Message Transport –Handles end-to- end reliability and request state for usages Topology Plug-in –Implements specific overlay algorithm Forwarding & Link Mgmt –Forwarding packets between nodes SIP Usage XMPP Usage … Messaging Service Boundary Message Transport Storage Forwarding & Link Mgmt Topology Plug-in Overlay Link Service Boundary TLSDTLS ALM Usage
ALM Usage for RELOAD Message Transport Storage Forwarding & Link Mgmt Topology Plug-in TLSDTLS ALM Usage Algorithm Plug-in Group API ALM Messages
Scribe RELOAD SCRIBE Application deliver(msg, key) forward(msg, key, nextId) route(msg, key) send(msg, IPaddr) create(credentials, topicID) subscribe(credentials, topicID, eventHandler) unsubscribe(credentials, topicID) publish(credentials, topicID, event) invokeEventHandler(topicID, msg) forwardHandler(msg) subscribeHandler(msg) faultHandler(msg)
Message Mapping Section of draft 01RELOAD ALM UsageScribe [ref] 6.2.1CreateALMTreeCreate 6.2.2Join 6.2.3JoinAccept 6.2.4JoinConfirm 6.2.5JoinDecline 6.2.8Leave Reform Heartbeat newPush/Deliver/SendMULTICAST deliver(msg,key) forward(msg,key,nextID) route(msg, send(msg,IPAddr)
Scribe Pseudocode CREATE : groups.add(msg.GroupId) MULTICAST : foreach(groups[msg.GroupId].children as NodeId) SEND(msg,NodeId) if memberOf(msg.GroupId) invokeMessageHandler(msg.GroupId, msg) LEAVE : groups[msg.GroupId].children.remove(msg.source) if (groups[msg.group].children = 0) SEND(msg,groups[msg.GroupId].parent)
Scribe Pseudocode cont. JOIN : if(checkAccept(msg)) { recvJoins.add(msg.source, msgGroupId) SEND(JOINAccept(nodeID, msg.source, msg.GroupId)) } JOINDecline: if(recvJoins.contains(msg.source,msg.GroupId)) recvJoins.del(msg.source, msgGroupId) JOINConfirm: if(recvJoins.contains(msg.source,msg.GroupId)){ if !(groups.contains(msg.GroupId)) { groups.add(msg.GroupId) SEND(msg,msg.GroupId) } groups[msg.GroupId].children.add(msg.source) recvJoins.del(msg.source, msgGroupId) }
Next Steps Update draft on ALM Usage for RELOAD Start working on the Hybrid ALM Usage for RELOAD