리눅스 트래픽 제한걸기 (tc 명령어) 가 잘 되지 않습니다.

akayong의 이미지

안녕하세요, CentOS 5.3 (커널 2.6.27.29) 에서.

tc 라는 명령어를 이용하여 트래픽 제한을 걸고자 합니다.

현재 처음에 설정한 명령은.

tc qdisc add dev $DEV root handle 1: htb default 30
tc class add dev $DEV parent 1: classid 1:1 htb rate $DOWNLOAD
tc class add dev $DEV parent 1: classid 1:2 htb rate $UPLOAD
tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip dst $IP/32 flowid 1:1
tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip src $IP/32 flowid 1:2

(각각 $DEV, $DOWNLOAD, $UPLOAD, $IP 는 변수이며, 값이 설정 됨)

위와 같이 제한을 걸었더니, download는 제한이 잘 되나 , upload는 제한이 되지 않고 있습니다.

그래서, priority 값도 바꿔보고, src의 IP를 0.0.0.0/0 으로도 바꿔보고,
class를 add 할때 ceil 과 burst 값들을 지정 해 보기도 하고,
class 밑에 qdisc를 하나 더 만들어 (ex, 1:1 class 의 qdisc는 1:10) 거기에 handle을 걸고 해 보기도 하였으나.

업로드는 계속 제한이 걸리지 않고 있습니다.
구글 에서 이것 저것 찾아보고 해 보아도, 잘 되지 않습니다.

어떻게 하면 업로드도 제한을 걸 수 있을까요?

아시는분은 답변 부탁 드리겠습니다.

mithrandir의 이미지

일단 제한은 ceil을 사용하시는게 맞습니다. rate는 보장에 가깝습니다. ceil은 한계에 가깝고요.
만약 실제 트래픽의 합이 한계 트래펵을 넘어선다면, rate 비율로 나누게 됩니다만, 그게 아니라면 ceil로 각 트래픽을 제한하게 됩니다.

ceil 을 사용했을때 제대로 제한이 안된 이유는 잘 모르겠습니다.

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

pogusm의 이미지

tc를 이용한 속도제한은
서버 -> 클라이언트 방향의 속도제한은 잘되지만
그 반대인 클라이언트 -> 서버 로의 속도제한은 안되는걸로 알고 있습니다..

http://kldp.org/node/59454
( tc를 통해 제어하는 트래픽 셰이핑은 내보내는 트래픽에만 적용되기 때문입니다. )

가장 현실적인 방법은 IMQ라는걸 설치하는건데..
http://www.linuximq.net/faq.html 이 사이트를 보면, Kernel Recompile 이 필요한거 같습니다.(저는 무서워서 못해봤습니다 ㅋㅋ, 근데 http://kldp.org/node/59454 를 보면 분명 성공하신분이 있으니까 믿고 해볼만하다고 생각합니다)

mithrandir의 이미지

그렇네요. ingress 속도제한은 별개라는걸 깜빡했습니다.

저도 예전에 IMQ 인터페이스 만들어서 했었고, 그럭저럭 잘 돌아갔던걸로 기억합니다.

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

akayong의 이미지

두분 모두 친절한 답변 감사 드립니다.
제가 지금 외부에 나와 있는 관계로 바로 테스트를 해보지 못하고 있습니다.

주말이 지난 후 커널 재 컴파일을 해 보고
테스트를 해 보도록 하겠습니다.

감사합니다~

pogusm의 이미지

http://mrain7.egloos.com/2534849 를 참고하시면, 아래와 같은 내용이 있네요..

Device Drivers → Network device support → Intermediate Functional Block support

과거의 IMQ는 동작은 잘하지만 잘못된 방법으로 구현된 것이라고 해서 리눅스 2.6.19커널 이후 부터는 IFB가 지원되기 시작했다. IMQ와 IFB는 공히 ingress traffic에 대하여 traffic shaping 기능을 동일하게 사용할 수 있게 해주는 일종의 dummy device를 제공하는 모듈이다.

---------------------------------------------------------------

사용해 보지는 않았지만.. 2.6.19커널이후라 하면.. 최신기술같네요...

---------------------------------------------------------------
참고 : http://loveyuna.egloos.com/2119539 (약간의 문제도 있음)
참고 : http://www.linuxfoundation.org/collaborate/workgroups/networking/ifb

akayong의 이미지

갑자기 다른 일이 막 생겨버려서

테스트를 잠시 미루어여 될 것 같네요..
바쁜 일이 끝난 후 해 보아야 할것 같습니다.

좋은 말씀 감사 합니다!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.