Truy vấn cực nhanh bằng các gói UDP


10

Tôi đang triển khai một hệ thống trong đó một thiết bị trên mạng truy vấn với tần suất rất cao (hàng trăm hoặc hàng nghìn truy vấn mỗi giây) thông qua việc gửi một gói UDP nhỏ với 8 byte dữ liệu. Điều này được nhận bởi một ứng dụng khác, có lẽ trên một thiết bị khác, thực hiện một số xử lý rất đơn giản và gửi đi kết quả lớn vài byte được gói trong một gói UDP khác.

Tôi muốn biết loại thời gian khứ hồi nào khả thi với phần cứng thông thường, trong đó các hệ thống giao tiếp có thể được kết nối qua Ethernet có dây cách nhau vài mét, có tính đến sự lan truyền và trì hoãn truyền dẫn, v.v.

Những suy nghĩ và đề xuất khác cũng được chào đón.


2
bạn có thể thấy độ trễ trong hàng chục hoặc hàng trăm micro giây ... chắc chắn độ trễ phụ mili giây ... dựa trên mô tả của bạn, có vẻ như bạn đang xem xét một hệ thống giao dịch tài chính ... độ trễ mà bạn yêu cầu rất phụ thuộc vào hw cụ thể của bạn và bạn sẽ tiến hành các bài kiểm tra tốt hơn nhiều so với yêu cầu tư vấn miễn phí
Mike Pennington

Rất cám ơn phản hồi của bạn. Nó không thực sự cho một hệ thống giao dịch tài chính trong trường hợp này. Tôi chỉ muốn một ý tưởng mơ hồ về những gì có thể trước khi bắt đầu thực hiện, giống như một nghiên cứu khả thi hơn bất cứ điều gì khác.
John Smith

Câu trả lời:


11

Một ví dụ Juniper MX80 có độ trễ -> độ trễ khoảng 8us, trên công tắc cắt có độ trễ thấp, nó có thể <1us (có thể là 0,7us). (Hãy nhớ rằng công tắc cắt không thể thực hiện cắt 100% thời gian, chỉ khi cổng đầu ra không hoạt động!)

1km trong sợi có độ trễ khoảng 5us (một lần nữa, một hướng).

Độ trễ tuần tự hóa @ 10G cho tải trọng có kích thước tối thiểu (46B) là khoảng 67ns (0,067us), bằng cách tăng tốc độ liên kết, bạn giảm độ trễ nối tiếp.

Tiêu đề IP là 20B, tiêu đề UDP là 8B, dữ liệu của bạn là 8B, vì vậy bạn chỉ có 36B dữ liệu, có nghĩa là tải trọng ethernet của bạn sẽ bao gồm 10B rác bạn PHẢI gửi, tức là nếu bạn có thứ gì đó để thêm vào tải trọng của mình, hãy thêm nó vào, Nó có 0 chi phí trễ.

Tôi hy vọng bạn có thể ngoại suy RTT từ những thứ này, bằng cách nhân độ trễ của thiết bị với số lượng thiết bị và thêm 5us cho mỗi km sợi và sau đó nhân số đó với 2.


Tôi không thể cưỡng lại việc thêm một số suy nghĩ về HFT.

Theo khối lượng HFT này giảm một nửa từ năm 2009 đến 2012. Cho thấy rằng các chiến thắng dễ dàng đã biến mất. Tôi muốn xem một số bài báo khoa học hoặc chỉ là dữ liệu thực về độ trễ của HFT và ảnh hưởng của nó đến lợi nhuận. Tôi nghi ngờ độ trễ ảnh hưởng đến lợi nhuận thương mại ở một mức độ khác so với độ trễ mà chúng ta đang nói đến ngay bây giờ. Người bạn của tôi, người xây dựng mạng lưới cho một trong những sàn giao dịch lớn nhất dường như nghĩ rằng đó chỉ là khách hàng thực hiện 'thấp hơn == tốt hơn' mà không hiểu quy mô.
Tôi hoàn toàn có thể hiểu HFT hữu ích như thế nào khi có rất ít người thực hiện nó, khi bạn có thể quan sát thị trườngA không thấy thị trường thay đổiB nhìn thấy và tận dụng nó. Một số người đang nói về việc sử dụng quy định để ngăn chặn HFT bằng cách đánh thuế mỗi giao dịch làm cho nó trở nên đắt đỏ đối với mọi người, tôi không nghĩ rằng nó sẽ cần thiết, tôi nghĩ rằng cửa sổ cơ hội đã đóng.


Trả lời tuyệt vời và rất nhiều thông tin, cảm ơn. Thậm chí một vài suy nghĩ cá nhân về HFT!
John Smith

1
@JohnSmith, đừng bỏ qua việc xem xét độ trễ được giới thiệu bên trong các điểm cuối của bạn (chẳng hạn như bộ lập lịch hệ điều hành hoặc xử lý kernel) ... điều này có thể đóng góp đáng kể vào độ trễ mà tôi đã đề cập trong một nhận xét trước đó.
Mike Pennington

Điểm tuyệt vời về việc sử dụng kích thước gói tối thiểu đầy đủ với chi phí trễ 0.
generalnetworkerror

1

Tôi nghĩ rằng trên phần cứng bán điều chỉnh thông thường, bạn sẽ có thể:

  1. Đi ra khỏi ngăn xếp mạng máy chủ của bạn
  2. Lên ngăn xếp mạng tiếp theo của bạn
  3. Thoát ra khỏi ngăn xếp mạng đó với gói 'mới' của bạn

Trong ~ 10 chúng tôi lúc 10gig. Nếu bạn thực sự khóa mọi thứ, con số đó có thể thấp hơn đáng kể.

Hầu như TẤT CẢ độ trễ mà bạn sẽ thấy không phải từ phần cứng / cáp mạng, mà là từ các hệ thống máy chủ của bạn. Việc cắt giảm hợp lý thông qua chuyển đổi, (Arista, Gnodal, Cisco mới, v.v.) sẽ là phụ 1us.

Bắt đầu với việc đảm bảo các quy trình tiêu thụ các gói UDP được ghim vào cùng lõi khi ngắt NIC của bạn. Từ đó, đảm bảo rằng việc kết hợp lại trên NIC của bạn bị vô hiệu hóa và từ đó đảm bảo rằng bạn đã bật MSI-X và DCA.

Nếu bạn nghiêm túc hơn ... hãy xem OpenOnload của SolarFlare. Họ cũng có một bộ công cụ tuyệt vời để kiểm tra / xác minh hiệu suất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.