EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  <20052006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 2002  2003  2004  <20052006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: ICE and TIPC
From: Marty Kraimer <[email protected]>
To: [email protected]
Date: Wed, 27 Jul 2005 09:04:55 -0500
In the "V4 CA Client User Interface" wiki there is a section "Food for thought".
It mentions ICE and TIPC.

I looked briefly at TIPC and harder at ICE.

I took the following from a powerpoint presentation about TIPC. It shows that TIPC is an alternative to TCP

TCP/SCTP
 Too generic for efficient local communication, only connection oriented
UDP
Unreliable, no congestion control
Unix Sockets
Only single node, only connection oriented

What We Wanted
One communication service with the speed of UDP/UNIX sockets, the reliability of TCP, and the versatility of them all combined
Extend address location transparency beyond the local node
Have failure detection times at millisecond level, at least
A way to know when an address becomes available/unavailable, before we start using it


ICE ( Internet Communication Engine) is a successor to CORBA. The founder and several developers were formerly CORBA developers.

ICE appears to have a very efficient network protocal. An important feature is that it supports a Batch Request Message, i.e. it allows multiple requests within a single message.

Like CORBA ICE defines a language (Slice - Specification Language for ICE) and compilers that generate source files for several languages: C++, Java, C#, Visual Basic, and Python.

The Basic Slice types are: bool, byte, short, int, long, float, double, string

In addition it provides enum, struct, sequence, and dictionary.

string holds UTF-8 characters.

Compare this with:

enum naType {
   naTypeBoolean,     // same as bool
   naTypeOctet,       // same as byte
   naTypeInt16,       // same as short
   naTypeUInt16,      // NOT Slice type
   naTypeInt32,       // same as int
   naTypeUInt32,      // NOT nSlice type
   naTypeInt64,       // same as long
   naTypeUInt64,      // NOT slice type
   naTypeFloat32,     // sane as float
   naTypeFloat64,     // same as double
   naTypeString,      // same as string
   naTypeArray,       // like sequence
   naTypeStruct,      // same as struct
   naTypeMDArray,     // Could be implemented via other Slice types
   // Following are convenience types
   naTypeTimeStamp,   // Implemented as Slice struct
   naTypeEnum,        // Like enum
   naTypeMap          // same as dictionary
};

NOTE: ICE does not provide unsigned because it can't be implemented on all platforms.

See

http://www.zeroc.com/index.html

For more info about ICE.

Question: Why don't we just use ICE for communications for EPICS V4?

We could provide Slice definitions for everything we want predefined and allow Dynamic Invocation for everything else. The CA client and server libaries could be implemented via ICE.

If we adapt ICE a HUGE amount of work is done already and for many platforms.

One problem is that ICE is not currently implemented on vxWorks but since source code is available it may be easy to port the run time to vxWorks.

Marty Kraimer


Replies:
Re: ICE and TIPC Kay-Uwe Kasemir
Re: ICE and TIPC Matthias Clausen
Re: ICE and TIPC Ralph Lange

Navigate by Date:
Prev: Re: Network Accessable Types Ralph Lange
Next: Re: ICE and TIPC Kay-Uwe Kasemir
Index: 2002  2003  2004  <20052006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: RE: Type descriptor vs. enum Liyu, Andrei
Next: Re: ICE and TIPC Kay-Uwe Kasemir
Index: 2002  2003  2004  <20052006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 02 Feb 2012 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·