160 likes | 307 Views
Institute of Computer Science AGH, Krak ó w, Poland ACC CYFRONET AGH, Kraków, Poland. Towards M ultilanguage and M ultiprotocol I nteroperability : Experiments with Babel and RMIX. Maciej Malawski, Daniel Harężlak, Marian Bubak. Outline.
E N D
Institute of Computer Science AGH, Kraków, Poland ACC CYFRONET AGH, Kraków, Poland Towards Multilanguage and Multiprotocol Interoperability: Experiments withBabel and RMIX Maciej Malawski, Daniel Harężlak, Marian Bubak
Outline • Motivation: multiple languages and protocols in Grids • Background: MOCCA = H2O + CCA • RMIX multiprotocol library • BABEL multilanguage interoperability tool • Combining RMIX and Babel
Motivation Grids are heterogeneous Multiple programming languages – in single application Java for middleware C for system programming FORTRAN for computing Python for scripting Multiple protocols – in single application High speed local networks (Myrinet) TCP/SSL/TLS in WAN SOAP for loosely coupled message exchange Overlay P2P networks for traversing private network boundaries (NATs) Context: MOCCA component framework
Background: CCA and H2O Common Component Architecture (CCA) • Component standard for HPC • Uses and provides ports described in SIDL • Support for scientific data types • Existing tightly coupled (CCAFFEINE) and loosely coupled, distributed (XCAT) frameworks H2O • Distributed resource sharing platform • Providers setup H2O kernel (container) • Allowed parties can deploy pluglets (components) • Separation of roles: decoupling • Providers from deployers • Providers from each other • RMIX: efficient multiprotocol RMI extension
Example Scenarios of H2O Registration and Discovery e-mail,phone, ... UDDI JNDI LDAP DNS GIS ... Publish Find ... Deploy Provider A nativecode A A B A Deploy B Client Provider Client Provider B Client Provider Deploy LegacyApp Repository Repository A B A B Reseller Developer C C 1. Provider = deployer • e.g. resource = legacy application 3. Client = deployer • e.g. client runs custom distributed application on shared resources 2. Reseller:= developer = deployer • e.g. computational service offered within a grid system
RMIX Communication Substrate Service RMIX RMIXJRMPX RMIXXSOAP RMIXRPCX RMIX JXTA Java Web Services ONC-RPC JXTA SOAP clients • Extensible framework • Remote Method Invocations paradigm • Pluggable protocol providers • Multiple protocols supported • JRMPX, ONC-RPC, SOAP • Request-Response and Asynchronous calls • Combines simplicity, flexibility, and performance
RMIX: Multiple Protocols Protocol switching Protocol negotiation Various protocol stacks for different situations SOAP: interoperability SSL: security ARPC, custom (Myrinet, Quadrics): efficiency Pluggable transport layer: support for JXTA P2P network H2O Kernel security H2O Kernel Internet firewall efficiency H2O Kernel H2O Kernel Harness Kernel efficiency H2O Kernel
MOCCA Implementation in H2O • Each component running in separate pluglet • Facilitated deployment and security • Thanks to H2O kernel security mechanisms, multiple components may run without interfering • Using RMIX for communication – efficiency, multiprotocol interoperability • Flexibility and multiple scenarios – as in H2O • MOCCA_Light: pure Java implementation - need for supporting multilanguage components
Multilanguage Solution - Babel • SIDL – Scientific Interface Definition Language • Standard for CCA Components • Supports arrays and complex types • Focus on interfaces • Babel: • SIDL parser • Code generator • Runtime library • Intermediate ObjectRepresentation (IOR) • Core of Babel object • Array of function pointers • Generated code in C package example version 1.2 { class Hello { string hello( in string hello); } } // user defined non-static methods: /** * Method: hello[] */ public java.lang.String hello_Impl ( /*in*/ java.lang.String hello ) { // DO-NOT-DELETE splicer.begin(example.Hello.hello) // Insert-Code-Here {example.Hello.hello} (hello) return ”Server says: ” + hello; // DO-NOT-DELETE splicer.end(example.Hello.hello) } /** * Method: hello[] */ char* example_Hello_hello( /*in*/ example_Hello self, /*in*/ const char* hello);
Fortran native library SIDL SIDL C++ native library Currently: Babel for Local Applications • All Babel objects in one process • Implemented in CCAFFEINE framework • Existing multilanguage CCA components – see CCA tutorial Java application Babel IOR Babel IOR
Network SIDL C++ native library SIDL SIDL SIDL Our Solution • Babel + RMIX • Implementation of Babel RMI extensions • generic mechanism of method invocation (reflection) • Dynamic loading of communication library • No need for code generation and compilation RMIX library RMIX library Babel IOR Babel IOR Java application Fortran native library
sidl.io <<interface>> InstanceHandle <<interface>> Invocation <<interface>> ServerInfo <<interface>> Response <<interface>> Deserializer <<interface>> Serializer sidl.rmi RmixInstanceHandle RmixSerializer RmixDeserializer RmixServerInfo RmixInvocation RmixResponse Class Diagram rmix
Conclusions • Combining Babel with RMIX will offer distributed application flexibility • Now: beginning of implementation phase • Applicable to MOCCA framework, but the solution is general • Interfacing legacy systems • Interfacing Web services • More interoperability? – multiple component standards...
References Maciej Malawski, Dawid Kurzyniec, and Vaidy Sunderam. MOCCA – towards a distributed CCA framework for metacomputing, 10th International Workshop on High-Level Parallel Programming Models and Supportive Environments (HIPS2005) at IPDPS’2005 http://mathcs.emory.edu/dcl/h2o/papers/h2o_hips05.pdf H2O Project homepage: http://www.mathcs.emory.edu/dcl/h2o/ CCA Forum: http://www.cca-forum.org CCA Specification Tutorial Babel: http://www.llnl.gov/CASC/components/ MOCCA homepage: http://www.icsr.agh.edu.pl/mambo/mocca Download binary and source distribution README