lo와 eth 사이의 트래픽, lo의 트래픽이 eth의 절반에 불과한 것으로 보이는 이유는 무엇입니까?

lo와 eth 사이의 트래픽, lo의 트래픽이 eth의 절반에 불과한 것으로 보이는 이유는 무엇입니까?

eth0 및 lo의 포트로 트래픽을 전달합니다.

동일한 포트와 다른 포트의 동일한 트래픽에 대해 tcpdump를 수행하고 패킷 수를 계산하면 시간 t 동안 eth0과 비교하여 루프백의 패킷 수가 절반 정도만 표시됩니다.

나는 다른 포트 번호, 다른 트래픽 속도에서 이를 시도했으며 lo의 패킷 수는 항상 eth0의 절반 정도입니다.

이를 설명할 수 있는 lo와 eth 인터페이스 사이에 근본적인 차이점이 있습니까?


업데이트: 루프백 IP 주소를 사용하여 모든 장치에서 동일한 트래픽을 보내고 있습니다. 내 패킷이 두 장치와 해당 루프백 포트 간에 분할될 가능성이 있습니까?


업데이트 2: tcpdump에서 볼 수 있는 것은 eth0의 경우 패킷의 100%가 필터에 의해 수신되어 캡처된다는 것입니다. 그러나 Lo에서 필터는 수신된 패킷의 50%만 처리합니다. 필터에서 수신한 모든 패킷이 아니라 캡처된 패킷만 계산합니다.

그런데 왜 Lo는 패킷의 50%만 캡처했을까요?

답변1

인터페이스의 예는 다음과 같습니다.

# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether be:1a:e0:7d:22:6e brd ff:ff:ff:ff:ff:ff link-netns test

그리고 MTU는이더넷 01500, MTU루오65536입니다. 이는 TCP를 통해 무언가를 전송하는 경우 더 적은 패킷이 필요하다는 것을 의미합니다.루오끝보다이더넷 0동일한 전체 데이터 크기에 대해.

데이터 병합의 정확한 동작은 다양한 요인과 일부 요인에 따라 달라집니다.TCP 옵션. 예를 들어TCP_CORK이 동작을 선호하고 사용합니다TCP_NODELAY이 동작은 방지됩니다(비활성화하면Nagel의 알고리즘).

관련 정보