210 likes | 322 Views
Implementing Simple Replication Protocols using CORBA Portable Interceptors and Java Serialization. T. Bennani, L. Blain, L. Courtes, J.-C. Fabre, M.-O. Killijian , E. Marsden, F. Taïani. Toulouse, France. DSN-2004, Florence, Italy, July 1 st. Outline. Motivation Background information
E N D
Implementing Simple Replication Protocols using CORBA Portable Interceptors and Java Serialization T. Bennani, L. Blain, L. Courtes, J.-C. Fabre, M.-O. Killijian, E. Marsden, F. Taïani Toulouse, France DSN-2004, Florence, Italy, July 1st
Outline • Motivation • Background information • Reflection • FT-CORBA • Architecture and protocol • Primary-backup replication mechanism • Performance evaluation • Conclusion • Limits observed
Motivation • Reflection as a means to implement FT • Transparent for application • Separation of concerns • Reflection has been introduced into middleware • CORBA Portable Interceptors • Java Serialization • COTS based systems are cheaper • Increasing COTS software for critical systems • Experiment using COTS reflective mechanisms for implementing FT
fault-tolerance Principles of Reflection "the ability of a system to think and act about itself" meta-level observation control meta-interfaces base-level original system • separatingfault-tolerancefromfunctional concerns
Meta Object From FRIENDS To DAISY • Source-to-source trans. • C++ classes • Add reflective features • MetaObject Protocol • Object life cycle • Requests life cycle • State handling • Limits • Language dependent • Access to source code • External state • Determinism • Interception: EVENTS • Introspection : STATE • Intercession : ACTION Base Object
FT Portable Interceptor From FRIENDS To DAISY • Source-to-source trans. • C++ classes • Add reflective features • MetaObject Protocol • Object life cycle • Requests life cycle • State handling • Limits • Language dependent • Access to source code • External state • Determinism • DAISY COTS COTS • Interception: EVENTS • Introspection : STATE • Intercession : ACTION COTS Java CORBA Object
FT-CORBA • Augment CORBA with FT capabilities • Object Group Addressing (IOGRs)Transparent reference to group of servers • Extensions to failover semanticUnique request’s Ids and Retries upon request failures • Replication ManagementCreation, modification of groups • Fault ManagementFaults detection, report • Recovery ManagementState handling and checkpointing • Very few implementations yet • not a COTS
The DAISY PlatformJava based Object Request Broker Client Server IIOP Requests ORB ORB JVM JVM
The DAISY PlatformCORBA Portable Interceptors • Observe, delay and retarget out/in requests/exceptions • Cannot modify requests/replies (bad for SWIFI) REQUEST REQUEST Client Server IIOP Requests PIC PIS ORB ORB JVM JVM
The DAISY PlatformJava Serialization • Save and restore state of Java objects State of Server Client Server IIOP Requests PIC PIS Serialization ORB ORB JVM JVM
The DAISY PlatformDependableAdaptiveInterceptors & Serialization-basedsYstem Primary Server PIS ORB Client PIC JVM ORB Backup Server PIS JVM ORB JVM
The DAISY PlatformDependableAdaptiveInterceptors & Serialization-basedsYstem Primary Server PIS FTAlgorithm ORB Client PIC JVM ORB Backup Server PIS JVM ORB JVM
Primary Server PIS ORB Client PIC JVM ORB Backup Server PIS JVM ORB JVM Algorithm Overview • Primary-backup strategy • PIC responsible for • ID requests • Managing faults • PIS responsible for • Requests handling • State Management • Replica Management
Client Side Fault Handling • Main role: « detecting faults » • Simple detection scheme • Transient communication faults • Upon exception • ForwardRequest trick • N retries • Switch to backup Primary Server Exceptions PIS ORB Client PIC JVM ORB Backup Server PIS JVM ORB JVM
Primary Side • Main role: « handling requests » • Upon request • Invoke the request • Obtain server’s state • Forwards to backup • Request Info • Reply message • State Primary Server PIS ORB JVM Backup Server PIS ORB JVM
Backup Side • Main role: « recover primary failures » • Buffer and manage • « Primary packets » • Request Info • Reply message • State • Apply previous one • Upon request reception • Ping primary • Enter recovery mode Primary Server PIS ORB ? JVM Backup Server PIS ORB JVM
Recovery • Crash occures when • Primary idle • Handling request • Primary packet delivered but not the reply • Case 1 & 2 • Apply buffered state • Handle request • Case 3 • Discard buffered state • Re-execute request • Multi-client more complex Primary Server PIS ORB JVM Backup Server PIS ORB JVM
Performance Evaluation • Simple banking application • Account management • Withdrawal, deposit, etc. • Testbed • I686 1Ghz • Linux 2.4 • 100 Mb/s Ethernet • 1000 experiments • 1000 operations
Can’t modify input params Prohibit mechanisms E.g. ciphering Can’t modify output params Cannot forge replies Complexifies implementation Must invoke every requests Cannot prevent invocation Must raise exceptions PB for some mechanisms E.g. leader-follower Not CORBA objects Cannot implement easily non-functional interface Not transparent for the application Don’t have a thread No “I am alive” messages Cannot reorder requests Limit complexity of strategies PI Drawbacks
Conclusion • Middleware standards embbed • Simple reflective mechanisms • CORBA Portable Interceptors • Java Serialization • Useful for implementing • simple FT mechanisms • Simple wrapping techniques • IIOP level CRC32 • Synchronization interface (libc) • But new generation of Portable Interceptors • More complex mechanisms (active replication) • Better implementation • Without being too intrusive
Implementing Simple Replication Protocols using CORBA Portable Interceptors and Java Serialization T. Bennani, L. Blain, L. Courtes, J.-C. Fabre, M.-O. Killijian, E. Marsden, F. Taïani Toulouse, France DSN-2004, Florence, Italy, July 1st