The exponential growth in the popularity of the Internet has seen more services like commerce and telephony move to IP-based networks. Many of these services require reliability so now more than 90% of Internet traffic use TCP as the reliable transport protocol. TCP did not provide the reliability and control necessary for the implementation of telephony over IP, so to overcome these deficiencies, the Stream Control Transmission Protocol (SCTP) was standardized [1], [2], [3]. It provides the user with more control over internal features and timers. SCTP also improves data integrity on the higher bandwidth interconnects of modern times by providing a stronger CRC32c checksum that avoids the false negatives that occur with the weaker 16-bit TCP checksum [4]. SCTP multi-streaming avoids head-of-line blocking amongst messages. Over multiple links, SCTP multi-homing allows for seamless fail-over in the event of network failure and with concurrent multipath transfer (CMT) [5], enables simultaneous data transfer over multiple links. All of these features have been available for SCTP for a decade where they have only partially appeared over TCP and UDP with efforts to enable multistreaming support at the application level [6], [7] as well
as efforts for standardizing TCP to add multipath support [8] and a stronger CRC32c checksum [9]. Although the features of SCTP may be compelling, our initial tests could only match the performance of TCP using the FreeBSD kernel SCTP implementation. The FreeBSD implementation of SCTP has the best performance and is the most feature-rich SCTP implementation available, as it is maintained by the authors of the transport’s RFCs in the IETF. Other implementations of SCTP have fallen behind and they are not as feature-rich nor are their performances as good. The Linux SCTP stack [10] has been included in its default kernel distribution since 2.4.23 in November 2003 but it does not have all of the more recent SCTP RFCs nor has it been fully optimized; the performance of Linux SCTP does not perform as well as TCP. Siemens, the University of Essen, and Mu¨nster University of Applied Sciences have released an SCTP implementation called sctplib that runs in userspace but it also does not provide adequate performance or complete features [11]. The lack of availability of a high quality SCTP implementation on more popular platforms is an impediment to the wider spread adoption of SCTP. Recently there are several developments that have made revisiting userspace stacks of interest. First, there is a renewed interest in protocol onload as protocol off-load devices arguably were a point-in-time solution that are less general [12]. There has also been more recent work starting to question whether transport protocols are too large to belong in the kernel. Van Jacobson made the argument that cache use can be improved with a user-level stack [13] on a multicore host because a user-level stack would ensure the transport processing is done on the same CPU as the application; this changes the “end” of the end-to-end principle common in network design from the host to the actual process or thread on a specific core, as was similarly proposed by Siemon [14]. Another development is that the newer generation of network adapters have started to have more support for network virtualization giving easier data paths to the NIC and providing protection domains on the NIC [15]. In addition, the latest NICs like the Intel 82599 also support an on-board CRC32c checksum computation, useful for iSCSI as well as SCTP, which eliminates a potential performance overhead posed by SCTP’s stronger checksum. The combination of these advantages make it an opportune time to re-visit the question of how to make a fully-featured userspace SCTP stack.
การเติบโตเนนในความนิยมของอินเทอร์เน็ตได้เห็นบริการเพิ่มเติมเช่นระบบโทรศัพท์และการพาณิชย์ย้ายไปเครือข่ายแบบ IP ของบริการเหล่านี้จำเป็นต้องมีความน่าเชื่อถือดังนั้นตอนนี้มากกว่า 90% ของ traffic อินเทอร์เน็ตใช้ TCP เป็นโพรโทคอขนส่งที่เชื่อถือได้ TCP ไม่ทำให้ความน่าเชื่อถือ และควบคุมจำเป็นสำหรับการดำเนินการโทรศัพท์ผ่าน IP เพื่อที่จะเอาชนะ deficiencies เหล่านี้ กระแสควบคุมส่งผ่านโพรโทคอล (SCTP) เป็นมาตรฐาน [1] , [2], [3] จะให้ผู้ใช้ ด้วยคุณสมบัติภายในและตัวจับเวลาควบคุมเพิ่มเติม SCTP ยังช่วยเพิ่มข้อมูลความสมบูรณ์ของในแบนด์วิดท์สูงเชื่อมต่อของยุคให้แข็งแกร่ง CRC32c checksum ที่หลีกเลี่ยงลวงที่เกิดขึ้นกับ checksum TCP 16 บิตอ่อน [4] SCTP multi-สตรีมมิ่งเพื่อหลีกเลี่ยงการบล็อกหัวสายท่ามกลางข้อความ ผ่านหลายลิงค์ SCTP บ้านหลายบ้านช่วยให้ราบรื่นเจอในกรณีเครือข่าย และโอนหลายเส้นทางพร้อมกัน (CMT) [5], ช่วยส่งข้อมูลพร้อมกันผ่านหลายลิงค์ คุณสมบัติเหล่านี้ได้ใช้สำหรับ SCTP สำหรับทศวรรษที่พวกเขามีบางส่วนปรากฏผ่านทาง TCP และ UDP กับความพยายามในการเปิดใช้การสนับสนุน multistreaming ในระดับโปรแกรมประยุกต์ [6], [7] เช่นas efforts for standardizing TCP to add multipath support [8] and a stronger CRC32c checksum [9]. Although the features of SCTP may be compelling, our initial tests could only match the performance of TCP using the FreeBSD kernel SCTP implementation. The FreeBSD implementation of SCTP has the best performance and is the most feature-rich SCTP implementation available, as it is maintained by the authors of the transport’s RFCs in the IETF. Other implementations of SCTP have fallen behind and they are not as feature-rich nor are their performances as good. The Linux SCTP stack [10] has been included in its default kernel distribution since 2.4.23 in November 2003 but it does not have all of the more recent SCTP RFCs nor has it been fully optimized; the performance of Linux SCTP does not perform as well as TCP. Siemens, the University of Essen, and Mu¨nster University of Applied Sciences have released an SCTP implementation called sctplib that runs in userspace but it also does not provide adequate performance or complete features [11]. The lack of availability of a high quality SCTP implementation on more popular platforms is an impediment to the wider spread adoption of SCTP. Recently there are several developments that have made revisiting userspace stacks of interest. First, there is a renewed interest in protocol onload as protocol off-load devices arguably were a point-in-time solution that are less general [12]. There has also been more recent work starting to question whether transport protocols are too large to belong in the kernel. Van Jacobson made the argument that cache use can be improved with a user-level stack [13] on a multicore host because a user-level stack would ensure the transport processing is done on the same CPU as the application; this changes the “end” of the end-to-end principle common in network design from the host to the actual process or thread on a specific core, as was similarly proposed by Siemon [14]. Another development is that the newer generation of network adapters have started to have more support for network virtualization giving easier data paths to the NIC and providing protection domains on the NIC [15]. In addition, the latest NICs like the Intel 82599 also support an on-board CRC32c checksum computation, useful for iSCSI as well as SCTP, which eliminates a potential performance overhead posed by SCTP’s stronger checksum. The combination of these advantages make it an opportune time to re-visit the question of how to make a fully-featured userspace SCTP stack.
การแปล กรุณารอสักครู่..
