Transcript GENA Framework
GENA Framework
Generalized Event Notification Architecture over HTTP Josh Cohen
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.
Architecture Overview
RVP GENA subtype schema
XML
GENA base DAV HTTP/1.1
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.
Protocol Overview
New Verbs
SUBSCRIBE
UNSUBSCRIBE POLL NOTIFY
New Headers
Subscription-ID:
Notification-Type: Delivery-Control: Call-Back:
Protocol Messages
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: [email protected]
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: [email protected]
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
Example Application
HTCPCP Schema
HyperText Coffee Pot Control Protocol Schema ID: http://www.iana.org/gena/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:[email protected]
Content-Type: text/xml XML version=“1.0”>
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.
Subscribe gena http://egg.microsoft.com/gena/