gena framework generalized event notification architecture over http josh cohen josh cohen
TRANSCRIPT
GENA FrameworkGENA Framework
Generalized Event Notification Generalized Event Notification Architecture over HTTPArchitecture over HTTP
Josh Cohen <[email protected]>Josh Cohen <[email protected]>
http://egg.microsoft.com/gena/http://egg.microsoft.com/gena/
IntroductionIntroduction
Design GoalsDesign Goals Architecture LayoutArchitecture Layout Protocol OverviewProtocol Overview HTCPCPHTCPCP
An Example Schema SubtypeAn Example Schema Subtype
Design GoalsDesign Goals
Internet scaleInternet scale Generalized Event NotificationGeneralized Event Notification Leverage XML ExtensibilityLeverage XML Extensibility Leverage existing infrastructureLeverage existing infrastructure
HTTP Proxy Servers and FirewallsHTTP Proxy Servers and Firewalls
Use HTTP Object Model and FunctionalityUse HTTP Object Model and Functionality Fit into HTTP extension frameworkFit into HTTP extension framework Strong SecurityStrong Security Lightweight / High PerformanceLightweight / High Performance
Scenarios for Base ProtocolScenarios for Base Protocol
Simple, Lightweight SubscriptionsSimple, Lightweight Subscriptions Minimum requirements (HTTP only)Minimum requirements (HTTP only) Asynchronous event deliveryAsynchronous event delivery Synchronous (Polled) deliverySynchronous (Polled) delivery Lightweight UDP deliveryLightweight UDP delivery Variable use of infrastructure intelligenceVariable use of infrastructure intelligence Events can carry entity bodies or resource Events can carry entity bodies or resource
datadata
Architecture LayoutArchitecture Layout
GENA Base ProtocolGENA Base Protocol Layer model diagramLayer model diagram GENA Extension SchemasGENA Extension Schemas GENA Fan-out Aggregation Routing ProtocolGENA Fan-out Aggregation Routing Protocol Base protocol provides an easily Base protocol provides an easily
implemented functionality set but allows implemented functionality set but allows clear and easy extensibility for complex clear and easy extensibility for complex applications.applications.
SolutionsSolutions
Security is via TLS/SSL and Digest AuthSecurity is via TLS/SSL and Digest Auth Pattern / Search View subscriptions via DASLPattern / Search View subscriptions via DASL Batching notifications via XML or MIMEBatching notifications via XML or MIME UDP Notifications can provoke secure Polling.UDP Notifications can provoke secure Polling. UDP Notifications can be MulticastUDP Notifications can be Multicast Extensible schemas with XMLExtensible schemas with XML Integration with DAV.Integration with DAV.
Protocol OverviewProtocol Overview
New VerbsNew Verbs SUBSCRIBESUBSCRIBE UNSUBSCRIBEUNSUBSCRIBE POLLPOLL NOTIFYNOTIFY
New HeadersNew Headers Subscription-ID:Subscription-ID: Notification-Type:Notification-Type: Delivery-Control:Delivery-Control: Call-Back:Call-Back:
Subscribing to a resourceSubscribing to a resourceSUBSCRIBE http://server/resource HTTP/1.1Man: http://www.iana.org/http/genaSubscription-Type: updateCall-Back: http://mypc:8000/listener mailto: [email protected]: poll-interval=60
HTTP/1.1 200 OkExtended-Response: 20041 ;
comment=“Subscribed”Subscription-ID: ABADCAFECall-Back: http://mypc:8000/listener mailto: [email protected]
Event NotificationEvent NotificationNOFITY http://mypc:8000/listener HTTP/1.1Man: http://www.iana.org/http/genaSubscription-Type: updateSubscription-ID: ABADCAFE
HTTP/1.1 200 OkExtended-Response: 20042 ; comment=“Notification Acknowledged”
Polling a SubscriptionPolling a Subscription
POLL http://server/resource HTTP/1.1Man: http://www.iana.org/http/genaSubscription-Type: updateSubscription-ID: ABADCAFEDelivery-Control: poll-interval=60;
batch-mode=multipart/related
HTTP/1.1 200 OkExtended-Response: 20043 ;
comment=“Events Pending”Content-Type: multipart/relatedDelivery-Control: poll-interval=60;
batch-mode=multipart/related
Building upon GENABuilding upon GENA
An application specifies an XML schemaAn application specifies an XML schema Register a schema subtype identifierRegister a schema subtype identifier ““plug in” to notification subtypeplug in” to notification subtype Application specific schema is cleanly Application specific schema is cleanly
layered on top of GENA messages.layered on top of GENA messages. Application schemas exist as message Application schemas exist as message
bodies or sub-bodies.bodies or sub-bodies.
Existing InfrastructureExisting Infrastructure
Proxy Servers / FirewallsProxy Servers / Firewalls Administrators can effectively filter GENA Administrators can effectively filter GENA
message by using any of:message by using any of: HTTP Extension ID (Mandatory)HTTP Extension ID (Mandatory) HTTP MethodHTTP Method Resource URI / Call-back URIResource URI / Call-back URI When policy allows, existing proxies/firewalls can When policy allows, existing proxies/firewalls can
already deal with GENA/HTTP messagesalready deal with GENA/HTTP messages
Mail ServersMail Servers mailto callbacks end up in mailboxmailto callbacks end up in mailbox Simple filters (procmail, exchange) can process Simple filters (procmail, exchange) can process
incoming event notificationsincoming event notifications
Intelligent InfrastructureIntelligent Infrastructure
GENA aware Proxy ServersGENA aware Proxy Servers Fan-Out and Aggregation of SubscriptionsFan-Out and Aggregation of Subscriptions Subscriptions and Event Notifications become Subscriptions and Event Notifications become
Hop-by-HopHop-by-Hop Allows multi-transport delivery. Long haul SMTP, Allows multi-transport delivery. Long haul SMTP,
medium haul TCP/HTTP and short haul/LAN medium haul TCP/HTTP and short haul/LAN UDP/HTTP over multicastUDP/HTTP over multicast
GENA Aware Message BusGENA Aware Message Bus Mail Server, Proxy, etcMail Server, Proxy, etc Allows extended queuing of eventsAllows extended queuing of events
Work in ProgressWork in Progress
Proxy routing with Fan-out / AggregationProxy routing with Fan-out / Aggregation Message encryption and authenticationMessage encryption and authentication
Collaborating with SIP AuthorsCollaborating with SIP Authors
DAV Property NotificationDAV Property Notification Defining a subtype schema for PROPCHANGEDefining a subtype schema for PROPCHANGE
DASL based search result change notifyDASL based search result change notify
HTCPCP SchemaHTCPCP Schema
HyperText Coffee Pot Control ProtocolHyperText Coffee Pot Control Protocol Schema ID: http://www.iana.org/gena/htcpcpSchema 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 SubscriptionHTCPCP Subscription Start a subscription for an event which Start a subscription for an event which
indicates readiness of regular french vanilla indicates readiness of regular french vanilla coffeecoffee
SUBSCRIBE http://masinter/pot1 HTTP/1.1Notification-Type: update;
subtype=http://www.iana.org/gena/htcpcpCall-Back: http://sleepy/help
mailto:[email protected]: text/xml
<? XML version=“1.0”><HTCPCP> <Status>ready</status> <flavor>French-Vanilla</flavor> <type>caffeine</type><HTCPCP>
RVP is a GENA-based protocol RVP is a GENA-based protocol for Instant Messagingfor Instant Messaging
Extends GENA based on DAV functionalityExtends GENA based on DAV functionality Leverages DAV property model for rich notification Leverages DAV property model for rich notification
functionalityfunctionality Uses DAV MKCOL, DELETE, PROPFIND, PROPPATCH Uses DAV MKCOL, DELETE, PROPFIND, PROPPATCH
methodsmethods Implemented by Microsoft for the Exchange Instant Implemented by Microsoft for the Exchange Instant
Messaging ServerMessaging Server Distributed notifications and status information between Distributed notifications and status information between
users, distribution lists, and generic “resources”, across the users, distribution lists, and generic “resources”, across the InternetInternet
Strong security features, e.g. SSLStrong security features, e.g. SSL Microsoft is working with ISPs, telecommunications Microsoft is working with ISPs, telecommunications
vendors to design interoperable notifications systems vendors to design interoperable notifications systems based on RVPbased on RVP
ConclusionConclusion
GENA is being implemented by Microsoft GENA is being implemented by Microsoft ProductsProducts
Our wish is to collaborate to agree on a Our wish is to collaborate to agree on a standard. GENA or other, we will comply.standard. GENA or other, we will comply.
Interested in GENA? Join us.Interested in GENA? Join us. [email protected]@egg.microsoft.com Subscribe genaSubscribe gena http://egg.microsoft.com/gena/http://egg.microsoft.com/gena/