1. What is the proposal being presented for review? * Give an overview of the project and its phase(s). We propose to replace hard-coded congestion control in Solaris TCP and SCTP stacks with a pluggable module framework. We also propose to implement several alternative congestion control algorithms that can achieve better bandwidth utilization, among other useful properties, compared to the existing "NewReno" algorithm. * Describe the exposure (OpenSolaris), scope and type of review desired (overview, full case, etc.) Open, full case. * Indicate the release binding requested by the project team. See: http://www.opensolaris.org/os/community/arc/policies/release-taxonomy/ Minor. * What are the project's deliverables? Congestion control algorithm kernel modules. ipadm subcommands. * How does this project align with existing or proposed ARC cases? It relies on the new ipadm(1M) command proposed in: 2009/306 Brussels II - ipadm and libipadm as well as existing socket options APIs. 2. Describe user interactions. * Are new user interfaces being proposed, or existing interfaces being changed? Existing ipadm(1M) command is expanded with new subcommands for managing congestion control algorithms. * Explain the similarities in proposed interfaces with existing OS user interfaces (Solaris, Linux, Windows, etc.). ipadm(1M) is unique to Solaris, so there are few similarities. Linux uses /proc filesystem to manage congestion algorithms, Windows uses the netsh command to set congestion provider. * Are there any install time changes? Algorithm modules will have to be registered upon installation using ipadm(1M). 3. What are the exported (defined by your project) and imported (defined by another project that your project then references) interfaces or protocols and their respective stability levels? See: http://www.opensolaris.org/os/community/arc/policies/interface-taxonomy/ Imported interfaces (interface, stability): ipadm {add,remove,show}-cong subcommands Committed socket options {TCP,SCTP}_CONGESTION, TCP_INFO Uncommitted kernel interfaces Cons. Private kstats {tcp,sctp}_cong_signals Uncommitted * Is there a versioning scheme in place? Yes. * Has the team secured interface contracts where necessary? N/A 4. Describe any dependencies on hardware (e.g. SPARC exclusive), and on other projects within Solaris. No hardware dependencies. Depends on 2009/306 Brussels II - ipadm and libipadm 5. Projects need to be aware of the overall security of the system and how their components affect it. Which parts of this project are critical to the security of the system to avoid such unintended consequences such as unauthorized system entry, unauthorized access to or modification of data, elevation of privilege, denial of service, violation of labeled security, ...? Does this project require elevated privilege? ipadm(1M) command requires sys_ip_config privilege. This project does not change ipadm(1M)'s security aspects. 6. Describe means of observing project functionality and performance, by an end user or by a system administrator. See chapter "6 Observability Features" of the proposal. In short, observability is provided via DTrace, kstats and pfiles(1). 7. How does the project deal with faults and interruptions? Initialization and restarting? Most of it is the same as 2009/306 Brussels II - ipadm and libipadm. When kernel attempts to load a congestion algorithm module that is faulty or of incompatible version, it will fall back to the default NewReno algorithm. NewReno is built-in and always present, so the system always has functional congestion control. 8. How does the project interact with Solaris virtualization technologies (xVM, LDOMs, zones, Branded zones, SunCluster, etc.)? ipadm(1M) already works in zones and this project does not change that. 9. Does this project require administration (i.e., configuration or management)? If so, * How is the project administered, and what sort of review process has this user interface undergone? ipadm(1M) command has been reviewed as part of other project. Proposed subcommands are consistent with the existing syntax. * Is there a means of aggregating management and/or configuration with other related projects? No. * Does this project deliver its own administration along with the other components, or is this project an administration interface for other projects? It provides own administration for a new type of kernel modules, namely congestion control modules. * Are there any external (to Solaris) management interfaces to consider, or being consumed? No. Projects that require or deliver administrative interfaces are often by their nature security components of the system and should likely address the security question (#5 above, with attention to RBAC and Audit). (See also appendix 2). 10. Have you reviewed the Policies and Best Practices? Are there any exceptions this project needs? See http://www.opensolaris.org/os/community/arc/policies/ http://www.opensolaris.org/os/community/arc/bestpractices/ Upon reviewing these, no exceptions are required for this project. References (included in case directory): cong-design.pdf - Pluggable TCP & SCTP Congestion Control Design Specification