Linux에서 TCP 혼잡 변형을 구현하는 방법에 대해 읽고 있습니다. 각 변형은 별도의 모듈로 구현됩니다.
이 질문을 읽었을 때 :Linux Ubuntu에 TCP 혼잡 제어 변형 추가
나는 이 변형이 modprobe를 사용하여 로드될 수 있다는 것을 알고 있습니다.
이는 lsmod가 실행될 때 TCPcubic이 기본적으로 로드되는 것으로 나타나야 한다는 의미입니까? lsmod를 실행하면 혼잡 제어 관련 모듈이 로드되어 있는데 찾을 수 없습니다. lsmod에 특정 유형의 커널 모듈이 나열되어 있습니까?
답변1
이 특정 사례(혼잡)에 대해 해결해야 할 질문과 몇 가지 설명이 있습니다.
ㅏ커널 모듈커널의 일부이고 선택 사항이며 커널이 처음 시작될 때 존재할 필요가 없으며 필요하지 않은 경우 나중에 존재할 필요도 없습니다. 이것은끼워 넣다. 이를 통해 전혀 사용되지 않는 메모리를 사용하지 않고도 요청 시 대부분의 기능을 사용할 수 있습니다. 대부분의 모듈은 모듈 또는 내장으로 컴파일될 수 있습니다. 내장되어 있다면 .ko
모듈 파일이 이미 초기 커널에 존재하기 때문에 모듈 파일을 찾을 수 없다는 의미입니다.
수행된 작업을 확인할 수 있습니다.
구성 옵션(여기
CONFIG_TCP_CONG_CUBIC
)을 이해하여 사용된 구성(일반적으로 파일 형식)에 액세스/boot/config-$(uname -r)
하고 어떤 옵션이 사용되었는지 확인하세요.grep CONFIG_TCP_CONG_CUBIC /boot/config-$(uname -r)
또는 모듈 이름을 알고 해당 모듈이 내장 모듈 목록에 있는지 확인하면 됩니다.
fgrep tcp_cubic.ko /lib/modules/$(uname -r)/modules.builtin
모듈을 찾지 못했기 때문에 귀하의 사례에 대한 가능한 결과의 예이지만 큐브에 대한 가능한 기본값은 내장되어 있음을 의미할 수 있습니다.
$ grep _CUBIC /boot/config-$(uname -r)
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_CUBIC=y
$ fgrep tcp_cubic.ko /lib/modules/$(uname -r)/modules.builtin
kernel/net/ipv4/tcp_cubic.ko
따라서 다음 질문에 대한 답이 됩니다. 이 모듈은 내장되어 있으므로 항상 로드한다는 점을 고려하세요. 내장된 기본값은 의미가 있으며 종종 필수입니다.
/lib/modules/$(uname -r)
lsmod
어딘가에서 찾아서 표시할 것으로 예상 하지만 사용할 수 없는 내장 모듈 파일 목록입니다 cat /lib/modules/$(uname -r)/modules.builtin
. 특별하지는 않지만 종종(항상은 아니지만) 선택됩니다(Linux 배포판에서). 모든 관련 모듈 종속성을 포함하여 빌드하려면 옵션 목록에서 기본값을 선택해야 하기 때문입니다.
이제 조금 더 명확하게 설명하겠습니다. 물론 모듈의 기능을 사용하려면 모듈을 로드(또는 내장)해야 합니다. 하지만 링크한 Q&A에는 귀하의 의견이 나와 있지 않습니다.오직활성화하려면 TCP 혼잡 모듈을 로드해야 합니다. 인용하다:
이들 중 하나를 시도하려면 modprobe -a tcp_westwood 또는 원하는 것을 사용하여 설치해야 합니다. 그런 다음 이것을 사용하여 테스트 할 수 있습니다
echo "westwood" > /proc/sys/net/ipv4/tcp_congestion_control
이 더미 파일은 읽기/쓰기이므로 간단히 쿼리하여 어떤 정체가 사용되고 있는지 알아낼 수 있으며 결과는 다음과 같습니다.
$ cat /proc/sys/net/ipv4/tcp_congestion_control
cubic
이제 알고리즘을 변경하십시오.
# lsmod | grep tcp_westwood
# echo westwood > /proc/sys/net/ipv4/tcp_congestion_control
# lsmod | grep tcp_westwood
tcp_westwood 16384 1
모듈은 자동으로 로드되어 사용 중입니다(일부 시스템은 자동으로 로드되지 않을 수 있음).
어쨌든, 이 특정 사례에 대한 충분한 정보 /proc/sys/net/ipv4/tcp_congestion_control
는 lsmod
.