리눅스 NAT & QOS 관련 질문입니다 (tc 사용 관련)

chocoeng의 이미지

안녕하세요.
현재 제가 리눅스로 공유기를 구현 중 입니다.
공유기 기능 중 QOS 서비스를 구현 중에 막히는 부분이 있어서 고수님들께 질문 드립니다.

네트웍 구조는..

internet ---- wan(eth0) - local - lan(eth1) ---- pc1, pc2..

이런 상태 입니다.

tc를 사용해서 QOS를 구현 중이 였는데요..
qdisc는 htb를 사용했습니다.

예를 들어서 eth0으로 나가는 패킷만 딜레이 시키려고 할 때

tc qdisc add dev eth0 root handle 1: htb default 100
tc class add dev eth0 parent 1: classid 1:1 htb rate 200kbit ceil 200kbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 60kbit ceil 60kbit
tc class add dev eth0 parent 1:1 classid 1:100 htb rate 140kbit ceil 140kbit

이렇게 셋팅을 하고..
공유기 로컬에서 iperf를 사용해서(공유기가 클라이언트) 다른 머신과의 속도측정을 해 보았는데
딜레이 되는 것을 확인 하였습니다. (디폴트가 적용되어 140kbit 정도..)

그런데 문제는 lan으로 들어와서 wan으로 나가는 경우로 테스트를 해보았는데
딜레이가 전혀 되지 않습니다.

= lan에 물린 pc(192.168.1.2)에서 iperf 테스트 결과 ============================
$ iperf -c xxx.xxx.xxx.xxx
------------------------------------------------------------
Client connecting to xxx.xxx.xxx.xxx, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.2 port 37024 connected with xxx.xxx.xxx.xxx port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.1 sec 6.66 MBytes 5.52 Mbits/sec
==============================================================================

= 공유기에서 class show (속도측정 중) ===========================================
# tc -s class show dev eth0
class htb 1:100 parent 1:1 prio 0 rate 140000bit ceil 140000bit burst 1599b cburst 1599b
Sent 224 bytes 4 pkt (dropped 0, overlimits 0 requeues 0)
rate 56bit 0pps backlog 0b 0p requeues 0
lended: 4 borrowed: 0 giants: 0
tokens: 1385719 ctokens: 1385719

class htb 1:10 parent 1:1 prio 0 rate 60000bit ceil 60000bit burst 1599b cburst 1599b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 3333328 ctokens: 3333328

class htb 1:1 root rate 200000bit ceil 200000bit burst 1600b cburst 1600b
Sent 224 bytes 4 pkt (dropped 0, overlimits 0 requeues 0)
rate 56bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 970000 ctokens: 970000
==============================================================================

class show 결과로 봐서는 패킷을 인지 하는 것 같기는 한데..
왜 결과는 그냥 슉~슉~ 지나가는 것으로 나오는지 모르겠습니다.

아 참고로 mark를 해야 되나 해서
mangle 테이블의 모른 체인에서 (prerouting, forward, input, output, postrouting) make를 하고 해보았지만
마찬가지로 로컬에서는 딜레이가 잘 되고 lan에서 들어오는 것은 슉~슉~ 입니다.
또한 마찬가지로 class show에서는 mark와 관련 된 class에서 위의 결과 처럼 인지를 합니다.

NAT 환경에서는 htb를 사용하면 안되는 것인 지.. (혹은 tc말고 다른 것을 사용해야 하는지..)
제가 잘못 사용 하고 있는 것인 지.. (burst 값 등..)

NAT 환경에서 QOS를 구현 하신 분 있으시면 조언 부탁드립니다.
몇일 째 해결이 안되서 죽을 거 같아요~ ㅠㅠ

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.