UDP 패킷 전송시, 속도 차이가 발생하는 이유

106
points
points
로컬 네트워크를 구성해두고 다른 트래픽 발생이 없을 때 똑같은 크기의 UDP 패킷을 전송할 때 차이가 나는 이유를 알아보고 있습니다.
A, B, C 라는 컴퓨터 3대가 있습니다.
A->B 이렇게 전송해서 전송되는 시간 측정해보고, A->C 이렇게 전송해서 전송되는 시간을 측정해보았는데 몇십 us단위(대략 50us)로 차이가 나더군요.
제가 추측하는 바로는 리눅스 커널 버전의 차이로... 셋 다 2.6이긴 한데 A(페도라),B(페도라)는 정확히 같고 C(우분투)는 약간 다릅니다... 허나 구체적인 근거를 댈수가 없어 그야말로 추측에 지나지 않구요;;
조금이라도 짐작가시거나 떠오르는게 있으면 알려주십사 합니다!

points
커널에 따라... NIC에
커널에 따라...
NIC에 따라...
랜선에 따라...
ps. 도배는 사절? =.=
points
커널에 따라... NIC에
의견 감사합니다, 구체적인 근거를 좀더 부연해주시면 더 감사드리겠습니다
( 예를 들어 커널의 이런이런 부분이 달라서 여기서 더 지연된다.. 이런식으로..^^;; )
ps. 랜선 문제는 아니더군요
points
커널에 따라... NIC에
헉 왜 도배가 되어있지;;
글 올리는데 로딩이 길어져서 에러가 난줄 알았는데, 글이 다 올라가있었네요
다시 하나로 정리했습니다... 죄송함다
points
커널을 바꿔보면 알 수 있지 않을까요?
질문에 질문으로 답하는 것 같지만
우분투 호스트의 커널을 바꿔보면 커널 버전 차이때문인지 알 수 있지 않을까요?
points
고정변수들(테스트 PC
고정변수들(테스트 PC 스펙), Ethernet Card 등등)을 모두 동일하게 맞추신 상태이신지요? 가변적인 변수들이 엄청 많은 상태에서는 감히 짐작하기 힘들거 같습니다. 당장 예를 들어서 Ethernet Card만 달라지더라도 들어오는 packet을 device driver가 처리해주는 코드가 틀려지며, 즉 compiler에서 생성된 instruction의 차이도 그럼 당연히 생기게 되겠지요. 이거 하나하나가 모이면, 차이가 생기는건 당연한 겁니다.
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
points
제 생각에는
서로 다른 환경변수에 대한 것들은 이미 위에분이 말씀해 주신 상태이고.
소켓으로 데이터를 보내는것도 일단 Process 입장에서보면 Blocking 함수호출이기 때문에
네트워크 드라이버에서 언제 Packet 을 외부로 보내주느냐는 전적으로 OS와 Scheduler 상황에 따르게 된다는 결론도 가능합니다.
Dig it.
points
차이가 나는 것이 당연합니다.
a287848님의 말씀이 맞구요 동일한 Machine해서 반복적으로 테스트 해도 매번 결과가 조금씩 차이가 날 겁니다.
이유는 Application에서 Blocking call을 하는 동안 O/S 부터 Nic 사이에는 비동기 I/O가 이루어 지고요
또 그 순간에 해당 CPU에서 time silce를 받는 타이밍하고도 연관이 있겠죠.
또한가지는 Hub를 사용할 경우 Hub의 타이밍도 개입이 되니까..당연히 차이가 납니다.
그런데 한가지 궁금한 것은 UDP 전송을하면서 그정도의 오차범위까지 고려하는 이유는 뭔가요?