뭘 이런걸..

Posted
Filed under Tech/안녕리눅스
Linux 2.4 부터 sysctl 에서 관리를 할 수 있었던 tcp_timewait kernel parameter 가 제거가 되었습니다. 즉, TIME_WAIT 이 kernel source 내의 tcp.h 에서

#define TCP_TIMEWAIT_LEN (60*HZ) /* how long to wait to destroy TIME-WAIT * state, about 60 seconds */


와 같이 static 하게 지정이 되도록 변경이 되었습니다. TIME_WAIT 관련하여 검색을 해 보면.. 거의 대부분 관련이 없는 tcp_fin_timeout 값을 줄이라는 식의 글들이 많고, 가끔.. TCP_TIMEWAIT_LEN 의 값을 수정하라는 문서들이 있더군요. (물론 한글 문서로는 이런 글은 못찾았습니다. ^^)

하지만, TCP_TIMEWAIT_LEN 의 값이 다른 값을 생성하는데 꽤 많이 쓰이는 관계로 이 값을 수정하는 것은 조금 애매해서 TIME_WAIT 에만 적용될 수 있도록 패치를 해 보았습니다. 또한, TIME_WAIT 을 static 하게 수정해서 빌드를 하면 그때 그때 커널이 달라져야 할 수 있어서 아예 sysctl 에서 관리할 수 있도록 수정했습니다. 다음 패치 파일을 받아서 적용하여 빌드 하시면 sysctl -a 에서 tcp_timewait 항목을 찾으실 수 있습니다.

tcp_timewait 을 0 으로 지정을 하면 기본값인 TCP_TIMEWAIT_LEN (60초)를 사용하게 되게 되어 있으므로, 최소값은 1초가 됩니다.


oops-2.4.34-sysctl-timewait.patch.gz

kernel 2.4.34 patch (AnNyung)





2.6.21.1 의 Vanilla kernel patch 는 실제로 빌드를 해 보지 않았습니다. 그리고 tcp_minisock.c 가 많이 변경이 되어 제대로 빌드가 될지 그리고 제대로 작동이 되는지 테스트를 해 보지 않은 것임을 알려 드립니다. 이 패치를 사용함에 있어 문제 발생시에 저는 책임을 지지 않습니다!
2007/05/16 18:46 2007/05/16 18:46