Opinion for review: PSARC 2007/587 Volo Low Latency Socket Framework
Frank Che
Frank.Che at Sun.COM
Thu Oct 9 19:05:29 PDT 2008
Please review the draft opinion by October 17th, 2008. The ms and txt
versions are in the case directory.
Frank.
---------------------
sun
microsystems Systems Architecture Committee
_________________________________________________________________
Subject: Volo -- Low Latency Socket Framework
Submitted by: Rao Shoaib
File: PSARC/2007/587/opinion.ms
Date: August 20th, 2007
Committee: Kais Belgaied (opinion written by Frank Che),
Mark Carlson, Garrett D'Amore
Product Approval Committee:
Solaris PAC
solaris-pac at sun.com
1. Summary
The Volo project delivers a framework to dynamically add
function call based, low latency, and high performance sock-
ets. It also delivers a kernel socket API.
2. Decision & Precedence Information
The project is approved as specified in references [1] and
[2] and as modified in section 7.1 below.
The project may be delivered in a minor release of Solaris.
3. Interfaces
The project exports the following interfaces.
____________________________________________________________________________
| Interfaces Exported |
|_______________________|_______________________|__________________________|
|Interface | Classification | Comments |
|_______________________|_______________________|__________________________|
|socket_create | Project Private | <fs/sockfs/sockcommon.h>|
|socket_newconn | Project Private | <fs/sockfs/sockcommon.h>|
|socket_bind | Project Private | <fs/sockfs/sockcommon.h>|
|socket_listen | Project Private | <fs/sockfs/sockcommon.h>|
|socket_accept | Project Private | <fs/sockfs/sockcommon.h>|
|socket_connect | Project Private | <fs/sockfs/sockcommon.h>|
|socket_sendmsg | Project Private | <fs/sockfs/sockcommon.h>|
|socket_sendmblk | Project Private | <fs/sockfs/sockcommon.h>|
|_______________________|_______________________|__________________________|
PSARC/2007/587 Sun Proprietary/Need to Know
- 2 -
____________________________________________________________________________
| Interfaces Exported |
|_______________________|_______________________|__________________________|
|Interface | Classification | Comments |
|_______________________|_______________________|__________________________|
|socket_recvmsg | Project Private | <fs/sockfs/sockcommon.h>|
|socket_getpeername | Project Private | <fs/sockfs/sockcommon.h>|
|socket_getsockname | Project Private | <fs/sockfs/sockcommon.h>|
|socket_getsockopt | Project Private | <fs/sockfs/sockcommon.h>|
|socket_setsockopt | Project Private | <fs/sockfs/sockcommon.h>|
|socket_ioctl | Project Private | <fs/sockfs/sockcommon.h>|
|socket_close | Project Private | <fs/sockfs/sockcommon.h>|
|socket_destroy | Project Private | <fs/sockfs/sockcommon.h>|
|socket_poll | Project Private | <fs/sockfs/sockcommon.h>|
|socket_shutdown | Project Private | <fs/sockfs/sockcommon.h>|
|SOCKET_SLEEP | Project Private | <fs/sockfs/sockcommon.h>|
|SOCKET_NOSLEEP | Project Private | <fs/sockfs/sockcommon.h>|
|sock_lower_handle_t | Consolidation Private| <sys/socket_proto.h> |
|sock_upper_handle_t | Consolidation Private| <sys/socket_proto.h> |
|sock_upcalls_t | Consolidation Private| <sys/socket_proto.h> |
|sock_downcalls_t | Consolidation Private| <sys/socket_proto.h> |
|struct sock_options | Consolidation Private| <sys/socket_proto.h> |
|sock_gen_t | Consolidation Private| <sys/socket_proto.h> |
|SOCK_GEN_INIT | Consolidation Private| <sys/socket_proto.h> |
|SOCK_GEN_BUMP | Consolidation Private| <sys/socket_proto.h> |
|SOCK_GEN_LT | Consolidation Private| <sys/socket_proto.h> |
|sock_opctl_op_t | Consolidation Private| <sys/socket_proto.h> |
|sock_opctl_action_t | Consolidation Private| <sys/socket_proto.h> |
|so_sonodeops | Consolidation Private| <sys/socket_proto.h> |
|so_upcalls | Consolidation Private| <fs/sockfs/sockcommon.h>|
|so_vnodeops | Consolidation Private| <fs/sockfs/sockcommon.h>|
|socket_create_common | Consolidation Private| <fs/sockfs/sockcommon.h>|
|socket_destroy_common | Consolidation Private| <fs/sockfs/sockcommon.h>|
|smod_reg_t | Consolidation Private| <fs/sockfs/sockcommon.h>|
|ksocket_socket | Consolidation Private| <sys/ksocket.h> |
|ksocket_bind | Consolidation Private| <sys/ksocket.h> |
|ksocket_listen | Consolidation Private| <sys/ksocket.h> |
|ksocket_accept | Consolidation Private| <sys/ksocket.h> |
|ksocket_connect | Consolidation Private| <sys/ksocket.h> |
|ksocket_send | Consolidation Private| <sys/ksocket.h> |
|ksocket_sendto | Consolidation Private| <sys/ksocket.h> |
|ksocket_sendmsg | Consolidation Private| <sys/ksocket.h> |
|ksocket_recv | Consolidation Private| <sys/ksocket.h> |
|ksocket_recvfrom | Consolidation Private| <sys/ksocket.h> |
|ksocket_recvmsg | Consolidation Private| <sys/ksocket.h> |
|ksocket_getpeername | Consolidation Private| <sys/ksocket.h> |
|ksocket_getsockname | Consolidation Private| <sys/ksocket.h> |
|ksocket_getsockopt | Consolidation Private| <sys/ksocket.h> |
|ksocket_setsockopt | Consolidation Private| <sys/ksocket.h> |
|ksocket_ioctl | Consolidation Private| <sys/ksocket.h> |
|ksocket_close | Consolidation Private| <sys/ksocket.h> |
|ksocket_setcallbacks | Consolidation Private| <sys/ksocket.h> |
|ksocket_hold | Consolidation Private| <sys/ksocket.h> |
|ksocket_rele | Consolidation Private| <sys/ksocket.h> |
|_______________________|_______________________|__________________________|
PSARC/2007/587 Sun Proprietary/Need to Know
- 3 -
____________________________________________________________________________
| Interfaces Exported |
|_______________________|_______________________|__________________________|
|Interface | Classification | Comments |
|_______________________|_______________________|__________________________|
|ksocket_t | Consolidation Private| <sys/ksocket.h> |
|ksocket_callbacks_t | Consolidation Private| <sys/ksocket.h> |
|ksocket_event_t | Consolidation Private| <sys/ksocket.h> |
|KSOCKET_CB_CONNECTED | Consolidation Private| <sys/ksocket.h> |
|KSOCKET_CB_DISCONNECTED| Consolidation Private| <sys/ksocket.h> |
|KSOCKET_CB_NEWDATA | Consolidation Private| <sys/ksocket.h> |
|KSOCKET_CB_NEWCONN | Consolidation Private| <sys/ksocket.h> |
|KSOCKET_CB_OOBDATA | Consolidation Private| <sys/ksocket.h> |
|KSOCKET_CB_CANSEND | Consolidation Private| <sys/ksocket.h> |
|KSOCKET_CB_CANTSENDMORE| Consolidation Private| <sys/ksocket.h> |
|KSOCKET_CB_CANTRECVMORE| Consolidation Private| <sys/ksocket.h> |
|KSOCKET_CB_ERROR | Consolidation Private| <sys/ksocket.h> |
|KSOCKET_CB_PROPCHANGED | Consolidation Private| <sys/ksocket.h> |
|KSOCKET_CB_RELEASED | Consolidation Private| <sys/ksocket.h> |
|KSOCKET_SLEEP | Consolidation Private| <sys/ksocket.h> |
|KSOCKET_NOSLEEP | Consolidation Private| <sys/ksocket.h> |
|_______________________|_______________________|__________________________|
4. Opinion
4.1. Interface stability of kernel APIs delivered
During the commitment review, one committee member asked how
external users could use the kernel API delivered by this
project if their stability level are private. The project
team state that these interfaces will be kept private in the
first phase of the project. The project team agreed to come
back and revisit this issue when the interfaces are more
mature to consider a more stable commitment level.
4.2. Version enforcement and extensibility
During the commitment review, members of the committee had
questions about the version enforcement and updates. While
versionning the interfaces seemed appropriate to accommodate
future evolutions of the interfaces, some committee member
judged it useful to raise the project team's awareness to
the cost of implementing and maintaining multiple coexisting
versions, should they see the future need to do so.
4.3. Explicit sd_unbind
During the commitment review, members of the committee
thought it's better to provide sd_unbind() rather than rely
on a magic combination of parameters to sd_bind() for an
unbind operation. This issue resulted in a Technical Change
Request as described in section 7.1 below.
PSARC/2007/587 Sun Proprietary/Need to Know
- 4 -
5. Minority Opinion(s)
None.
6. Advisory Information
None.
7. Appendices
7.1. Appendix A: Technical Changes Required
1. Add an explicit sd_unbind API.
7.2. Appendix B: Technical Changes Advised
None.
7.3. Appendix C: Reference Material
Path names are relative to the case directory
PSARC/2007/587.
1. PSARC 20 Questions
File: inception.materials/volo.psarc.txt
2. Volo design document
File: commitment.materials/volo_design.pdf
PSARC/2007/587 Sun Proprietary/Need to Know
More information about the opensolaris-arc
mailing list