2012-06-21 30 views
7

Gần đây, tôi đã đọc rất nhiều trang web và sách về 10GB/s NIC, DMA của họ và cách dữ liệu được hạt nhân Linux xử lý (10/100 mb/s NIC) và một vài câu hỏi đến trong đầu tôi.Từ hạt nhân đến không gian người dùng (DMA)

Cách dễ nhất để gửi luồng dữ liệu 10GB/s từ NIC đến vùng người dùng (Tôi cho rằng có thể xử lý dữ liệu trong vùng đất người dùng với cùng tốc độ).

Bạn có nghĩ rằng nó sẽ là một ý tưởng tốt để thực hiện bộ đệm DMA bên trong sử dụng không gian để đọc các dữ liệu thô trực tiếp từ đó (và xử lý chúng rõ ràng ở mức tương tự)

hoặc là giải pháp tốt hơn của họ mà tôi không nghĩ đến:/

Cảm ơn bạn.

Trả lời

6

Điều dễ nhất là sử dụng ổ cắm thông thường của Linux. Nó có thể không hiệu quả nhất, nhưng dễ nhất.

Có các khung công tác, cho phép rất hiệu quả để nhận và truyền dữ liệu trong không gian người dùng. Chúng ánh xạ cùng các bộ đệm cho NIC (DMA) và quá trình này, do đó dữ liệu không cần phải được sao chép.
Các khung công tác này sẽ bỏ qua hoàn toàn hạt nhân - bạn phải tương tác trực tiếp với NIC. khuôn khổ như vậy, ví dụ, PF-RINGNetmap

+0

tôi cần một cái gì đó hiệu quả hơn so với ổ cắm thông thường Linux, tôi đã đọc một chút thông tin về PF-RING và Netmap, tôi sẽ cố đọc thêm một chút về điều đó hôm nay, cảm ơn câu trả lời. Tuy nhiên, tôi không chắc chắn giải pháp nào (PF-RING, Netmap của DMA trong vùng đất người dùng), là nhanh nhất mặc dù – noktec

+2

Google cũng dành cho các kênh mạng của Van Jacobson. – ninjalj

+0

Tôi đã đọc về PF-RING và Netmap, cũng như PACKET_MMAP, và họ dường như có hầu như tất cả các giải pháp tương tự ở đó, tôi cũng đã tìm kiếm các slide từ Van Jacobson, và họ đã có những ý tưởng rất tốt bên trong! Tôi đoán, tôi sẽ có một thử đầu tiên với PACKET_MMAP, và sau đó thực hiện một bài kiểm tra băng ghế dự bị nhỏ với PF-RING, để xem giải pháp nào là phù hợp nhất. Nhưng tôi tự hỏi nếu nó có thể ngăn chặn các gói để nhập sk_buff, và trực tiếp được điều trị bởi một bộ đệm vòng trong vùng đất người dùng hoặc bởi PF-RING (và khó khăn như thế nào để thực hiện điều đó từ đầu) – noktec

2

Tôi cũng đề nghị để có một cái nhìn tại các khuôn khổ PFQ (https://github.com/pfq/PFQhttp://netgroup.iet.unipi.it/software/pfq/), trong đó xây dựng trên đầu trang của các khái niệm netmap và pf_ring và giấu chúng để cho phép đa đơn giản xử lý gói lõi trong không gian người dùng.

+0

Tôi cũng sẽ xem xét điều đó, cảm ơn câu trả lời. tại thời điểm này tôi chỉ điều tra các giải pháp PF_Ring đề xuất trước đó. – noktec

0

Tôi nhớ đã nghe một cuộc nói chuyện của một số người từ Intel tại Hội nghị chuyên đề Ottawa Linux đã thực hiện chính xác những gì bạn đề xuất. Khi họ đo kết quả so với giao diện socket bình thường, họ đã ngạc nhiên khi phát hiện ra rằng đối với nhiều tải công việc, cách tiếp cận này không thực hiện tốt hơn và đôi khi tệ hơn (!) Rồi giao diện socket.

Tôi đã tìm kiếm nhưng không thể xác định vị trí chính xác giấy trực tuyến ngay bây giờ, nhưng có lẽ điều này mang đến cho bạn một gợi ý ...

+0

Cảm ơn bạn đã trả lời, tôi sẽ xem xét điều đó! – noktec

Các vấn đề liên quan