UDP 패킷을 사용한 초고속 쿼리


10

8 바이트 정도의 데이터가있는 작은 UDP 패킷을 전송하여 네트워크의 한 장치가 매우 높은 빈도 (초당 수백 또는 수천 개의 쿼리)로 쿼리하는 시스템을 구현하고 있습니다. 이것은 다른 응용 프로그램, 아마도 다른 장치에서 수신되며 매우 간단한 처리를 수행하고 다른 UDP 패킷에 싸인 몇 바이트 큰 결과를 보냅니다.

통신 시스템이 전파 및 전송 지연 등을 고려하여 몇 미터 떨어진 유선 이더넷을 통해 연결된 일반적인 하드웨어에서 어떤 종류의 왕복 시간이 가능한지 알고 싶습니다.

다른 생각이나 제안도 환영합니다.


2
지연 시간을 수십 또는 수백 마이크로 초로 볼 수 있습니다 ... 확실히 밀리 초 미만의 대기 시간 ... 설명에 따라, 금융 거래 시스템을 고려하고있는 것처럼 들립니다 ... 요청한 대기 시간은 특정 hw에 매우 의존적입니다 , 그리고 당신은 무료 조언을 요청하는 것보다 테스트를 수행하는 것이 훨씬 좋습니다
Mike Pennington

답변 해 주셔서 감사합니다. 이 경우 실제로 금융 거래 시스템이 아닙니다. 구현을 시작하기 전에 무엇이 가능한지에 대한 모호한 아이디어를 원했습니다.
John Smith

답변:


11

주니퍼 MX80의 예는 약 8us의 수신-> 출발 지연을 가지며, 저 지연 컷 스루 스위치에서 <1us (아마도 0.7us) 일 수 있습니다. 컷-스루 스위치는 출구 포트가 유휴 상태 인 경우에만 100 % 컷-스루를 수행 할 수 없습니다.

광섬유에서 1km는 약 5us의 대기 시간입니다 (단방향).

최소 크기 페이로드 (46B)에 대한 직렬화 지연 @ 10G는 약 67ns (0.067us)입니다. 링크 속도를 높이면 직렬화 지연이 줄어 듭니다.

IP 헤더는 20B, UDP 헤더는 8B, 데이터는 8B이므로 데이터는 36B에 불과합니다. 즉, 이더넷 페이로드에는 반드시 10B의 휴지통을 포함 해야합니다 . 예를 들어 페이로드에 추가 할 항목이 있으면 대기 시간 비용이 0입니다.

장치 지연에 장치 수를 곱하고 1km의 광섬유마다 5us를 더한 다음 2를 곱하여 RTT를 추정 할 수 있기를 바랍니다.


나는 HFT에 대한 생각을 추가하는 것을 거부 할 수 없다.

HFT 거래량 에 따르면 2009 년과 2012 년 사이에 절반 줄어 들었습니다. 쉬운 승리는 사라 졌다고 제안합니다. 과학 논문이나 HFT 대기 시간 및 수익에 미치는 영향에 대한 실제 데이터를보고 싶습니다. 무역 이익에 영향을 미치는 대기 시간이 지금 우리가 이야기하고있는 대기 시간과 다른 정도라고 생각합니다. 가장 큰 거래소 중 하나를 위해 네트워크를 구축하는 내 친구는 규모를 이해하지 않고 '낮은 == 더 나은'고객 만 생각하는 것 같습니다.
시장을 관찰 할 수있을 때 소수의 사람들이 HFT를 사용했을 때 HFT가 어떻게 유용한 지 완전히 이해할 수 있습니다. 일부는 모든 거래에 세금을 부과하여 HFT를 중지시키기 위해 규제를 사용하는 것에 대해 이야기하고 있습니다.


훌륭한 답변과 매우 유익한 정보 감사합니다. HFT에 대한 몇 가지 개인적인 생각조차!
John Smith

1
@JohnSmith, 엔드 포인트 내부에 도입 된 지연 (OS 스케줄러 또는 커널 처리 등)을 고려하지 마십시오. 이는 이전 의견에서 언급 한 지연에 크게 기여할 수 있습니다.
Mike Pennington

대기 시간이 0 인 전체 최소 패킷 크기를 사용하는 데있어 탁월한 점입니다.
generalnetworkerror

1

기존의 세미 튜닝 하드웨어에서 다음을 수행 할 수 있어야한다고 생각합니다.

  1. 호스트 네트워크 스택을 외출
  2. 다음 네트워크 스택 위로
  3. '새로운'패킷으로 해당 네트워크 스택을 제거하십시오.

~ 10에서 우리 10gig. 실제로 물건을 잠그면 그 숫자가 상당히 낮아질 수 있습니다.

거의 모든 대기 시간은 네트워킹 하드웨어 / 케이블이 아니라 호스트 시스템에서 발생합니다. 합리적인 차단 스위치 (Arista, Gnodal, New Cisco 등)는 1us 미만이 될 것입니다.

UDP 패킷을 소비하는 프로세스가 NIC 인터럽트와 동일한 코어에 고정되어 있는지 확인하십시오. 여기에서 NIC 통합 기능을 비활성화하고 MSI-X 및 DCA가 켜져 있는지 확인하십시오.

더 진지하다면 ... SolarFlare의 OpenOnload를 확인하십시오. 또한 성능 테스트 / 검증을위한 훌륭한 도구 모음이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.