Presentation is loading. Please wait.

Presentation is loading. Please wait.

QoS Provisioning in CORBA Aspects & Composition Filters Mehmet Aksit * Ali Noutash + Marten van Sinderen*

Similar presentations


Presentation on theme: "QoS Provisioning in CORBA Aspects & Composition Filters Mehmet Aksit * Ali Noutash + Marten van Sinderen*"— Presentation transcript:

1 QoS Provisioning in CORBA Aspects & Composition Filters Mehmet Aksit * [aksit@cs.utwente.nl] Ali Noutash + [ali_noutash@oti.com] Marten van Sinderen* [sinderen@ctit.utwente.nl] Lodewijk Bergmans* [lbergmans@acm.org] * University of Twente, Enschede, The Netherlands + Object Technology Int. (OTI), Ottawa, Canada

2 Introduction Context: AMIDST project: –QoS-aware Middleware a generic, framework-based approach –Enhances middleware to reason about QoS requirements and meet those needs. –Architecture adopts a feed-back control loop. This talk: –Propose Aspect-Orientation & Composition Filters Motivate for enhancing middleware with Specialized Composition Filters for dedicated transport plugins

3 Aspect-Orientation a.k.a. Multi-Dimensional Separation (& Composition) of Concerns Key characteristics –addresses tangled code if it is due to crosscutting concerns by making each concern a module abstraction –concerns are structured along (multiple) separate dimensions functional & non-functional –mapping between crosscutting concerns: 1 class, n methods n classes, n methods wildcards –imposition of behavior inverse dependencies because of m

4 AOP with Composition Filters A quick overview of features Example filter specs: BoundedBuffer assert:Error={ElemOk=>*}; sync:Wait={ FreeSpace=>put, ElemsLeft=>get, *\{put, get} }; cntr:Meta={ CntOn=>[*]stats.count }; disp:Dispatch={ [alloc]MemMan.*, inner.*, simpleBuf.* }; kernel internal object(s) external objects {…, … } conditions MemMan stats Simple Buf

5 Network CORBA OCI Buffer ORB Interface (IDL) GIOP (RPC Protocol) Transport Layer Buffer Server ObjectClient Object

6 Call Send (abstract) (RPC-Message) Call Receive (RPC-Message) Call ReadBuffer (buffer) Call writeBuffer (abstract) (buffer) GIOP Interface (IDL) Transport Layer TCPIP (socket) Aspects: Buffering Distribution Synchronization Receiving RPCSending RPC Simplified OCI-IIOP interaction Buffer Receive(buffer){ java.io.InputStream in = socket_.getInputStream(); int result = in.read(buf.data()} Send(buffer) { java.io.OutputStream out = socket_.getOutputStream(); out.write(buf.data(), pos(), length()); out.flush();} 431 2

7 Call Send (RPC-Message) Call Receive (RPC-Message) Call ReadBuffer (buffer) Call writeBuffer (buffer) GIOP Interface (IDL) Transport Layer UDPIP (socket) Receiving RPCSending RPC Simplified OCI-UDPIOP interaction Buffer Error: Buffer isn't Full Socket.Send (datagramPacket=1k) UDPSocket.Receive (datagramPacket=1k) 14 32

8 Call ReadBuffer (buffer) GIOP Interface (IDL) Receiving RPC OCI-UDPIOP implementation Transporter() { loop (buffer isnot FULL) { Receive(dataUnit) prossesBuffer(dataUnit,buffer) if (buffer is Full) notify () } } Blocker() { Suspend() } Buffer Dynamic transport wrapper Call Receive (RPC-Message) Receive (RPC-Message) Fork TCPIP Receive (dataUnit=%10Buffer) UDPIP Receive (dataUnit=%25Buffer) readHeader (12Bytes,buffer) Read&DeleteBuffer (allBuffer,buffer) quality of service access points (delegation points)

9 Synchronization aspect attribute bufferSize /*determines the size of buffer */ attribute bufferCounter /*determines amount of data filled/red to/from buffer */ suspendCondition = (bufferCounter<bufferSize) Thread 1(main thread) Blocker() { Suspend() } Thread 2 Transporter() { While (NOT suspendCondition) { receive/send (dataUnit) processBuffer(dataUnit,buffer) if (buffer is Full) notify () } /* End up the suspended main thread }

10 attribute bufferSize /*determines the size of buffer */ attribute bufferCounter /*determines amount of data to be filled/red to/from buffer */ suspendCondition = {bufferCounter<bufferSize} attribute EndOfNetworkProcess /* boolean variable to be set by QoS Manager attribute EndOfBufferProcess / * boolean variable to be set by GIOP suspendCondition= {suspendCondition AND EndOfNetworkProcess AND EndofBufferProcess) Thread 1(main thread) /* Block main thread*/ Suspend(); Thread 2 While (NOT suspendCondition) If (not endOfNetworkProcess) send /receive (data) If (not EndofBufferProcess) processBuffer(data,buffer) IF (EndOfSuspend) /* End up the suspended main thread Notify() Composing QoS aspect with Synchronization aspect

11 Dynamic transport wrapper with Composition Filter Object Model Send/receive data Process buffer dispatch filter (QoS and Synch aspects) dispatch filter (synchronization aspect) Wait filter (synchronization aspect) Multithread (thread fork) delegation meta filter (synchronization aspect) loop IP Multicast transport TCPIP transport UDPIP transport fork Dispatch filter (QoS and synch aspects)

12 Conclusions We need dynamic adaptability for QoS provisioning We need Aspect Oriented Transport Layer We need Reflective Transport Layer We need QoS access points in Transport Layer Future work Implementing Transport wrapper Implement run-time transport plug-ins Implement Quality of Service access points 1) for switching Transport Plug-ins 2) Switching Buffering processes


Download ppt "QoS Provisioning in CORBA Aspects & Composition Filters Mehmet Aksit * Ali Noutash + Marten van Sinderen*"

Similar presentations


Ads by Google