검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 네트워크
참조 원문 : Best Networking Tweaks for Linux


ifconfig (interface) txqueuelen #
  제목의 명령어처럼 'txqueuelen'이라는 옵션을 통해 전송 버퍼의 크기를 늘릴 수 있습니다. 리눅스에서 네트워크 어댑터를 위한 소프트웨어 버퍼의 크기는 전통적으로 1000 패킷입니다. 네트워크 연구원과 과학자에 따르면 LAN의 경우 1만 정도가 적당하고 만약 LAN의 속도가 기가 비트 이상이라면 그보다 높게 설정하는 것이 좋다고 합니다. 모뎀이나 WAN 링크의 경우 디폴트로 0~100 정도의 값이 설정될 수 있지만 1000까지 올릴 경우 성능이 향상될 수 있습니다. 단, 이 설정 값을 올리면 그 만큼의 메모리가 사용되므로 임베디드 라우터를 사용할 경우 조심할 필요가 있습니다. 16MB 정도의 램이라면 1만 정도로 설정해도 대체로 문제가 없다고 합니다.

  이 명령어를 적용하는 방법으로는 /etc/rc.local 파일에 직접 'ifconfig eth0 txqueuelen 10000'이라는 줄을 추가한다던가 데비안의 경우 /etc/network/interfaces 파일에서 대상 인터페이스 설정 밑에 'up ifconfig $IFACE txqueuelen 10000'라는 줄을 추가하는 방법이 있습니다.


/etc/sysctl.conf
  이 파일은 리눅스와 다른 *nix 기반의 시스템에서 네트워크와 파일에 대한 디폴트 설정을 담당합니다. 아래는 트윅에 도움이 되는 설정과 각 설정에 대한 설명입니다.
net.ipv4.tcp_rfc1337=1
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_workaround_signed_windows=1
net.ipv4.tcp_sack=1
net.ipv4.tcp_fack=1
net.ipv4.tcp_low_latency=1
net.ipv4.ip_no_pmtu_disc=0
net.ipv4.tcp_mtu_probing=1
net.ipv4.tcp_frto=2
net.ipv4.tcp_frto_response=2
net.ipv4.tcp_congestion_control=illinois
  1. RFC 1337(TIME-WAIT Assassination Hazards in TCP)로 발표된 취약점 방지 옵션으로 클라이언트로부터 RST를 받아서 TIME_WAIT 상태로 갈 경우 바로 접속을 종료하고 소켓을 닫는다.
  2. TCP window scaling으로 들어오는 패킷으로 인해 네트워크 어댑터가 포화상태가 되는 것을 방지한다.
  3. TCP SACK와 FACK로 대량의 데이터 손실 없이 수신을 받는다.
  4. 대역폭보다 패킷이 더 중요하다면 latency를 1로 설정하고 대역폭이 더 중요하다면 0으로 설정한다. 원격 데스크탑이나 VOIP의 경우 전송량이 대단하지 않기 때문에 패킷을 중시하는 편이 더 좋다.
  5. IPv6는 라우터 레벨에서 패킷이 조각화되는 것을 피하기 위해 PMTU를 기본적으로 사용하는데 IPv4에서도 이 옵션을 사용할 수 있다. PMTU는 링크 사이에 사용할 최고의 패킷 사이즈를 라우터에게 알리는 메커니즘이지만 실무상 일반적으로 ICMP 포트를 막아 ping을 방지하는 경우가 많고 그런 경우 이 메커니즘을 사용할 수 없습니다. 리눅스는 일단 이 옵션을 사용하려고 시도합니다. 이 옵션에 문제가 있다면 라우터에 문제가 있는 것이며 1로 바꿔서 사용하지 않을 수 있습니다. "MTU probing"도 이 옵션의 일부로서 아까 옵션과 반대로 1이 사용하는 것이고 0이 사용하지 않는 겁니다.
  6. FRTO는 신규 리눅스 커널에 등장한 메커니즘으로써 무선 호스트에 대한 최적화를 담당합니다. 무선 호스트가 있다면 사용하고 없다면 설정을 지우거나 0으로 설정합니다.
  7. TCP Congestion Controls
      윈도우 비스타 이상의 버전부터는 혼잡 제어(Congestion Control)에 표준 TCP Reno 대신 Compound TCP를 사용합니다. 리눅스의 경우 커널 2.6.19을 기준으로 장거리 링크에 좋은 성능을 발휘하는 CUBIC을 디폴트로 사용하고 있습니다. 이 글의 원저자는 TCP Westwood +와 TCP Illinois를 주로 사용한다고 하는데 아래는 혼잡 제어 알고리즘 중 TCP Illinois를 사용하는 방법을 제시하고 있습니다.
  1. 자신의 커널이 알맞은 모듈을 가지고 있는지 확인한다. TCP Illinois는 2008년 이후로 표준 우분투 커널에 'tcp_illinois'라는 이름으로 컴파일되어 탑재되고 있다. 'modprobe -l | grep 모듈명'으로 모듈이 존재하는지 확인할 수 있다.
  2. 해당 커널 모듈을 /etc/modules 파일에 추가한다. 지금의 경우 'tcp_illinois'라는 줄을 추가하면 된다. 이 파일에 추가한 모듈은 다음 부팅 때 적용되며 다시 부팅을 하지 않고 지금 바로(1회성) 모듈을 올리려면 'sudo modprobe tcp_illinois' 명령어를 사용한다. 모듈이 올라왔는지의 여부는 'lsmod | grep tcp_illinois' 명령어로 확인할 수 있다.
  3. /etc/sysctl.conf 파일에 'net.ipv4.tcp_congestion_control=illinois'라는 줄(이미 위의 내용의 마지막 줄에서 등장)을 추가하여 해당 모듈에 대한 파라미터를 설정한다. 이 설정은 다음 부팅 때 적용되며 지금 바로 적용하려면 'sudo sysctl -p' 명령어를 사용한다.
2010/12/14 09:56 2010/12/14 09:56