This Article 
 Bibliographic References 
 Add to: 
Constructive Protocol Specification Using Cicero
April 1998 (vol. 24 no. 4)
pp. 252-267

Abstract—New protocols are often useful, but are hard to implement well. Protocol synthesis is a solution, but synthesized protocols can be slow. Implementing protocols will be even more challenging in the future, since we expect that more advanced communication functionality will be moved from applications into protocol implementations to reduce application development effort. This trend can be seen from the recent enhancements of RPC to include semantics for supporting group communication, transactions, fault-tolerance, etc. [1],[2], [3], [4]. Protocol developers will also be challenged to provide correct and efficient protocol implementations that manage numerous concurrent I/O channels, and to increase protocol throughput to meet real-time requirements. These requirements demand better language support to facilitate precise control of multiple-thread interactions, and aggressive exploitation of parallelism in protocol execution. Protocol synthesis is also required for dynamic creation of protocol adapters in heterogeneous environments [5], [6]. This paper describes Cicero, a set of language constructs to allow constructive protocol specifications. Unlike other protocol specification languages, Cicero gives programmers explicit control over protocol execution, and facilitates both sequential and parallel implementations, especially for protocols above the transport-layer. It is intended to be used in conjunction with domain-specific libraries, and is quite different in philosophy and mode of use from existing protocol specification languages. A feature of Cicero is the use of event patterns [7] to control synchrony, asynchrony, and concurrency in protocol execution, which helps programmers build robust protocol implementations. Event-pattern driven execution also enables implementors to exploit parallelism of varying grains in protocol execution. Event patterns can also be translated into other formal models, so that existing verification techniques may be used.

[1] K.S. Yap, P. Tripathi, and S. Tripathi, “Fault Tolerant Remote Procedure Call,” Proc. Eigth Int'l Conf. Distributed Computing System, June 1988.
[2] B. Liskov and R. Scheifler, “Guardians and Actions: Linguistic Support for Robust, Distributed Programs,” ACM Trans. Programming Languages and Systems, vol. 5, no. 3, pp. 381-404, July 1983.
[3] L. Zahn, T.H. Dineen, P.J. Leach, E.A. Martin, N.W. Mishkin, J.N. Pato, and G.L. Wyant, Network Computing Architecture.Englewood Cliffs, N.J.: Prentice Hall, 1990.
[4] C. Maeda and B.N. Bershad, "Protocol Service Decomposition for High-Performance Networking," Proc. 14th ACM Symp. Operating Systems Principles, ACM, 1993, pp. 244-255.
[5] R.N. Chang and C.V. Ravishankar, "A Service Acquistion Mechanism for Server-Based Heterogeneous Distributed Systems," IEEE Trans. Parallel and Distributed Systems, vol. 5, no. 2, pp. 154-169, Feb. 1984.
[6] Y. Huang and C.V. Ravishankar, "Designing An Agent Synthesis System for Cross RPC Communication," IEEE Trans. Software Eng., vol. 20, no. 3, Mar. 1994.
[7] C.V Ravishankar, "POST: A Language for Dataflow Programming," PhD thesis, Computer Sciences Dept., Univ. of Wisconsin, Madison, 1987.
[8] Y. Huang and C.V. Ravishankar, "URPC: A Toolkit for Prototyping Remote Procedure Calls," The Computer J., vol. 39, no. 6, 1996.
[9] Y. Huang and C.V. Ravishankar, "Secure Synthesis and Activation of Protocol Translation Agents," Distributed Systems Eng. J., vol. 4, 1997.
[10] T.P. Blumer and D.S. Sidhu, "Mechanical Verification and Automatic Implementation of Communication Protocol," IEEE Trans. Software Eng., vol. 12, no. 8, pp. 827-843, Aug. 1986.
[11] G. v. Bochmann, G. Gerbert, and J.M. Serre, "Semiautomatic Implementation of Communication Protocols," IEEE Trans. Software Eng., vol. 13, no. 9, pp. 989-999, Sept. 1987.
[12] J.P. Briand, M.C. Fehri, L. Logrippo, and A. Obaid, "Executing LOTOS Specifications," B. Sarikaya and G. v. Bochmann, eds., Protocol Specification, Testing and Verification VI (IFIP/WG 6.1).Amsterdam, The Netherlands: North-Holland, 1987.
[13] J.P. Ansart, P.D. Amer, V. Chari, J.F. Lenotre, L. Lumbroso, E. Mariani, and E. Mattera, "Software Tools for Estelle," B. Sarikaya and G. v. Bochmann, eds., Protocol Specification, Testing and Verification VI (IFIP/WG 6.1).Amsterdam, The Netherlands: North-Holland, 1987.
[14] S.T. Vuong, A.C. Lau, and R.I. Chan, "Semiautomatic Implementation of Protocols Using an Estelle-C Compiler," IEEE Trans. Software Eng., vol. 14, no. 3, pp. 384-393, Mar. 1988.
[15] G. Albertengo, S. Forno, and A. Fumagalli, "TOP/PDT: A Toolkit for Development of Communication Protocols," IEEE J. Selected Areas in Communications,. vol. 8, no. 9, pp. 1,763-1,770, Dec. 1990.
[16] H.J. Burkhardt, H. Eckert, and A. Giessler, "Testing of Protocol Implementations—A Systematic Approach to Derivation of Test Sequences from Global Protocol Specifications," M. Diaz, ed., Protocol Specification, Testing and Verification V (IFIP/WG 6.1).Amsterdam, The Netherlands: North-Holland, 1986.
[17] J. Favreau and Jr. R.J. Linn, "Automatic Generation of Test Scenario Skeletons from Protocol Specifications Written in Estelle," B. Sarikaya and G. v. Bochmann, eds., Protocol Specification, Testing and Verification VI (IFIP/WG 6.1).Amsterdam, The Netherlands: North-Holland, 1987.
[18] L. Svobodova, "Implementing OSI Systems," IEEE J. Selected Areas in Communications, vol. 7, no. 7, pp. 1,115-1,130, Sept. 1989.
[19] M.B. Abbott and L.L. Peterson, "A Language-Based Approach to Protocol Implementation," IEEE/ACM Trans. Networking, vol. 1, no. 1, pp. 4-19, Feb. 1993.
[20] ISO, Information Processing Systems—Open System Interconnection—LOTOS—A Formal Description Technique Based on the Temporal Ordering of Observational Behavior, 1985.
[21] ISO, Information Processing Systems—Open System Interconnection-Estelle (Formal Description Technique Based on an Extended State Transition Model), 1987.
[22] CCITT, Specification and Description Language—Recommendation Z.100. 1986.
[23] R.M. Karp and R.E. Miller, "Properties of a Model for Parallel Computation: Determinacy, Termination, Queueing," SIAM J. of Applied Math., pp. 1,390-1,411, Nov. 1966.
[24] K.M. Kavi, B.P. Buckles, and U.N. Bhat, "Isomorphism Between Petri Nets and Dataflow Graphs," IEEE Trans. Software Eng., vol. 13, no. 10, pp. 1,127-1,134, Oct. 1987.
[25] G. Berry and G. Gonthier, "The Synchronous Programming Language ESTEREL: Design, Semantics, Implementation," Technical Report 842, INRIA, 1988.
[26] G. Agha, ACTORS: A Model of Concurrent Computation in Distributed Systems, MIT Press, Cambridge, Mass., 1986.
[27] W. Hseush and G. Kaiser, “Modeling Concurrency in Parallel Debugging,” ACM SIGPLAN Notices, vol. 25, no. 3, pp. 11–20, 1990.
[28] R.H. Campbell and N. Haberman, The Specification of Process Synchronization by Path Expressions, pp. 89–102, Springer-Verlag Dec. 1973.
[29] Y. Huang and C.V. Ravishankar, "Accommodating RPC Heterogeneities in Large Heterogeneous Distributed Environments," Proc. 26th Hawaii Int'l Conf. System Sciences, HICSS-26, Jan. 1993.
[30] M. E. Lesk and E. Schmidt, "Lex—A Lexical Analyzer Generator," Unix Programmer's Supplementary Documents, vol. 1, 1986.
[31] S.C. Johnson, "Yacc: Yet Another Compiler-Compiler," Unix Programmer's Supplementary Documents, vol. 1, 1986.
[32] Y.M. Huang, "Constructive Specification and Synthesis of Agents for Custom and Cross-RPC," PhD thesis, Electrical Eng. and Computer Science Dept., Univ. of Michigan, Ann Arbor, 1994.
[33] Sun Microsystems, Programming Utilities and Libraries. Mar. 1990.
[34] T.W. Doeppner, "A Threads Tutorial," Technical Report CS-87-06, Dept. of Computer Science, Brown Univ., Mar. 1987.
[35] K. Schwan, H. Forbes, A. Gheith, B. Mukherjee, and Y. Samiotakis, "A CThread Library for Multiprocessors," Technical Report GIT-ICS-91/02, College of Computing, Georgia Instit. of Tech., 1991.
[36] E.C. Cooper and R.P. Draves, C Threads. Dept. of Computer Science, Carnegie Mellon Univ., July 1987.
[37] S. Sechrest, "An Introductory 4.3BSD Interprocess Comm. Tutorial," Unix Programmer's Manual Supplementary Documents 1, 1:PS1:7-1—PS1:-25, 1986.
[38] A. Birrell and B. Nelson, "Implementing Remote Procedure Calls," ACM Trans. Computer Systems," vol. 2, pp. 39-59, 1984.
[39] W.W. Wadge and E.A. Ashcroft, Lucid, the Dataflow Programming Language. UK: Academic Press, 1985.
[40] W.W. Hwu and Y.N. Patt,“Hpsm, a high performance restricted data flow architecture having minimal functionality,” Proc. 13th Int’l Symp. Computer Architecture, pp. 297-306, June 1986.
[41] M. Johnson, Superscalar Microprocessor Design.Englewood Cliffs, N.J.: Prentice Hall, 1991.
[42] A. Valenzano, R. Sisto, and L. Ciminiera, "Rapid Prototyping of Protocols from LOTOS Specification," Software—Practice and Experience, vol. 23, no. 1, pp. 31-54, Jan. 1993.
[43] D. Le Gall, “MPEG: A Video Compression Standard for Multimedia Applications,” Comm. ACM, Apr. 1991.

Index Terms:
Protocol synthesis, protocol specification, protocol implementation, event-driven language.
Yen-Min Huang, Chinya V. Ravishankar, "Constructive Protocol Specification Using Cicero," IEEE Transactions on Software Engineering, vol. 24, no. 4, pp. 252-267, April 1998, doi:10.1109/32.677183
Usage of this product signifies your acceptance of the Terms of Use.