Title: GENA Framework
1GENA Framework
- Generalized Event Notification Architecture over
HTTP - Josh Cohen ltjoshco_at_microsoft.comgt
- http//egg.microsoft.com/gena/
2Introduction
- Design Goals
- Architecture Layout
- Protocol Overview
- HTCPCP
- An Example Schema Subtype
3Design 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
4Scenarios 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
5Architecture 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.
6Architecture Overview
7Solutions
- 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.
8Protocol Overview
- New Verbs
- SUBSCRIBE
- UNSUBSCRIBE
- POLL
- NOTIFY
- New Headers
- Subscription-ID
- Notification-Type
- Delivery-Control
- Call-Back
9Protocol Messages
10Subscribing to a resource
SUBSCRIBE http//server/resource HTTP/1.1 Man
http//www.iana.org/http/gena Subscription-Type
update Call-Back http//mypc8000/listener
mailto joshco_at_microsoft.com Delivery-Control
poll-interval60 HTTP/1.1 200
Ok Extended-Response 20041 commentSubscrib
ed Subscription-ID ABADCAFE Call-Back
http//mypc8000/listener mailto
joshco_at_microsoft.com
11Event Notification
NOFITY http//mypc8000/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 commentNotifica
tion Acknowledged
12Polling 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-interval60 batch-modemultipart/related
HTTP/1.1 200 Ok Extended-Response 20043
commentEvents Pending Content-Type
multipart/related Delivery-Control
poll-interval60 batch-modemultipart/related
13Building 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.
14Existing 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
15Intelligent 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
16Work 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
17Example Application
18HTCPCP Schema
- HyperText Coffee Pot Control Protocol
- Schema ID http//www.iana.org/gena/htcpcp
lthtcpcpgt ltcoffeeTypegtDecaflt/coffeeTypegt
ltcoffeeTypegtCaffeinelt/coffeeTypegt
ltflavorgtregularlt/flavorgt ltflavorgtFrench
Vanillalt/flavorgt ltstatusgtidlelt/statusgt
ltstatusgtbrewinglt/statusgt ltstatusgtreadylt/statusgt lt
/htcpcpgt
19HTCPCP Subscription
- Start a subscription for an event which indicates
readiness of regular french vanilla coffee
SUBSCRIBE http//masinter/pot1 HTTP/1.1 Notificati
on-Type update subtypehttp//www.iana.org/gen
a/htcpcp Call-Back http//sleepy/help
mailtosleepy_at_microsoft.com Content-Type
text/xml lt? XML version1.0gt ltHTCPCPgt
ltStatusgtreadylt/statusgt ltflavorgtFrench-Vanillalt/fl
avorgt lttypegtcaffeinelt/typegt ltHTCPCPgt
20RVP 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
21Conclusion
- 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_at_egg.microsoft.com
- Subscribe gena
- http//egg.microsoft.com/gena/