Reliable Server PoolingSockets API
Presenter: Aron Silverton
Email: [email protected]
IETF 61
Washington, D.C.
2004-11-08
2004-11-08 RSerPool API 2
Overview
• Goal– Sockets-like API for RSerPool (rsp_socket)– Mimics UNIX sockets API
• Retain familiar programming model (uses ‘rsp_’ prefix)• Change semantics accordingly
– Consider for Working Group document
• Scope– Data I/O functions– Socket utility functions– RSerPool utility functions
2004-11-08 RSerPool API 3
Status
• Initial draft created• Submitted to IETF 2004-11-08• Draft covers:
– Function prototypes, structures and usage– Includes echo server and client example
• Current open work items– API usage– Structure definitions (not covered in this presentation)– Function parameters (not covered in this presentation)
2004-11-08 RSerPool API 4
Data I/O Functions
• Calls providing send/receive functionality• Functions:
– rsp_sendmsg() – Similar to sendmsg()• Supports ‘send message by Pool Handle’ and ‘send message
by PE Handle’
– rsp_recvmsg() – Similar to recvmsg()
– Others may be defined later
2004-11-08 RSerPool API 5
Socket Utility Functions
• Calls providing basic functionality for:– Controlling RSerPool HA sockets– Getting information about active sockets
• Functions:– rsp_initialize() – initializes the RSerPool stack– rsp_socket() – sets up ASAP resources and returns a
socket FD– rsp_bind() – binds the HA socket to all desired
addresses and the standard port numbers• Supports multi-homing
2004-11-08 RSerPool API 6
Socket Utility Functions (cont.)
• Functions:– rsp_connect() – proposed hybrid ‘bind’ can be used to
pre-fetch information related to a specified Pool Handle and store locally
• Could also be separate from rsp_bind() and called subsequently if so desired
– rsp_close() – closes the specified socket and releases corresponding ASAP resources
– rsp_cleanup() – cleans up resources established by rsp_initialize()
2004-11-08 RSerPool API 7
RSerPool Utility Functions
• Calls for performing various RSerPool functions• Functions:
– rsp_register() – registers a PE as a member of a specified pool
– rsp_deregister() – removes or deregisters a PE from a specified pool
– rsp_getPoolInfo() – returns information, e.g., PE list, Pool Policy, etc., about a specified pool to the caller
2004-11-08 RSerPool API 8
RSerPool Utility Functions (cont.)
• Functions:– rsp_reportFailure() – used by a PU or PE to report an
unreachable PE in a pool
– rsp_notify() – used to pass select RSerPool and lower layer events back to the HA sockets user
• Could be modeled after sctp_notify()
– rsp_forceFailover() – provides functionality to allow an RSerPool user to trigger a failover (if the upper layer is handling failure detection)
• Needed functionality, but perhaps not in its own call
Comments?