로컬 인터페이스를 통해 특정 링크의 대역폭, 지연, 지터 및 충돌, 비트 오류율, 패킷 손실률을 얻을 수 있는 방법이 있습니까?
내 컴퓨터가 두 개의 인터페이스를 통해 네트워크에 연결되어 있다고 가정해 보겠습니다. 하나는 무선이고 다른 하나는 이더넷입니다. 저는 이 측정값을 사용하여 이 두 링크의 품질을 비교하고 싶습니다.
Linux 커널에서 이러한 측정값을 얻을 수 있는 방법이 있습니까? (섹션 3.5.0)
답변1
특히 어떤 배포판을 사용하고 있는지, 얼마나 자세한 결과를 원하는지 알지 못하면 전체 세부 정보를 제공하기 어렵습니다. 따라서 몇 가지만 나열하겠습니다.아주 기본적인예.
각 인터페이스에 대한 개별 통계를 얻으려면 각 프로젝트를 개별적으로 분류할 수 있습니다(다음에서는 CentOS와 같은 배포판에 대한 루트 액세스를 가정합니다).
~을 위한대역폭사용법 - 저는 iftop을 정말 좋아합니다. 설치가 완료되면 iftop
다음 명령을 실행할 수 있습니다.
iftop -i eth0 -B
-B 옵션은 바이트용입니다. 일단 iftop
누적 합계를 얻으려면 "T"를 누르는 것을 좋아합니다.
~을 위한오류율ifconfig
콘솔 출력에서 이를 쉽게 확인할 수 있습니다. 보다 단순화된 접근 방식을 위해 다음을 실행할 수 있습니다.매우 무례한 명령다음과 같이(Centos처럼 가정):
# ifconfig | grep -E "^\w|errors.* " | sed 's/pack.*errors:/Errors:/g' | sed 's/ drop.*//g' | sed 's/HW.*//g'
eth0 Link encap:Ethernet
RX Errors:0
TX Errors:0
eth1 Link encap:Ethernet
RX Errors:3
TX Errors:1
lo Link encap:Local Loopback
RX Errors:0
TX Errors:0
그러면 인터페이스당 오류 수가 제공됩니다.
~을 위한충돌당신은 여전히 그것을 사용할 수 있습니다 ifconfig
. 충돌 횟수를 얻으려면 또 다른기본 명령다음과 같이:
# ifconfig | grep -E "^\w|collisions.* " | sed 's/pack.*collisions:/Collisions:/g' | sed 's/ txq.*//g' | sed 's/HW.*//g'
eth0 Link encap:Ethernet
collisions:0
eth1 Link encap:Ethernet
collisions:0
lo Link encap:Local Loopback
collisions:0
~을 위한떨어지다여전히 사용되는 패킷에 대해 ifconfig
또 다른 간단한 명령을 실행할 수 있습니다.
# ifconfig | grep -E "^\w|dropped.* " | sed 's/pack.*dropped:/Dropped:/g' | sed 's/ over.*//g' | sed 's/HW.*//g'
eth0 Link encap:Ethernet
RX Dropped:0
TX Dropped:0
eth1 Link encap:Ethernet
RX Dropped:1
TX Dropped:0
lo Link encap:Local Loopback
RX Dropped:0
TX Dropped:0
잘못된 패킷(오류, 충돌 또는 삭제)이 많은 경우 이전 3개의 명령을 bash 스크립트에 넣고 watch
다음을 사용하여 모니터링할 수 있습니다.
파일/tmp/net오류:
#!/bin/sh
ifconfig | grep -E "^\w|errors.* " | sed 's/pack.*errors:/Errors:/g' | sed 's/ drop.*//g' | sed 's/HW.*//g'
echo
ifconfig | grep -E "^\w|collisions.* " | sed 's/pack.*collisions:/Collisions:/g' | sed 's/ txq.*//g' | sed 's/HW.*//g'
echo
ifconfig | grep -E "^\w|dropped.* " | sed 's/pack.*dropped:/Dropped:/g' | sed 's/ over.*//g' | sed 's/HW.*//g'
echo
주문하다:
watch /tmp/netErrors
~을 위한서비스 품질, 실제로 설정 방법에 따라 다릅니다. Linux의 경우 traffic control
일반적으로 QoS를 설정하는 데 사용됩니다. 현재 QoS를 보려면 traffic control
다음 명령을 실행하면 됩니다.
# tc qdisc ls
qdisc pfifo_fast 0: dev eth0 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev eth1 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev eth2 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev tun0 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
tc - 흐름 제어 명령 qdisc - 대기열 규칙 ls - 목록
더 나은 이해를 위해서는 traffic control
다음 링크를 확인해야 합니다.교통 통제에 대해.
답변2
이것은 아마도 Linux 커널의 QoS 통계에 익숙해지기 위해 제가 찾은 최고의 튜토리얼일 것입니다. 이는 원래 2010년 Linux Magazine에 게재되었지만 여전히 완전히 관련성이 있습니다.
이 기사의 제목은 다음과 같습니다.Linux 커널의 핵심으로의 여행: 트래픽 제어, 형성 및 QoS.
답변3
이와 같은 패키지는 ntop
이 정보를 표시합니다. 더 강력하지만 구성하는 데 시간이 걸리는 nagios
및 를 설치할 수도 있습니다 .cacti
답변4
/sys/class/net/<interface>
tx/rx fifo 오류, 충돌 등에 대한 통계를 포함하여 인터페이스 통계가 주로 여기에 저장됩니다. 일부는 드라이버별로 다르므로 통계를 살펴봐야 합니다.
측정이 해당 5튜플에서 이루어지기 때문에 지터는 흐름 수준 개념인 경향이 있습니다. 이를 위해 다른 도구를 사용해야 할 수도 있습니다.