โปรเซสเซอร์สามารถจัดการ 10 กิกะบิตต่อวินาทีหรือมากกว่าอัตราการส่งข้อมูลได้อย่างไร


11

ฉันไม่รู้ว่ามันเป็นสถานที่ที่เหมาะสมหรือไม่ มันอาจเป็นคำถามที่โง่มาก ฉันคิดว่าโปรเซสเซอร์บางตัวต้องประมวลผลเฟรมข้อมูลสำหรับการสลับ / การกำหนดเส้นทาง โปรเซสเซอร์สมัยใหม่มีความเร็วเพียงไม่กี่ GHz พวกเขาจัดการกับข้อมูลที่มาในอัตราที่เร็วกว่าที่พวกเขาทำงานอย่างไร

คำตอบ:


16

คุณถูกต้องทั้งหมดถ้าเราต้องใช้วงจรการเรียนรู้ต่อบิต 10Gbps จะไม่สามารถทำได้ สิ่งแรกที่ควรทราบคือเราจัดการคำต่อ CPU คำสั่ง - 64 บิต

ถึงอย่างนั้นสิ่งที่แย่ที่สุดที่เราสามารถทำได้เพื่อประสิทธิภาพก็คือให้ CPU เข้าถึงคำทั้งหมดของแพ็กเก็ต ดังนั้นการมุ่งเน้นไปที่การจัดการ "ศูนย์สำเนา" ของแพ็คเก็ต กลอุบายบางอย่างนั้นอยู่ในอินเทอร์เฟซของตัวเอง: พวกเขามี DMA ("เข้าถึงหน่วยความจำโดยตรง") เพื่อให้ชิปคอนโทรลเลอร์อีเธอร์เน็ตทำสำเนาข้อมูลลงใน RAM; พวกเขาคำนวณผลรวมตรวจสอบเพื่อให้ CPU ไม่จำเป็นต้องเข้าถึงทุกคำในแพ็คเก็ตให้ทำ บางส่วนอยู่ในการออกแบบโครงสร้างข้อมูล: เราระมัดระวังในการจัดแนวแพ็กเก็ตบัฟเฟอร์เพื่อให้เราสามารถย้ายได้โดยเปลี่ยนความเป็นเจ้าของของรายการตารางหน้า บางส่วนเป็นเพียงการเขียนโปรแกรมอย่างระมัดระวังเพื่อให้แน่ใจว่าข้อมูลแพ็คเก็ตมีการเข้าถึงจำนวนครั้งน้อยที่สุดและไม่สามารถเข้าถึงได้อย่างสมบูรณ์จนกว่าจะได้รับโปรแกรมแอปพลิเคชัน

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

ในที่สุดเรามีทางลัดกรณีพิเศษเช่นการเรียกใช้ sendfile () ของเคอร์เนลซึ่งเป็นเส้นทางด่วนจากดิสก์ไปยังเครือข่ายโดยใช้ปริมาณงานน้อยที่สุด

เราสามารถกำหนดเส้นทางกรณีพิเศษ (การส่งต่อแพ็กเก็ตจากอินเตอร์เฟสหนึ่งไปยังอีกอินเตอร์เฟสหนึ่ง) โดยใช้คุณสมบัติฮาร์ดแวร์ของการ์ดเชื่อมต่อเครือข่ายและปฏิบัติต่อบัส PCI เป็นบัสระหว่างการ์ดแทนที่จะใช้ CPU ที่เกี่ยวข้อง ไม่สามารถทำได้ในระบบปฏิบัติการที่ใช้งานทั่วไป แต่ผู้ค้าอย่าง Intel มอบห้องสมุดซอฟต์แวร์เพื่อใช้งานคุณสมบัติดังกล่าวบนคอนโทรลเลอร์อีเธอร์เน็ต

ย้ายออกจากซีพียูทั้งหมดเรายังสามารถสร้างเราเตอร์ที่มีวัตถุประสงค์พิเศษซึ่งงานการส่งต่อทั้งหมดเกิดขึ้นในฮาร์ดแวร์ เนื่องจากบัส PCI นั้นจะมีข้อ จำกัด พวกเขาจึงเรียกใช้บัสบัสหลายขนาน หรือแม้แต่บัสขนานหลายขนานกับชุดสวิตช์คานคู่ขนานหลายชุด ที่ปลายด้านหนึ่งของตลาดสวิตช์อีเธอร์เน็ตที่ใช้ TCAM ขนาดเล็กจะเป็นตัวอย่างหนึ่ง ในตอนท้ายของตลาด Juniper M40 จะเป็นแบบบัญญัติ

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

เราเตอร์ทั่วไปจะได้รับแพ็คเก็ตและเก็บไว้ในคิวสั้น ๆ ที่อยู่ IP ปลายทางจะถูกค้นหาใน RAM แบบคงที่จากนั้นแพ็คเก็ตจะถูกกระจายเข้าไปในเซลล์เพื่อลดเวลาในการตอบสนองและแต่ละเซลล์จะส่งไปที่สวิตช์บาร์ข้ามไปยังการ์ดอีการ์ด การ์ดนั้นจะรวมเซลล์เข้าไปในแพ็กเก็ตอีกครั้งและจัดเรียงแพ็กเก็ตออกจากส่วนต่อประสาน egress การจัดคิวบนอินเทอร์เฟซภายนอกอาจมีความซับซ้อน


คำตอบที่ดี คุณสามารถอธิบายรายละเอียดเกี่ยวกับthe packet will then be exploded into cells to reduce latency?
Eddie

ในการออกแบบเราเตอร์คุณสามารถส่งแพ็กเก็ตจากการ์ดหนึ่งบรรทัดไปยังอีกการ์ดหนึ่งผ่านการสลับข้ามบาร์โค้ด (หรือบัสการ์ดระหว่างการ์ดประเภทอื่น ๆ ) แต่ความหน่วงแฝงนั้นถูกผูกไว้ด้วยความยาวของแพ็คเก็ต - คุณจะมีการหน่วงเวลาการส่งแพ็กเก็ตที่สมบูรณ์อีกครั้งเนื่องจากแพ็กเก็ตถูกส่งผ่านการสลับคาน เพื่อหลีกเลี่ยงการที่เราสามารถมีการเชื่อมโยงหลายขนานในการเปลี่ยนคานและแยกแพ็คเก็ตในการเชื่อมโยงเหล่านั้น ดังนั้นเวลาในการตอบสนองของแพ็คเก็ตขนาดใหญ่ก็ลดลง ส่วนหนึ่งของแพ็กเก็ตแบบแยกส่วนเรียกว่า 'เซลล์'
vk5tu

ฉันรู้ว่าคำตอบนี้มาจากสองปีที่แล้ว แต่ขอบคุณมาก ฉันมีคำถามเช่นเดียวกับโปสเตอร์ต้นฉบับและพบคำตอบของคุณในการค้นหาของฉัน มันเขียนได้ดีมากและทั่วถึง ขอบคุณ!
loneboat

0

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

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


1
สิ่งนี้ทำให้เกิดความสับสนในการทิ้งด้วยการหยดออกไปข้างนอก โดยทั่วไปจะเกิดการละทิ้งเมื่อริงบัฟเฟอร์ของอินเทอร์เฟซอีเธอร์เน็ตเต็มไปด้วยเช่นเดียวกับที่เกิดขึ้นเมื่อ CPU ไม่สามารถก้าวตามอัตราการมาถึงของข้อมูลได้ บัฟเฟอร์บัฟเฟอร์นั้นเล็กเกินไปสำหรับ RED ที่จะนำไปใช้
vk5tu

@ vk5tu คุณพลาดจุดของฉันที่การจราจรลดลงตลอดเวลาไม่ว่าจะเข้าหรือออก หากส่วนใดส่วนหนึ่งของระบบไม่สามารถรองรับปริมาณการรับส่งข้อมูลบางส่วนจะถูกทิ้งและบางส่วนจะถูกทิ้งโดยไม่ตั้งใจ
Ron Maupin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.