Lan 카드가 지원하는 인터페이스의 속도를 변경하기 위해서 ethtool을 사용합니다.

아래의 명령어를 통해 현재 장치의 Lan 카드의 사양을 확인할 수 있습니다.

# lspci -m | grep -i Ethernet

 

사양 확인 후 ethtool를 사용하여 인터페이스의 최대 속도를 변경,

네트워크의 속도를 10Mbps, 100Mbps, 1000Mbps 등으로 설정하는 방법입니다.

 

■ ethtool
ethtool은 네트워크 인터페이스 컨트롤러 및 해당 장치 드라이버의 일부 매개 변수를 표시하고 수정하기 위한 Linux 커널 기반 운영 체제용 유틸리티입니다. ethtool은 Linux 커널과 병렬로 개발되었습니다.

ethtool 도구에는 많은 옵션들이 있지만, 네트워크 설정 및 드라이버 확인에 사용하는 옵션만 다루겠습니다.
나머지 옵션에 대한 설명은 아래의 링크 참조 부탁드립니다.


- 해당 인터페이스 설정 값 확인

ethtool [네트워크 인터페이스 명]
ex) ethtool enp0s31f6


- 해당 인터페이스 설정 값 변경 (속도, Duplex, Autonegotiation)

ethtool -s speed [10 | 100 | 1000] duplex [half | full] autoneg [on | off]
ex) ethtool -s enp0s31f6 speed 100 duplex full autoneg on


다만, 위 명령어는 영구적이지 않아 System을 재부팅할 경우 설정한 값이 바뀝니다.
재부팅 후에도 값을 적용하기 위해서 /etc/sysconfig/network 파일에 원하는 설정 값을 입력하면 됩니다.

# vi /etc/sysconfig/network
   ethtool -s speed [10 | 100 | 1000] duplex [half | full] autoneg [on | off]


ethtool은 10, 100, 1000과 같이 10Mb 단위로 속도의 설정을 제공합니다.
2.5Gb 혹은 5Gb와 같이 ethtool이 제공하지 않는 Speed 값을 설정하려면 tc (traffic control) 혹은 스위치 단에서 조절해야 합니다.
현재 PC의 Lan 카드가 10Gb의 Spec을 지원하더라도 상대방이나 허브, 스위치의 Spec이 1Gb 밖에 되지 않는다면 최대 1Gb 속도로만 통신이 가능합니다. 

- 해당 인터페이스 드라이버 정보 출력

ethtool -i [네트워크 인터페이스 명]
ex) ethtool -i enp0s31f6

 

이상 속도, Duplex, Autonegotiation을 변경하는 방법이였습니다.

Duplex 및 Autonegotiation의 설명은 해당 포스트 맨 아래에 기재했습니다.

이제 변경한 인터페이스가 실제로 해당 속도를 지원하는지 iperf3 유틸리티를 통해 테스트해 보겠습니다.

 

■ iperf3
iperf는 네트워크 성능 측정 및 조정에 널리 사용되는 도구입니다. 모든 네트워크에 대해 표준화된 성능 측정을 수행할 수 있는 크로스 플랫폼 도구입니다.

iperf3를 사용하여 Server와 Client 네트워크 통신 속도를 확인해 보겠습니다.


- Server
iperf3 유틸리티를 사용하기 위해 설치를 진행 후 Server 쪽 iperf3 유틸리티를 실행합니다.

# yum -y install iperf3

# iperf3 -s


- Client
 iperf3 유틸리티를 사용하기 위해 설치를 진행 후 Client 쪽 iperf3 유틸리티를 실행합니다.

# yum -y install iperf3

# iperf3 -c [Server IP 주소]

 

위 테스트는 100Mbps 환경에서 진행하였고, Server 기준 평균 93.1Mbps의 속도를 확인하였습니다.

100Mbps를 지원하는 속도에서 실제 통신 시 평균 6.9Mbps의 손실률이 발생하였다고 판단할 수 있는 결과입니다.

 

■ Duplex 및 Autonegotiation 의미
- Half Duplex
양방향으로 데이터가 전송될 수는 있으나 동시에 전송하는 것은 불가능한 방식입니다.
ex) 시골이나 골목 등에서 볼 수 있는 왕복 1차선 도로를 예를 들 수 있습니다.

그러나, 양쪽으로 가는 방법이 존재는 하고 있음을 알 수 있습니다.
차량이 한 쪽에서 출발하면, 다른 한쪽은 진입불가입니다. 

즉, 한쪽에서만 갈 수 있고 다른 한쪽은 갈 수 없게 되는 것입니다.

- Full Duplex
하나의 전송 선로에서 데이터가 동시에 양쪽 방향으로 전송될 수 있는 방식입니다. 

분리된 2개의 회선이 있는 TP케이블을 사용합니다.
ex) 왕복 2차선에 비교할 수 있습니다. 

한쪽에서 출발하는 동안, 반대편에서도 출발이 가능합니다. 

이 역시 양쪽으로 가는 방법이 존재합니다.

- Autonegotiation
Auto-Nego란 상대방의 전송 속도나 통신 방식을 모른 채로 상대 장비와의 통신을 위한 준비를 자동으로 맞추어 주는 기술을 말합니다.

요즘 개발되는 네트워크 장비의 기본적인 사양이 되고 있으며 커넥터에 케이블을 꽂으면 자동으로 속도와 통신 방식을 맞추어 설정이 됩니다.

 

예를 들어 10M 전용 장비와 10/100M 겸용 장비를 연결하게 되면 10Mbps로 통신 방식이 설정되도록 하는 기술인데,

Auto-Nego의 개념이 필요하게 된 것은 100Mbps 이더넷 기술이 정의되면서 10Mbps 기술과 동일한 connector(RJ-45)를 사용하게 되었기 때문입니다.

 

이전의 이더넷 기술들은 서로 다른 방식의 기술의 경우에는 사용하는 connector가 달랐기 때문에 케이블을 잘못 꼽게 될 수가 없었지만,

10Base-T에 이어 100Base-Tx가 RJ-45를 사용하게 되면서 문제가 생기게 되었다. 이를 위해서 서로 다른 전송 속도, Flow-control 등에 상관 없이 자동으로 상대방과 협의하여 두 장비 사이의 통신 방식을 맞추게 하는 기술이 개발되었는데 이것이 바로 Auto-Nego의 기능입니다.

 

Auto-Nego에서 가장 중요하게 다루는 것이 바로 속도와 통신 방식(Half duplex or Full duplex)입니다.

속도의 경우에는 Gigabit Ethernet의 상용화로 10/100/1000Mbps의 세 가지 방식이 존재하고 통신 방식은

Half duplex와 Full duplex의 두 가지 방식이 있습니다.

- 속도 : 10/100/1000Mbps

- 통신 방식 : Full Duplex or Half Duplex


Autonegotiation은 IEEE 802.3의 28 절에 정의되어 있습니다. 
[1] 원래는 고속 이더넷 표준의 선택적 구성 요소였습니다. 
[2] 10BASE-T에서 사용하는 NLP (normal link pulse)와 역 호환됩니다. 
[3] 이 프로토콜은 기가비트 이더넷 표준에서 크게 확장되었으며 트위스트 페어를 통해 1000BASE-T 기가비트 이더넷에 필수적입니다.