slides

190
-1

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
190
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

slides

  1. 1. Integration of QoS-Enabled Distributed Object Computing Middleware for Developing Next-Generation Distributed Applications <ul><li>BBN Technologies Washington University </li></ul><ul><li>Cambridge, MA St. Louis, MO </li></ul><ul><li>Craig Rodrigues, David A. Karr Yamuna Krishnamurthy </li></ul><ul><li>Joseph P. Loyall, Richard Schantz Vishal Kachroo </li></ul><ul><ul><ul><ul><ul><li>University of California </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Irvine, CA </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Douglas C. Schmidt </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>ACM SIGPLAN Workshop on </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Optimization of Middleware and Distributed Systems (OM 2001) </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>June 18, 2001 </li></ul></ul></ul></ul></ul>
  2. 2. Unmanned Air Vehicle uav.navair.navy.mil/home.htm
  3. 3. Prototype Architecture <ul><li>Video feed from off-board source (UAV) </li></ul><ul><li>Distributor sends video to hosts on ship’s network </li></ul><ul><li>Users’ hosts receive video and display it </li></ul><ul><li>Users send commands to UAV to control it </li></ul>1 2 3
  4. 4. Why is Adaptation Necessary? <ul><li>Limited resources </li></ul><ul><ul><li>CPU and network bandwidth are shared by many applications, not just video </li></ul></ul><ul><ul><li>Some applications are of higher priority than others, so it becomes necessary to adapt in response to scheduling and resource management decisions </li></ul></ul>
  5. 5. UAV adaptive tactics I P B I I I I I I I I P P P P P P P P P P B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B P P P P P P P P P P I BB P BB P BB P BB P BB P BB I BB P B <ul><li>NETWORK RESERVATION </li></ul><ul><li>Under excessive Network load - Use IntServ/DiffServ to reserve bandwidth </li></ul>... P BB P BB P BB I I I I <ul><li>DATA FILTERING </li></ul><ul><li>Excessive network or CPU load - Drop frames </li></ul><ul><li>LOAD BALANCING </li></ul><ul><li>Excessive CPU load - Move distributor to more lightly loaded host </li></ul>
  6. 6. Why use a Framework? <ul><li>Quality Objects (QuO) </li></ul><ul><ul><li>provides higher level programming model for specifying application-level QoS </li></ul></ul><ul><li>CORBA Audio/Video Service </li></ul><ul><ul><li>abstracts away network programming concerns such as connection management </li></ul></ul><ul><li>ACE QoS API (AQoSA) </li></ul><ul><ul><li>uniform API for QoS (RSVP, GQoS) </li></ul></ul>
  7. 7. UAV application design Video Source Process UAV SIMULATION HOST UAV Video File Video DIstributor VIDEO DISTRIBUTION HOST QuO Contract VIDEO DISPLAY HOST 1 Video Display Proxy CORBA A/V Streaming Service + AQoSA Resource Reservation (IntServ) CORBA A/V Streaming Service <ul><li>Reused Off the Shelf Software </li></ul><ul><li>DVDView video player </li></ul><ul><li>Common middleware services </li></ul><ul><li>TAO CORBA A/V Service </li></ul><ul><li>QuO </li></ul><ul><li>AQoSA </li></ul><ul><li>TAO Naming Service </li></ul>Frame filtering commands Observed throughput Reservation requests Video Display VIDEO DISPLAY HOST 2 VIDEO DISPLAY HOST N
  8. 8. Functionality of the UAV architecture Video Source Process UAV SIMULATION HOST Video Distributor Process VIDEO DISTRIBUTION HOST Video Display Process VIDEO DISPLAY HOST 1 Display Proxy Process VIDEO DISPLAY HOST N <ul><li>Functionality </li></ul><ul><li>Read bytes from a file </li></ul><ul><li>Convert into frames </li></ul><ul><li>Send out pipe </li></ul><ul><li>Other inter-twined aspects </li></ul><ul><li>Timing : periodic delivery of frames </li></ul><ul><li>Base Functionality </li></ul><ul><li>Receive frames </li></ul><ul><li>Send frames to registered receivers </li></ul>Other intertwined aspects <ul><li>Functional: </li></ul><ul><li>Frame filtering (i.e., frame dropping) </li></ul><ul><li>QoS: </li></ul><ul><li>Measuring frame rate </li></ul><ul><li>Measuring resource usage and availability (CPU and network) </li></ul><ul><li>Adapting to performance degradation (e.g., frame dropping, load balancing) </li></ul><ul><li>Real Time: </li></ul><ul><li>Time stamping </li></ul><ul><li>Sequencing </li></ul><ul><li>Base Functionality </li></ul><ul><li>Receive frames </li></ul><ul><li>Display frames on the screen </li></ul>Other intertwined aspects <ul><li>QoS: </li></ul><ul><li>Measuring frame rate </li></ul><ul><li>Real Time: </li></ul><ul><li>Removing time stamp </li></ul><ul><li>Removing sequencing </li></ul><ul><li>Discarding frame if late or out of sequence </li></ul>VIDEO DISPLAY HOST 2
  9. 9. Quality Objects (QuO) <ul><li>Provides a higher level programming model for specifying application QoS </li></ul><ul><ul><li>operating regions specified in QuO Contracts </li></ul></ul><ul><ul><li>transitions between regions trigger adaptive behaviors </li></ul></ul><ul><li>Support for different middleware architectures </li></ul><ul><ul><li>CORBA (Java and C++) </li></ul></ul><ul><ul><li>Java RMI </li></ul></ul>
  10. 10. Specifying QoS behaviors with QuO behavior Sequence () { int sequence_number = 1; void distributor::send_frame(ACE_Message_Block *frame) { inplaceof METHODCALL { // insert sequence number ACE_Message_Block *seq_msg = add_sequence_number(frame, sequence_number); remoteObj->send_frame(seq_msg); seq_number++; } } }; behavior Filter () { void distributor::send_frame(ACE_Message_Block *frame) { inplaceof METHODCALL { // examine contract and drop B or P frames if necessary ... } }; Video Source Process UAV SIMULATION HOST Video Distributor Process VIDEO DISTRIBUTION HOST Video Display Process VIDEO DISPLAY HOST 1 Display Proxy Process Periodic Delivery Insert Timestamp Filter? Insert Seq. No. Filter? Insert Seq. No. Remove Timestamp Remove Seq. No. class Sender { public: /// Constructor Sender (void); /// Method to initialize the various data components. int init (int argc, char **argv, CORBA::Environment&); /// Method to pace and send data from a file. int pace_data (CORBA::Environment &); /// Accessor to the connection manager. Connection_Manager &connection_manager (void); /// Amount of debugging info to print out: 0 = none, 10 = lots int debug_level_; private: /// Method to parse the command line arguments. ... }; ... class Distributor { public: /// Constructor Distributor (void); /// Destructor. ~Distributor (void); /// Initialize data components. int init (int argc, char **argv, CORBA::Environment &); /// Parse args. int parse_args (int argc, char **argv); // Flag to know when we are done. int done (void) const; void done (int); /// Accessor to connection manager. Connection_Manager &connection_manager (void); /// Amount of debugging output to print out; 0 = none, 10 = lots int debug_level_; protected: /// Connection manager. ... }; ... C++ Application Code class Sender { public: /// Constructor Sender (void); /// Method to initialize the various data components. int init (int argc, char **argv, CORBA::Environment&); /// Method to pace and send data from a file. int pace_data (CORBA::Environment &); /// Accessor to the connection manager. Connection_Manager &connection_manager (void); /// Amount of debugging info to print out: 0 = none, 10 = lots int debug_level_; private: /// Method to parse the command line arguments. ... }; ... class Distributor { public: /// Constructor Distributor (void); /// Destructor. ~Distributor (void); /// Initialize data components. int init (int argc, char **argv, CORBA::Environment &); /// Parse args. int parse_args (int argc, char **argv); // Flag to know when we are done. int done (void) const; void done (int); /// Accessor to connection manager. Connection_Manager &connection_manager (void); /// Amount of debugging output to print out; 0 = none, 10 = lots int debug_level_; protected: /// Connection manager. ... }; ... class Sender { public: /// Constructor Sender (void); /// Method to initialize the various data components. int init (int argc, char **argv, CORBA::Environment&); /// Method to pace and send data from a file. int pace_data (CORBA::Environment &); /// Accessor to the connection manager. Connection_Manager &connection_manager (void); /// Amount of debugging info to print out: 0 = none, 10 = lots int debug_level_; private: /// Method to parse the command line arguments. ... }; ... class Distributor { public: /// Constructor Distributor (void); /// Destructor. ~Distributor (void); /// Initialize data components. int init (int argc, char **argv, CORBA::Environment &); /// Parse args. int parse_args (int argc, char **argv); // Flag to know when we are done. int done (void) const; void done (int); /// Accessor to connection manager. Connection_Manager &connection_manager (void); /// Amount of debugging output to print out; 0 = none, 10 = lots int debug_level_; protected: /// Connection manager. ... }; ... behavior Timestamp () { void distributor::send_frame(ACE_Message_Block *frame) { inplaceof METHODCALL { ACE_Message_Block *timed_msg = add_timestamp(frame); remoteObj->send_frame(timed_msg); } } void displayproxy::send_frame(ACE_Message_Block *frame) {extern long last_time_processed; inplaceof METHODCALL { ACE_Message_Block *timed_msg = remove_timestamp(frame, tsp); if (tsp >= last_time_processed) { // is this a late frame remoteObj->send_frame(timed_msg); last_time_processed = tsp; } // else drop frame, a more recent frame has already been delivered }; VIDEO DISPLAY HOST N VIDEO DISPLAY HOST 2
  11. 11. CORBA Audio/Video Streaming Service <ul><li>Goals of OMG CORBA A/V Service Specification </li></ul><ul><ul><li>Define standard mechanisms for: </li></ul></ul><ul><ul><ul><li>Stream Establishment </li></ul></ul></ul><ul><ul><ul><li>Stream Control </li></ul></ul></ul><ul><ul><ul><li>Multiple Flows </li></ul></ul></ul><ul><ul><ul><li>Multiple Protocols </li></ul></ul></ul><ul><ul><ul><li>QoS </li></ul></ul></ul><ul><li>Goals of TAO A/V Streaming Service Project </li></ul><ul><ul><li>Implement OMG CORBA A/V Service Specification using TAO </li></ul></ul>
  12. 12. CORBA A/V Service Overview Stream EndPoint (Sink) Stream Interface Control Object Stream Adaptor POA ORB Control and Management Objects POA Stream EndPoint (Source) Stream Interface Control Object Multimedia Stream Stream Adaptor
  13. 13. CORBA A/V Service Overview <ul><li>StreamCtrl </li></ul><ul><ul><li>controlling the stream </li></ul></ul><ul><li>MMDevice </li></ul><ul><ul><li>interface for logical or physical device </li></ul></ul><ul><li>StreamEndPoint </li></ul><ul><ul><li>network specific aspects of a stream </li></ul></ul><ul><li>Vdev </li></ul><ul><ul><li>properties of the stream </li></ul></ul>
  14. 14. QoS Enabled TAO A/V Service <ul><li>TAO AV QoS Framework </li></ul><ul><ul><li>AQoSA </li></ul></ul><ul><ul><li>QoS Mapping </li></ul></ul><ul><ul><li>QoS Monitoring </li></ul></ul><ul><ul><li>QoS Adaptation </li></ul></ul><ul><li>ACE QoS API (AQoSA) </li></ul><ul><ul><li>RAPI </li></ul></ul><ul><ul><li>GQoS </li></ul></ul>
  15. 15. AQoSA API <ul><li>Binds flows to reservations in a uniform and portable way </li></ul><ul><li>Encapsulates application’s notion of the underlying network QoS </li></ul><ul><li>Separates QoS properties of its sessions from low-level socket data transfer aspects </li></ul><ul><li>Allows the application to specify and request QoS. Be notified if the QoS was not available </li></ul><ul><li>Updates itself based on QoS notifications </li></ul><ul><li>Portably wraps the QoS parameters </li></ul><ul><li>Implementation targets (RSVP) Resource reSerVation Protocol </li></ul><ul><ul><li>RAPI & GQoS </li></ul></ul>
  16. 16. AQoSA Architecture
  17. 17. Connection Establishment request_connection app qos network qos StreamCtrl aMMDevice bMMDevice create _ A A_Endpoint, A_VDev create _ B B_Endpoint, B_VDev A _ Endpoint aVDev bVDev B_Endpoint connect configure (with QoS) QoS Mapper AQoSA create session reserve path QoS Monitor register session bind_devs (aMMDevice, bMMDevice) and callback qos events
  18. 18. Change in QoS QoS Monitor qos events AQoSA Shaping Filter Selection Filter Adapto r Adaptor AV_Adaptor X X change modify adapt configure adapt
  19. 19. Integrating TAO A/V in the UAV Application Video Forwarding Code Video Source Process UAV Video File Instrumentation Queue Size Bandwidth Video Distributor Process VIDEO DISTRIBUTION HOST Contract QuO Adaptive Control Process Video Display Code Video Display Process VIDEO DISPLAY HOST Video Forwarding Code Display Proxy Process Contract Output Rate Control Throughput CPU load Output Rate Control Throughput QuO Adaptive Control Process CPU load Video Forwarding Code Adhoc TCP Connection Adhoc TCP Connection A/V Stream A/V Stream + AQoSA <ul><li>Host name and port info </li></ul><ul><li>Migration of the processes across different hosts was cumbersome </li></ul><ul><li>Poor scalability and flow management </li></ul><ul><li>Not flexible to design changes and addition of components. </li></ul><ul><li>More flexible than ad-hoc socket code </li></ul><ul><li>Facilitated additional features: </li></ul><ul><ul><li>Multiple Viewers </li></ul></ul><ul><ul><li>Multiple receivers </li></ul></ul><ul><ul><li>Movable distributors </li></ul></ul><ul><ul><li>Network level QoS (with AQoSA) </li></ul></ul>
  20. 20. Flexible Configuration <ul><li>Distributor Switching </li></ul><ul><li>Sender Switching </li></ul><ul><li>Multiple Receivers </li></ul><ul><li>Multiple Distributors </li></ul><ul><li>Sender Restarting </li></ul>Sender Distributor Receiver Distributor X X Sender X Receiver-1 Receiver-2 Distributor-1 X X
  21. 21. Further References and Obtaining Software <ul><li>http://www.dist-systems.bbn.com/tech/QuO/ </li></ul><ul><ul><li>information about QuO framework </li></ul></ul><ul><ul><li>to obtain QuO, send e-mail to quo-help@bbn.com </li></ul></ul><ul><li>http://www.cs.wustl.edu/~schmidt/TAO.html </li></ul><ul><ul><li>source code for TAO ORB, CORBA A/V service, and AQoSA </li></ul></ul><ul><ul><li>UAV application uses TAO 1.1.15 or higher (TAO 1.2 major release is imminent) </li></ul></ul><ul><ul><li>further information can be obtained via e-mail from av@oomworks.com </li></ul></ul><ul><li>Contact information: </li></ul><ul><ul><li>Craig Rodrigues, crodrigu@bbn.com, 1-617-873-4725 </li></ul></ul><ul><ul><li>Yamuna Krishnamurthy, yamuna@oomworks.com, 1-314-726-1368 </li></ul></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×