improve_sctp_kernel_implementation
This is an old revision of the document!
Table of Contents
Improve SCTP Kernel Implementation
Bugfixes
- Add gauth_number_of_chunks to struct sctp_authchunks. Done
- Get rid of printf(), perror(). Put panic() under INVARIANTS. Done
- Add support for SCTP_STREAM_CHANGE_EVENT, SCTP_ASSOC_RESET_EVENT. Done
- Support SCTP_ENABLE_STREAM_RESET in getsockopt(). Done
- Improve error checking for Stream Reset related socket options. Done
- Honor SCTP_ENABLE_STREAM_RESET socket option when processing a request. Done
- Replace in struct sctp_authinfo the field auth_keyid by auth_keynumber. Done
- Fix results codes provided in stream reset responses. Done
- Provide FAILED and DENIED indications in events related to Stream Reconfiguration. Done
- Get rid of SCTP_STREAM_CHANGED_DENIED in the code base. Done
- Add support for SCTP_SEND_FAILED_EVENT. Done
- Remove SCTP_PANIC_ON_ABORT. Done
- Add sac_info[] in struct sctp_assoc_change and SCTP_ASSOC_SUPPORTS_PR, SCTP_ASSOC_SUPPORTS_AUTH, SCTP_ASSOC_SUPPORTS_ASCONF, SCTP_ASSOC_SUPPORTS_MULTIBUF, SCTP_ASSOC_SUPPORTS_RE_CONFIG. Done
- Fix clang warnings. Done
- Provide SCTP_ASSOC_CHANGE on 1-to-1 style sockets when an ABORT is received. Done
- Provide ECONNABORTED if the ABORT was sent. Done
- Fix sac_info provided in SCTP_ASSOC_CHANGE for SCTP_COMM_UP and SCTP_RESTART. Done
- Fix sac_info provided in SCTP_ASSOC_CHANGE for SCTP_COMM_LOST and SCTP_CANT_STR_ASSOC due to a received ABORT. Done
- Fix error codes returned in SCTP_ASSOC_CHANGE notification (Double check this also on Linux and Solaris). Done
- Fix error codes returned in SCTP_PEER_ADDR_CHANGE notification (Double check this also on Linux and Solaris). Done
- Fix error codes returned in SCTP_SEND_FAILED and SCTP_SEND_FAILED_EVENT notifications (Double check this also on Linux and Solaris). Done
- Send SCTP_REMOTE_ERROR notification when receiving an ERROR chunk (Double check this also on Solaris and Linux). Done
- Add support for SCTP_EOF on 1-to-1 style sockets. Done
- Enable MAX_BURST and set L2_ABC_VAR to 2. Done
- Allow sctp_peeloff() of association not in ESTABLISHED. Done
- Allow shutdown() on file descriptor returned by sctp_peeloff(). Done
- Use correct chunk padding for INIT/INIT-ACK chunk if the last parameter is not 4 byte aligned. Problem shows up in INIT chunks without any addresses. Done
- Use correct padding of ABORT chunk with user defined error cause. Done
- Don't send HEARTBEAT in closing state. Done
- The kernel should not fill in an error cause for User Initiated ABORTs. Done
- Improve sending of adaptation layer indication. Done
- Fix rtoinfo_sso_1_M_inherit, which fails on FreeBSD, but not on MacOS X. Done
- Remove the limitation that only MAX_SCTP_STREAMS are allocated, even if more streams are allocated. Done
- Handle the case that the number of requested outgoing streams in a received INIT-ACK is larger than the maximum number of incoming streams in the corresponding INIT. Done
- Don't accept ABORT chunk with correct vtag, but T-bit set. (Send INIT to Solaris, the ABORT shows this). Done
- Double check calling sctp_report_all_outbound() in sctp_handle_shutdown_complete(). Done
- Double check calling sctp_report_all_outbound() in sctp_handle_shutdown_ack(). Done
- Fix sctp_features being expanded to 64-bit. Done
- Remove pr_sctp_on. Done
- Double check that the SCTP_PR_SCTP_BUF policy works (usage of sent_queue_cnt_removeable looks strange).
- Double check the usage of the pr_sctp_cnt variable.
- Use the time of the send() call for the SCTP_PR_SCTP_TTL policy consistently.
- Abandon messages using the SCTP_PR_SCTP_TTL before sending them initially.
- Make support for PR-SCTP configurable. Done
- Add support for SCTP_PR_STATUS. Done
- Add support for sctp6 for netstat, don't report it at sctp46
- Add support for jails. Done
- Address warnings dealing with shortening 64-bit entities to 32-bit ones.
- Clean up sctp_ctlinput(). Is the locking correct? Correct use of inetctlerrmap.
- Fix a race in sctp_close() reported by Randell.
- Fix a bug reported by Lucas.
- Send an ABORT on reception of a SHUTDOWN in case you still are waiting for messages that are out of order (Have SSN =1 in queue but are waiting for SSN = 0).
- Don't truncate RE-CONFIG parameters.
- Clean up DENIED/FAILED returned in RE-CONFIG notifications.
- Clean up Error - Wrong SSN.
- Handle received “Success - Nothing to do” results in RE-CONFIG.
- Clean up In progress RE-CONFIG handling.
- Fix sctp_getladdrs() when used on unbound socket.
- Double check when providing non-existent assoc_id.
- Double check sctp_getpaddrs() on unconnected sockets and when providing non-existent assoc_id.
- Send appropriate Supported Address Types parameter. Done
- Honor Supported Address Types parameter. How to deal with NAT64?
- Double check interactions between explicit EOR mode and resetting the streams.
- Double check the embedding of IPv6 scope ids. Make sure, SCTP works with link local addresses.
- Fix bug reported by Robert Faulds, where an interface has link local and global IPv6 addresses.
- Get SCTP checksum offloading working (again) for SCTP/IPv6 (igb, ixgbe).
- Double check SCTP / IPSec / IPv[46].
- sctp_findassociation_ep_asconf() doesn't decrement the refcount of the inp if a wildcard address is used.
- Double check the SCTP_CHECK_AND_CAST in setsockopt handling of SCTP_CONNECT_X_COMPLETE.
- When moving a path to PF, we send a HB. On timeout, we honour the applications choice to disable HBs. Fix this inconsistency.
- Double check SCTP_PEER_ADDR_THLDS handling in setsockopt(). It seems that the stcb is not unlocked. Done
Code Improvements
- Add SCTP support to badport_bandlim(). Don't misuse ICMP counters anymore. Done
- Cleanup defined () vs. defined(). Done
- Integrate changes from Randell to be able to build within Firefox without changes. Done
- Fix FreeBSD build. Done
- Use HAVE_SA_LEN. Done
- Cleanup warnings shown by the Firefox build on Linux/Mac OS X. Done
- Rename next_sequence_sent. Done
- Cleanup LIST_FOREACH usage (Don't check for !LIST_EMPTY before). Done
- Cleanup sctp_build_readq_entry_mac(). Don't have the context there twice. Done
- Cleanup sctp_send_initate_ack(). Done
- Replace bzero() by memset() and bcopy() by memcpy().
- Retire ASCONF support without AUTH. Done
- Improve disabling of AUTH. Done
- Cleanup usage of struct sctp_getaddresses.
- Get rid of Userspace_os_*.
- Cleanup -UAPPLE and -UFreeBSD (helps libjingle).
- Cleanup warnings shown in the NKE build by XCode.
- Cleanup #define usage in general.
- Cleanup sctp_lowlevel_chunk_output().
- Cleanup sctp_attach() and sctp6_attach().
- Minimize the times send() calls return -1 (errno == EAGAIN) when a RE_CONFIG chunk is in fight.
- Modularize code.
- Get the stack building on the darwin kernel.
Documentation Improvements for FreeBSD
- Write man pages for sctp_sendv() and sctp_recvv().
- Add description of sysctl variables to the man page of SCTP.
- Review and update documentation of SCTP socket options in the man page of SCTP.
Features needed for the FreeBSD Stack
- Add support for multiple FIBs.
Features needed for the Userland Stack
- Unify sctp_send_shutdown_complete2(), sctp_send_abort(), and sctp_send_operr_to(). Done
- Pass explicitly flowid aroung in the stack. Done
- Simplify packet generation (abstract from IPv4 and IPv6). Done
- Unify sctp_input() and sctp_input6(). Done
- Pass explicitly the packet length around in the stack. Done
- Pass explicitly src and dst address (as struct sockaddr *) around in the stack. Done
- Retire SCTP_GET_IPV4_LENGTH and SCTP_GET_IPV6_LENGTH. Done
- Don't pass the whole IP packet around, just the SCTP packet. Done
- Move common part from sctp_input() and sctp6_input() to sctp_common_input_processing(). Done
- Make sctp_common_input_processing() the entry point for encapsulated packets. Done
- Add support for AF_CONN. Done
- Add support for usrsctp_getpaddrs() and usrsctp_freepaddrs(). Done
- Add support for usrsctp_getladdrs() and usrsctp_freeladdrs(). Done
- Add support for usrsctp_connectx() and usrsctp_bindx(). Done
- Add support for usrsctp_peeloff(). Done
- Add support for specific bind()s when using AF_CONN. Done
Features needed for Kernel and Userland Stack
- Add support for NDATA.
- Add additional priority scheduler (weighted round robin) for RTCWeb.
- Limit the cwnd by SCTP_MAX_CWND socket option. Done
- Cleanup MTU usage.
- Re-implement PMTU discovery without relying on ICMP/ICMPv6 feedback.
- Improve SACK handling to reduce CPU load when doing loadsharing with dissimilar paths.
improve_sctp_kernel_implementation.1545305014.txt.gz · Last modified: by admin
