Lossless Ethernet สำหรับระบบจัดเก็บข้อมูล: DCB, PFC, ECN
Ethernet ทิ้งเฟรมเมื่อเกิดความคับคั่ง ส่วนโปรโตคอลสตอเรจที่สร้างมาสำหรับ Fibre Channel หรือ RDMA ตั้งสมมติฐานว่าจะไม่มีการทิ้งข้อมูลเลย Data Center Bridging (DCB) ปิดช่องว่างนี้ด้วยการควบคุมการไหลและการจัดสรรแบนด์วิดท์ต่อระดับความสำคัญ และ RoCE เพิ่มการส่งสัญญาณความคับคั่งเข้าไปอีกชั้น ผลลัพธ์ที่ได้จะไม่สูญเสียข้อมูลได้ก็เพียงเท่ากับลิงก์ที่แย่ที่สุดเท่านั้น: ออปติกที่ก้ำกึ่งซึ่งทิ้งเฟรมหนึ่งในล้านเฟรมก็ถือเป็นเหตุขัดข้องด้านสตอเรจแล้ว หน้านี้อธิบายกลไกเหล่านี้และแปลงเป็นข้อกำหนดระดับเลเยอร์กายภาพ
ชุดเครื่องมือของ DCB
| มาตรฐาน | ชื่อ | สิ่งที่ทำ |
|---|---|---|
| IEEE 802.1Qbb | PFC — การควบคุมการไหลตามลำดับความสำคัญ | เฟรมสั่งหยุดต่อคลาสทราฟฟิก (0–7): ตัวรับที่คับคั่งหยุดได้เฉพาะคลาสเดียวโดยไม่ต้องหยุดทั้งพอร์ต |
| IEEE 802.1Qaz | ETS — การเลือกการส่งขั้นสูง | ส่วนแบ่งแบนด์วิดท์ที่รับประกันต่อคลาส (เช่น สตอเรจ 50%, LAN 50%) |
| IEEE 802.1Qaz | DCBX — การแลกเปลี่ยนค่า DCB | การเจรจาค่าตั้งของ PFC/ETS ระหว่างสวิตช์กับ NIC โดยใช้ LLDP |
| IEEE 802.1Qau | CN — การแจ้งเตือนความคับคั่ง | ใช้งานจริงน้อยมาก |
| RFC 3168 + DCQCN | การทำเครื่องหมาย ECN + การควบคุมอัตรา | สวิตช์ทำเครื่องหมายแพ็กเก็ตเมื่อคิวเริ่มสะสม; NIC ของ RoCE จะลดอัตราการส่งก่อนที่จะต้องพึ่ง PFC |
RoCE รักษาการไม่สูญเสียข้อมูลได้อย่างไร
- ทราฟฟิกของสตอเรจ/RDMA ถูกกำกับด้วย ลำดับความสำคัญเฉพาะ (มักเป็น 3 หรือ 4) ผ่าน DSCP หรือ 802.1p
- เปิดใช้ PFC เฉพาะลำดับความสำคัญนั้น บนทุกพอร์ตตลอดเส้นทาง โดยกำหนด ที่ว่างสำรองของบัฟเฟอร์ (headroom) ให้เหมาะกับความเร็วลิงก์และความยาวสาย (ไบต์ที่อยู่ระหว่างทาง)
- ค่าเกณฑ์ของ ECN ทำเครื่องหมายแพ็กเก็ตล่วงหน้า; NIC ใช้ DCQCN เพื่อลดอัตราการส่งของตัวเอง ทำให้ PFC ทำงานเฉพาะเป็นทางเลือกสุดท้าย
- ETS รับประกันแบนด์วิดท์ของคลาสสตอเรจแม้ภายใต้ภาระของ LAN
- DCBX รักษาค่าตั้งของ NIC และสวิตช์ให้ตรงกัน; หากไม่ตรงกันจะทำลายคุณสมบัติไม่สูญเสียข้อมูลโดยไม่มีการแจ้งเตือน
FC และ InfiniBand ได้ผลแบบเดียวกันด้วยเครดิตในทุกลิงก์เป็นค่าเริ่มต้นอยู่แล้ว ส่วน Ethernet ต้องตั้งค่า ตรวจสอบ และตรวจติดตามเอง (พื้นฐานโปรโตคอล FC, ทรานสปอร์ตของ InfiniBand)
สิ่งที่อาจผิดพลาดได้
| ปัญหา | ผลกระทบ | การตรวจจับ |
|---|---|---|
| ไม่ได้เปิด PFC ที่ฮอปใดฮอปหนึ่ง / ลำดับความสำคัญผิด | มีการทิ้งข้อมูลเมื่อมีภาระงาน; RDMA ส่งซ้ำ; เวลาแฝงพุ่งสูง | ตัวนับ pause เป็นศูนย์ในจุดที่ไม่ควรเป็น; มีการทิ้งข้อมูลในคลาสนั้น |
| พายุ PFC | ตัวรับที่ค้างสั่งหยุดฝั่งต้นทางไปเรื่อย ๆ ไม่มีที่สิ้นสุด; ความคับคั่งลามไปทั่วฟาบริก | เฟรมสั่งหยุดท่วม; ตัวนับเฝ้าระวัง (watchdog) |
| เดดล็อกของ PFC | การพึ่งพาบัฟเฟอร์แบบวนรอบในฟาบริก Clos; ทราฟฟิกทั้งหมดในคลาสนั้นหยุดสนิท | ต้องใช้การตรวจจับเดดล็อก / watchdog เพื่อทำลายวงจร |
| ที่ว่างสำรองของบัฟเฟอร์น้อยเกินไปสำหรับสายหรือออปติกที่ยาว | ทิ้งข้อมูลแม้เปิด PFC | มีการทิ้งข้อมูลพร้อมตัวนับ pause ทำงานอยู่ |
| ค่าเกณฑ์ ECN ผิด | เร็วเกินไป: เสียทรูพุต; ช้าเกินไป: PFC ท่วม | ตัวนับเครื่องหมาย ECN, ตัวนับ CNP บน NIC |
| ข้อผิดพลาดทางกายภาพบนลิงก์ (CRC, FEC ที่แก้ไม่ได้) | เฟรมสูญหายซึ่งการควบคุมการไหลใด ๆ ก็กู้คืนไม่ได้ | ตัวนับข้อผิดพลาดของพอร์ต, ตัวนับ FEC — ตัวชี้วัด VDM และ FEC |
iSCSI โดยไม่มี DCB
iSCSI ทำงานบน TCP และทนต่อการสูญเสียข้อมูลได้ แต่ต้องแลกด้วยเวลาแฝงและการส่งซ้ำ แนวปฏิบัติที่ดีไม่ว่าจะมี DCB หรือไม่:
- VLAN/ซับเน็ตเฉพาะต่อฟาบริก, สองฟาบริก, MPIO บนโฮสต์
- เฟรมจัมโบ้ (MTU 9000) ตลอดเส้นทางจากต้นทางถึงปลายทาง
- ไม่มีโอเวอร์ซับสคริปชันระหว่างอินิชิเอเตอร์กับเป้าหมาย; อัปลิงก์ 25G/100G ขนาดเหมาะกับอาร์เรย์
- เปิด FEC ทุกลิงก์ 25G ขึ้นไป; ตัวนับ CRC เป็นศูนย์
- อาจเปิด PFC บนคลาสของ iSCSI เพื่อลดผลของไมโครเบิร์สต์ได้ (อาร์เรย์หลายรุ่นแนะนำให้ทำ)
ข้อกำหนดระดับเลเยอร์กายภาพ
| ข้อกำหนด | เหตุผล | แนวปฏิบัติ |
|---|---|---|
| เปิดใช้ FEC และตั้งค่าให้ตรงกัน บนทุกลิงก์ 25G ขึ้นไป | RoCE ทนต่อ BER ดิบของเลน 25G/50G ที่ไม่มีการป้องกันไม่ได้ | FEC และการฝึกลิงก์ |
| CRC และ FEC ที่แก้ไม่ได้ = 0 | เฟรมที่สูญหายแต่ละเฟรมทำให้คิวค้าง | แจ้งเตือนทันทีที่ตัวนับเพิ่มขึ้น |
| กำลัง Rx อยู่ในช่วงพร้อมค่าเผื่อ | ออปติกที่ก้ำกึ่งจะเกิดข้อผิดพลาดเป็นชุดเมื่ออุณหภูมิเปลี่ยน | กำลัง Rx และงบประมาณลิงก์ |
| ความเร็ว/ดูเพล็กซ์/AN ตรงกันทั้งสองฝั่ง | DAC ต้องมี AN + การฝึกลิงก์ทั้งสองด้าน | ทองแดงและ DAC |
| ความยาวสายอยู่ในสมมติฐานของที่ว่างสำรองบัฟเฟอร์ | ที่ว่างสำรองคำนวณจากไบต์ที่อยู่ระหว่างทาง | เลือกใช้ DAC ภายในแร็ก, SR/AOC ภายในแถว, DR/LR ระหว่างห้อง |
| ข้อมูลระบุตัวตนที่ NIC และสวิตช์ยอมรับ | ออปติกที่ถูกปฏิเสธจะไม่มีลิงก์หรือลดความเร็วลง | การล็อกผู้ผลิต |
รายการตรวจสอบการตรวจติดตาม
- ต่อพอร์ต: เฟรมสั่งหยุดที่ส่ง/รับต่อลำดับความสำคัญ, เครื่องหมาย ECN, การทิ้งข้อมูลต่อคลาส, CRC, FEC ที่แก้ไขได้/แก้ไม่ได้, ลิงก์กระพริบ
- ต่อ NIC: CNP ที่ส่ง/รับ, การส่งซ้ำ, แพ็กเก็ตผิดลำดับ, การหมดเวลา
- ต่อออปติก: แนวโน้มกำลัง Rx/Tx และอุณหภูมิ (การตรวจติดตาม)
- เชื่อมโยงการพุ่งของเวลาแฝงส่วนหางของสตอเรจเข้ากับรายการข้างต้น — เลเยอร์กายภาพเป็นต้นเหตุบ่อยกว่าตัวอาร์เรย์เอง
ใน CodingBox
ฟาบริกที่ไม่สูญเสียข้อมูลสร้างขึ้นจากออปติกทั่วไปที่เพียงแต่ถูกควบคุมด้วยมาตรฐานที่สูงกว่าเท่านั้น การตรวจสอบขาเข้าบนโต๊ะทดสอบ — ข้อมูลระบุตัวตน, เช็กซัม, DDM แบบสดเทียบกับ ค่าทั่วไป, การบันทึกค่าฐาน — คือวิธีกันโมดูลที่ก้ำกึ่งออกจากฟาบริกที่ลิงก์เสียเพียงเส้นเดียวอาจทำให้แอปพลิเคชันเสีย SLA ด้านเวลาแฝง (Check transceiver, DDM)
ตำแหน่งของ PFC และ ECN ท่ามกลางกลไกการฟอร์เวิร์ดอื่น ๆ และวิธีที่ข้อผิดพลาดระดับเลเยอร์กายภาพปรากฏในกลไกเหล่านั้น: พื้นฐานการฟอร์เวิร์ด