Don’t Call Them Middleboxes, Call Them Middlepipes
Hani Jamjoom – Dan Williams – Upendra Sharma IBM T. J. Watson Research Center
Dont Call Them Middleboxes, Call Them Middlepipes Hani Jamjoom Dan - - PowerPoint PPT Presentation
Dont Call Them Middleboxes, Call Them Middlepipes Hani Jamjoom Dan Williams Upendra Sharma IBM T. J. Watson Research Center PaaS Makes Things Easy Abstract out infrastructure resource management e.g., BlueMix, Cloud Foundry,
Hani Jamjoom – Dan Williams – Upendra Sharma IBM T. J. Watson Research Center
Service (e.g., MongoDB)
2
– e.g., BlueMix, Cloud Foundry, Heroku, Azure, AppEngine
– e.g., “I want a Ruby runtime or a MongoDB service”
– Automate provisioning, load balancing, auto-scaling, etc.
App Runtime (e.g., Ruby)
– Virtual networking, SDN, routing, firewalling
– Intrusion detection, WAN optimizers, etc.
– Monitoring, circuit breaker, failure injection, A/B testing, etc.
3
IDS App pp alert!!! something fishy here Ser Service vice
4
Circuit Breaker App pp if response time > X Ser Service vice Return Return Default Default
5
App Service (e.g., MongoDB) Middlebox 1 (e.g., IDS) Middlebox 2
6
App pp Ser Service vice (e.g., (e.g., MongoDB MongoDB)
7
Middlepipe Controller Performance Debugging Circuit Breaker Intrusion detection App Svc
I. Filters: Lightweight “code” that runs in the app container II. Aggregators: Control filters and asynchronously receive data
binds filters to aggregators.
Aggregators Filters
Exchange Exchange control & control & data data Request path Container Provisions aggregators Inserts/removes filters
8
Middlepipe Controller Middlepipe Controller Performance Debugging Circuit Breaker Intrusion detection App Svc
Why place filters inside App container?
underlying infrastructure
Aggregators Filters ilters
Request path Container Provisions aggregators Inserts/removes filters
9
Exchange control & data
Middlepipe Controller
Circuit Breaker Intrusion detection
App
Aggregators
Exchange control & data Request path Provisions aggregators
Body Markers Custom filter Standard filter
Filter chain
Custom filter
SHARED SEGMENT Shared page between all filters
Packet level filter Network packets
Request Level
Header 10 10
– Shared memory buffers, etc.
– Middlepipes insert “markers” in response – Application can look for markers and react (e.g., library can raise exception) – Other middlepipes can look for markers and react
11 11
Apps MongoDB Router Inbound requests go through an elastic L7 router
Apps bind to services via VCAP_SERVICES Load Balancer Cloud controller Service Node
Warden container
DEA (VM)
App
Language runtime
App
Lifecycle management
Middlepipe filters
12 12
$ cf create-middlepipe breaker create instance of middlepipe $ cf bind-middlepipe breaker myapp mongodb bind the “breaker” middlepipe to any communication between my app and mongodb $ cf bind-middlepipe bro myapp mongodb bind the “bro” middlepipe to any communication between my app and mongodb (in addition to the breaker)
13 13
– e.g., Netflix OSS, Airbnb, Etsy, etc. – Canary testing, Circuit Breaker, Stress testing
14 14
15 15
App pp Ser Service vice
App Service Middlebox 1 Middlebox 2