Score:0

จะปรับปรุงความทนทานต่อ TCP ต่อการส่งมอบนอกคำสั่งซื้อใน Linux balance-rr bonds และ/หรือ FreeBSD roundrobin laggs ได้อย่างไร

ธง cn

ฉันมี 3 เซิร์ฟเวอร์เครือข่าย kwise กำหนดค่าดังนี้

  • คือ DELL R710 ใช้ Linux 5.13.19-1-pve Proxmox VE 7.1 และมี 4 NICs ทำงานร่วมกันใน สมดุล-RR พันธบัตรโหมด.
  • คือ DELL R610 ใช้ Linux 5.13.19-1-pve Proxmox VE 7.1 และมี 4 NICs ทำงานร่วมกันใน สมดุล-RR พันธบัตรโหมด.
  • DELL R710 กำลังทำงานอยู่ FreeBSD 12.2-RELEASE-p1 กับ ล่าช้ากว่า 8 NICs ใน วงเวียน (นี่คือ TrueNAS distro).

NIC ทั้งหมดคือ 1 GBps

เมื่อฉันวิ่ง ไอเพอร์เอฟ3 ระหว่างเบลดของลีนุกซ์ ฉันสูงสุดที่ประมาณ 3 GBps และหน้าต่างขึ้นไปโดยเฉลี่ยประมาณ 300 KiB อย่างไรก็ตาม ระหว่างเบลด TrueNAS (FreeBSD) และเบลด Linux สตรีม TCP จะสูงสุดที่ 1.20 Gbps และปิดหน้าต่างที่ค่าเฉลี่ย ~60 KiB ถ้าฉันเรียกใช้สตรีมคู่ขนาน (เช่น ไอเพอร์เอฟ3 ...-P 8) ฉันสามารถอิ่มตัวพันธบัตร ในทางกลับกัน อย่างที่คาดไว้ จำนวนการส่งซ้ำนั้นค่อนข้างสูงในทั้งสองกรณี ดังนั้น คำถามของฉันคือ

  1. เหตุใด FreeBSD จึงไม่ถึงทรูพุตที่เท่ากัน หากคาดว่าทั้งคู่กำลังเข้าใกล้ปัญหาในลักษณะเดียวกัน (อาจเป็นที่ที่ฉันผิด)
  2. มีตัวเลือกการปรับแต่งหรือการรวมกันของตัวเลือกเพื่อทำให้สแต็ก TCP ทนต่อการไม่อยู่ในลำดับมากขึ้นโดยไม่เรียกใช้การส่งสัญญาณซ้ำทันทีหรือไม่ (ฉันไม่ค่อยคุ้นเคยกับ 3-ACK reTX, พื้นฐานของการควบคุมความแออัดของ TCP และอื่นๆ)

ฉันจะรวมการปรับแต่งและตัวเลือกที่ฉันใช้ระหว่างการทดสอบไว้ที่นี่

  • ifaces ทั้งหมดถูกกำหนดให้ใช้จัมโบ้เฟรม (MTU 9000)
  • กล่อง Linux ได้รับการปรับแต่งดังนี้
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.ipv4.tcp_mem = 1638400 1638400 1638400
net.ipv4.tcp_rmem = 10240 87380 16777216
net.ipv4.tcp_rmem = 10240 87380 16777216
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_reordering=127
net.ipv4.tcp_max_reordering = 1,000
net.core.netdev_max_backlog = 10,000
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = รีโน
  • กล่อง FreeBSD (TrueNAS Core ~= FreeNAS) ปรับจูนดังนี้
kern.ipc.maxsockbuf=614400000
kern.ipc.somaxconn=1024
net.route.netisr_maxqlen=8192
net.inet.ip.intr_queue_maxlen=8192
net.inet.tcp.mssdflt=8948
net.inet.tcp.reass.maxqueuelen=1000
net.inet.tcp.recvbuf_inc=65536
net.inet.tcp.sendbuf_inc=65536
net.inet.tcp.sendbuf_max=307200000
net.inet.tcp.recvbuf_max=307200000
net.inet.tcp.recvspace=65228
net.inet.tcp.sendspace=65228
net.inet.tcp.minmss=536
net.inet.tcp.abc_l_var=52
net.inet.tcp.initcwnd_segments=52 # เริ่มเร็ว
net.inet.udp.recvspace=1048576
net.inet.udp.sendspace=1048576
Effie avatar
ne flag
เกี่ยวกับการส่งสัญญาณซ้ำ: มี [rfc4015](https://datatracker.ietf.org/doc/html/rfc4015) ซึ่งโดยพื้นฐานแล้วจะเพิ่ม 3-ACK เป็นสิ่งที่ใหญ่กว่าในการเรียงลำดับใหม่ครั้งล่าสุดที่ฉันทำงานกับเคอร์เนลลินุกซ์ (ประมาณ v4.0.2) มันถูกนำไปใช้ นอกจากนี้ `net.ipv4.tcp_reordering = 127` หมายความว่า 3-ACK คือ 127-ACK จริงๆ
Effie avatar
ne flag
กลยุทธ์การทดสอบตามปกติของฉันคือ: การถ่ายแบ่งส่วน tcp (ไม่รู้ว่ามันทำงานอย่างไรกับจัมโบ้เฟรม) จากนั้นตรวจสอบว่าการควบคุมการไหลไม่ใช่ปัจจัยจำกัด (บัฟเฟอร์มีขนาดใหญ่พอ) บน Linux ฉันใช้ tcp_probe และตรวจสอบว่าหน้าต่างความแออัดดูเหมือน reno ไม่ใช่สี่เหลี่ยม ไม่ทราบว่ามีเครื่องมือที่คล้ายกันสำหรับ freebsd หรือไม่ จากนั้นควบคุมความแออัด (linux ของคุณตั้งค่าเป็น reno ดังนั้นอย่างน้อยไม่ควรมีค่ามากกว่า freebsd ). อาจไม่ช่วย แต่ในกรณี
Score:1
ธง us

คุณสามารถลองใช้จัมโบ้เฟรมได้หากเครือข่ายของคุณรองรับ มันไม่ได้ลบปัญหาหลักของการทริกเกอร์การส่งสัญญาณซ้ำของ TCP ที่ไม่ได้อยู่ในลำดับอย่างไรก็ตาม เนื่องจากอีเทอร์เน็ตเฟรมใหญ่ขึ้น 6 เท่า จำนวนแพ็กเก็ตจึงลดลง ซึ่งจะลดจำนวนเหตุการณ์ที่ไม่เป็นไปตามลำดับ

มิฉะนั้น คุณควรตรวจสอบกรณีการใช้งานของคุณ คุณต้องการการเชื่อมต่อ TCP เดียวเพื่อรับปริมาณงานทั้งหมดหรือไม่ หากมีการเชื่อมต่อ TCP ที่ใช้งานอยู่หลายรายการระหว่างอุปกรณ์ คุณควรใช้ TCP รู้จักโหลดบาลานซ์

dacabdi avatar
cn flag
เฟรมจัมโบ้ช่วยได้มาก จนถึงตอนนี้มันเป็นเฟรมที่สร้างผลกระทบเชิงบวกมากที่สุด และฉันเข้าใจว่าทำไม ในทางกลับกัน ฉันพยายามเพิ่มปริมาณงานสูงสุดสำหรับฝ่ายใดฝ่ายหนึ่ง ดังนั้น ใช่ ฉันต้องการสตรีม TCP ให้ได้สูงสุด ฉันจะย้ายไฟล์ขนาดใหญ่ไม่กี่ไฟล์โดยทำงานพร้อมกันน้อยมาก
us flag
นอกจากนี้ยังมี Multipath TCP ซึ่งจะเหมาะกับกรณีการใช้งานของคุณ อย่างไรก็ตาม ยังคงเป็นวันแรก ดังนั้นคุณอาจไม่พบการใช้งานที่เสถียรสำหรับสภาพแวดล้อมของคุณhttps://en.wikipedia.org/wiki/Multipath_TCP มีข้อมูลเพิ่มเติม
dacabdi avatar
cn flag
ดีมาก ฉันไม่รู้จัก MPTCP ฉันจะอ่านบางอย่างแม้ว่าจะยังไม่มีการนำไปใช้อย่างแพร่หลาย แต่ก็เป็นสิ่งที่ฉันสามารถทดลองได้ในห้องปฏิบัติการบางแห่ง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา