210 likes | 368 Views
GENA Framework. Generalized Event Notification Architecture over HTTP Josh Cohen <joshco@microsoft.com> http://egg.microsoft.com/gena/. Introduction. Design Goals Architecture Layout Protocol Overview HTCPCP An Example Schema Subtype. Design Goals. Internet scale
E N D
GENA Framework Generalized Event Notification Architecture over HTTP Josh Cohen <joshco@microsoft.com> http://egg.microsoft.com/gena/
Introduction • Design Goals • Architecture Layout • Protocol Overview • HTCPCP • An Example Schema Subtype
Design Goals • Internet scale • Generalized Event Notification • Leverage XML Extensibility • Leverage existing infrastructure • HTTP Proxy Servers and Firewalls • Use HTTP Object Model and Functionality • Fit into HTTP extension framework • Strong Security • Lightweight / High Performance
Scenarios for Base Protocol • Simple, Lightweight Subscriptions • Minimum requirements (HTTP only) • Asynchronous event delivery • Synchronous (Polled) delivery • Lightweight UDP delivery • Variable use of infrastructure intelligence • Events can carry entity bodies or resource data
Architecture Layout • GENA Base Protocol • Layer model diagram • GENA Extension Schemas • GENA Fan-out Aggregation Routing Protocol • Base protocol provides an easily implemented functionality set but allows clear and easy extensibility for complex applications.
RVP GENA subtype schema XML GENA base DAV HTTP/1.1 Architecture Overview
Solutions • Security is via TLS/SSL and Digest Auth • Pattern / Search View subscriptions via DASL • Batching notifications via XML or MIME • UDP Notifications can provoke secure Polling. • UDP Notifications can be Multicast • Extensible schemas with XML • Integration with DAV.
New Verbs SUBSCRIBE UNSUBSCRIBE POLL NOTIFY New Headers Subscription-ID: Notification-Type: Delivery-Control: Call-Back: Protocol Overview
Subscribing to a resource SUBSCRIBE http://server/resource HTTP/1.1 Man: http://www.iana.org/http/gena Subscription-Type: update Call-Back: http://mypc:8000/listener mailto: joshco@microsoft.com Delivery-Control: poll-interval=60 HTTP/1.1 200 Ok Extended-Response: 20041 ; comment=“Subscribed” Subscription-ID: ABADCAFE Call-Back: http://mypc:8000/listener mailto: joshco@microsoft.com
Event Notification NOFITY http://mypc:8000/listener HTTP/1.1 Man: http://www.iana.org/http/gena Subscription-Type: update Subscription-ID: ABADCAFE HTTP/1.1 200 Ok Extended-Response: 20042 ; comment=“Notification Acknowledged”
Polling a Subscription POLL http://server/resource HTTP/1.1 Man: http://www.iana.org/http/gena Subscription-Type: update Subscription-ID: ABADCAFE Delivery-Control: poll-interval=60; batch-mode=multipart/related HTTP/1.1 200 Ok Extended-Response: 20043 ; comment=“Events Pending” Content-Type: multipart/related Delivery-Control: poll-interval=60; batch-mode=multipart/related
Building upon GENA • An application specifies an XML schema • Register a schema subtype identifier • “plug in” to notification subtype • Application specific schema is cleanly layered on top of GENA messages. • Application schemas exist as message bodies or sub-bodies.
Existing Infrastructure • Proxy Servers / Firewalls • Administrators can effectively filter GENA message by using any of: • HTTP Extension ID (Mandatory) • HTTP Method • Resource URI / Call-back URI • When policy allows, existing proxies/firewalls can already deal with GENA/HTTP messages • Mail Servers • mailto callbacks end up in mailbox • Simple filters (procmail, exchange) can process incoming event notifications
Intelligent Infrastructure • GENA aware Proxy Servers • Fan-Out and Aggregation of Subscriptions • Subscriptions and Event Notifications become Hop-by-Hop • Allows multi-transport delivery. Long haul SMTP, medium haul TCP/HTTP and short haul/LAN UDP/HTTP over multicast • GENA Aware Message Bus • Mail Server, Proxy, etc • Allows extended queuing of events
Work in Progress • Proxy routing with Fan-out / Aggregation • Message encryption and authentication • Collaborating with SIP Authors • DAV Property Notification • Defining a subtype schema for PROPCHANGE • DASL based search result change notify
HTCPCP Schema • HyperText Coffee Pot Control Protocol • Schema ID: http://www.iana.org/gena/htcpcp <htcpcp> <coffeeType>Decaf</coffeeType> <coffeeType>Caffeine</coffeeType> <flavor>regular</flavor> <flavor>French Vanilla</flavor> <status>idle</status> <status>brewing</status> <status>ready</status> </htcpcp>
HTCPCP Subscription • Start a subscription for an event which indicates readiness of regular french vanilla coffee SUBSCRIBE http://masinter/pot1 HTTP/1.1 Notification-Type: update; subtype=http://www.iana.org/gena/htcpcp Call-Back: http://sleepy/help mailto:sleepy@microsoft.com Content-Type: text/xml <? XML version=“1.0”> <HTCPCP> <Status>ready</status> <flavor>French-Vanilla</flavor> <type>caffeine</type> <HTCPCP>
RVP is a GENA-based protocol for Instant Messaging • Extends GENA based on DAV functionality • Leverages DAV property model for rich notification functionality • Uses DAV MKCOL, DELETE, PROPFIND, PROPPATCH methods • Implemented by Microsoft for the Exchange Instant Messaging Server • Distributed notifications and status information between users, distribution lists, and generic “resources”, across the Internet • Strong security features, e.g. SSL • Microsoft is working with ISPs, telecommunications vendors to design interoperable notifications systems based on RVP
Conclusion • GENA is being implemented by Microsoft Products • Our wish is to collaborate to agree on a standard. GENA or other, we will comply. • Interested in GENA? Join us. • Majordomo@egg.microsoft.com • Subscribe gena • http://egg.microsoft.com/gena/