Thread-based programming paradigm
Overlapping of computation and communication
Separation of control and data functions
Optimize the data path
Increase flexibility by reducing control and data
dependency
Use separate connections for data and control
Dynamic support for multiple communication algorithms
Multiple flow/error control, multicasting algorithms
Multiple communication interface
Socket, Native ATM API, Trap
Portable software architecture