Adaptive QoS Optimization - XIYO/asuswrt-merlin.ng-kr GitHub Wiki

์†Œ๊ฐœ

QoS๋Š” ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ์„ ์ตœ์ ํ™”ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํŠธ๋ž˜ํ”ฝ์„ ์šฐ์„  ์ˆœ์œ„๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ›Œ๋ฅญํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ๋•Œ Netflix๊ฐ€ ๋ฒ„๋ฒ…์ด๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‚˜์š”? ๋ฃธ๋ฉ”์ดํŠธ๊ฐ€ YouTube๋ฅผ ์‹œ์ฒญํ•  ๋•Œ ๊ฒŒ์ž„ ํ•‘์ด ๋–จ์–ด์ง€๋‚˜์š”? QoS๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

QoS์—๋Š” ์„ธ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค - ์žฅ์น˜ ์šฐ์„  ์ˆœ์œ„, ์ „ํ†ต์  ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ์ ์‘ํ˜•. ์ด ํŽ˜์ด์ง€๋Š” ์ ์‘ํ˜• QoS์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ตฌ์„ฑ

Asus์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ ์ ์‘ํ˜• QoS์—๋Š” ์ œํ•œ์ด ์žˆ์–ด, FreshJR์ด ์ˆ˜์ • ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. FreshJRQoS์˜ ์„ค์น˜์™€ ๊ตฌ์„ฑ์„ ์œ„ํ•ด์„œ๋Š” AMTM์„ ์‚ฌ์šฉํ•˜๊ณ  FreshJRQoS ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค.

QoS ๊ตฌ์„ฑ์˜ ํ•œ ๊ฐ€์ง€ ์ธก๋ฉด์€ ์–ด๋–ค ๋Œ€๊ธฐ์—ด ๊ทœ์น™(discipline)์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€์ž…๋‹ˆ๋‹ค. ๋Œ€๊ธฐ์—ด์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์›ํ•œ๋‹ค๋ฉด, QoS Queue Disciplines๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค:

  • FreshJRQoS ์Šคํฌ๋ฆฝํŠธ
  • ์žฅ์น˜ ์šฐ์„  ์ˆœ์œ„ ์—†์Œ
  • ์ ์‘ํ˜• QoS
  • QoS๊ฐ€ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ์˜ ๋Œ€์—ญํญ ํ…Œ์ŠคํŠธ๋กœ ์–ป์€ ์‹ค์ œ ์†๋„์˜ 85-95%๋กœ ์ˆ˜๋™ ๋Œ€์—ญํญ ์„ค์ •
  • fq_codel ๋Œ€๊ธฐ์—ด ๊ทœ์น™

์ ์‘ํ˜• QoS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

๋งค์šฐ ๋น ๋ฅธ ์—ฐ๊ฒฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ๊ธฐ๊ฐ€๋น„ํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด, ๊ทธ ์†๋„์—์„œ ์ ์‘ํ˜• QoS๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํžˆ ๊ฐ•๋ ฅํ•œ ๋ผ์šฐํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์–ด๋ ค์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ์˜ ํŠธ๋ž˜ํ”ฝ ํ˜ผ์žก์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ํŠน์ • ์žฅ์น˜์— ๊ฐ„๋‹จํ•œ ๋Œ€์—ญํญ ํ• ๋‹น์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ ์‘ํ˜• QoS์˜ ์•Œ๋ ค์ง„ ๋ฌธ์ œ์ 

์ ์‘ํ˜• QoS๋Š” DHCP ๊ฐฑ์‹ ์„ ๋ฐฉํ•ดํ•จ

์ฃผ์˜: Release 386.1์—์„œ๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜์ •์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ •๋ณด๋Š” ๋” ์ด์ƒ ์ ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

WAN ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๊ฑฐ๋‚˜ DHCP ๊ฐฑ์‹ ์— ์‹คํŒจํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  ์ ์‘ํ˜• QoS๋ฅผ ํ™œ์„ฑํ™”ํ–ˆ๋‹ค๋ฉด, ์ด ๋ฌธ์ œ๋กœ ์ธํ•ด ๊ณ ํ†ต๋ฐ›๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Asus ์ ์‘ํ˜• QoS๋Š” ๋ฆฌ์Šค๊ฐ€ ๋งŒ๋ฃŒ๋  ๋•Œ DHCP ๊ฐฑ์‹ ์„ ์ฐจ๋‹จํ•˜๋Š” iptables ๊ทœ์น™์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ ์ƒˆ DHCP ์š”์ฒญ์€ ํ†ต๊ณผํ•˜์ง€๋งŒ DHCP ๊ฐฑ์‹ ์€ ํ†ต๊ณผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฉฐ์น ์ด๋‚˜ ์ฃผ์ผ ๋™์•ˆ ๋ฆฌ์Šค๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ด€๋Œ€ํ•œ ISP์— ์žˆ๋‹ค๋ฉด ๋ˆˆ์น˜์ฑ„์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. AT&T์™€ ๊ฐ™์ด DHCP ๋ฆฌ์Šค๋ฅผ 10๋ถ„์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๋œ ๊ด€๋Œ€ํ•œ ISP์— ์žˆ๋‹ค๋ฉด, DHCP ๊ฐฑ์‹ ์ด ์‹คํŒจํ•˜๊ณ  WAN ์—ฐ๊ฒฐ์ด ๋งค 10๋ถ„๋งˆ๋‹ค ๋Š์–ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์•Œ๋ ค์ง„ ๊ตฌ์„ฑ์€ AT&T FTTN / Uverse์™€ DMZ+ ๋ชจ๋“œ์—์„œ Pace 5268ac ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Asus RT-AC68U ๋ผ์šฐํ„ฐ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ๋‹ค๋ฉด, ์•„๋ž˜ ๋ชฉ๋ก์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ๊ตฌ์„ฑ์„ ํฌํ•จ์‹œํ‚ค์‹ญ์‹œ์˜ค.

์ง„๋‹จ

์‹œ์Šคํ…œ ๋กœ๊ทธ์—์„œ WAN IP ์ฃผ์†Œ์— ๋Œ€ํ•œ DHCP ๊ฐฑ์‹ ์— ๊ด€ํ•œ DHCP ์•Œ๋ฆผ์„ ํ™•์ธํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด,

dhcp_client: bound 108.228.12.xxx/255.255.252.0 via 108.228.12.1 for 600 seconds.

๋˜๋Š”

lldpd[309]: removal request for address of 108.228.12.xxx%4, but no knowledge of it

DHCP๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋” ์ž˜ ํ™•์ธํ•˜๋ ค๋ฉด JFFS ์Šคํฌ๋ฆฝํŒ…์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ ํ›„ ๋ผ์šฐํ„ฐ์— SSH๋กœ ์ ‘์†ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์„ธ์š”.

touch /jffs/scripts/wan-event

touch /jffs/scripts/dhcpc-event

chmod 755 /jffs/scripts/wan-event

chmod 755 /jffs/scripts/dhcpc-event

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ ์‘ํ˜• QoS๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์‹œ์Šคํ…œ ๋กœ๊ทธ์—์„œ DHCP๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ๊ฐฑ์‹ ๋˜๋Š” ์ •๋ณด๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, custom_script: Running /jffs/scripts/dhcpc-event (args: renew)

๊ทธ๋Ÿฐ ๋‹ค์Œ QoS๋ฅผ ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•˜๊ณ  WAN์ด ๋Š์–ด์ง€๊ณ  DHCP ๋ฆฌ์Šค๊ฐ€ ํš๋“๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด,

custom_script: Running /jffs/scripts/dhcpc-event (args: deconfig)

custom_script: Running /jffs/scripts/wan-event (args: 0 disconnected)

custom_script: Running /jffs/scripts/wan-event (args: 0 stopped)

custom_script: Running /jffs/scripts/dhcpc-event (args: bound)

custom_script: Running /jffs/scripts/wan-event (args: 0 connected)

๋ฌธ์ œ๋Š” ๊ธฐ๋ณธ ASUS ์ ์‘ํ˜• QoS์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๊ทœ์น™์ด ๊ฒŒ์ดํŠธ์›จ์ด๋กœ์˜ DHCP ํŠธ๋ž˜ํ”ฝ์„ ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Iptables ๋ณ€๊ฒฝ

์ด ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ๋ผ์šฐํ„ฐ์— SSH๋กœ ์ ‘์†ํ•˜์—ฌ ์ด ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ iptables ๊ทœ์น™์„ ๋ณ€๊ฒฝํ•˜์—ฌ ๊ฒŒ์ดํŠธ์›จ์ด๋กœ์˜ DHCP๋ฅผ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "YOUR_GATEWAY_IP_ADDRESS"๋ฅผ ๊ฒŒ์ดํŠธ์›จ์ด์˜ IP ์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ , ์˜ˆ๋ฅผ ๋“ค์–ด Pace 5268ac ๊ฒŒ์ดํŠธ์›จ์ด์˜ ๊ธฐ๋ณธ IP๋Š” 192.168.1.254์ด๋ฉฐ, "WAN_IF" (๋ณดํ†ต eth0, ์ƒˆ๋กœ์šด ๋ชจ๋ธ์—์„œ๋Š” eth4์ผ ์ˆ˜ ์žˆ์Œ)๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค:

iptables -t mangle -I PREROUTING 1 -i WAN_IF -s YOUR_GATEWAY_IP_ADDRESS/32 -p udp -m udp --sport 67 --dport 68 -j ACCEPT

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ ์‘ํ˜• QoS๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  DHCP ์š”์ฒญ์ด ํ†ต๊ณผ๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์ ์‘ํ˜• QoS๋ฅผ ๋„๊ณ  "service firewall_restart" ๋ช…๋ น์–ด๋กœ ๋ฐฉํ™”๋ฒฝ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์—ฌ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๋ฉด, /jffs/scripts/firewall-start ์Šคํฌ๋ฆฝํŠธ์— ๋‹ค์Œ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ•ด๊ฒฐ์ฑ…์„ ์˜๊ตฌ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์œ„์˜ touch์™€ chmod ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ "firewall-start"๋ฅผ ํŒŒ์ผ ์ด๋ฆ„์œผ๋กœ ๋Œ€์ฒดํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

if [ "$(nvram get qos_enable)" = "1" ] && [ "$(nvram get qos_type)" = "1" ]; then

iptables -t mangle -I PREROUTING 1 -i WAN_IF -s YOUR_GATEWAY_IP_ADDRESS/32 -p udp -m udp --sport 67 --dport 68 -j ACCEPT

fi

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ผ์šฐํ„ฐ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  QoS์™€ DHCP๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•˜๋ฉด ์œ„์—์„œ ์ƒ์„ฑํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

rm /jffs/scripts/wan-event

rm /jffs/scripts/dhcpc-event

์•Œ๋ ค์ง„ ๋ฌธ์ œ ๊ตฌ์„ฑ
  • DMZ+ ๋ชจ๋“œ์—์„œ Pace 5268ac ๊ฒŒ์ดํŠธ์›จ์ด์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” AC68U