3.22.2010

Linux Traffic Control (1)

Topologi jaringan dan desain htb
topologi jaringan dan desain htb
Kriteria dalam pembuatan traffic control ini
  1. Traffic control hanya untuk trafik eggress dari device eth0 (lan)
  2. Trafik dari local area network (lan) ke router dan sebaliknya tidak melalui traffic control.
  3. Trafik dari lan ke internet atau upstream tidak melalui traffic control.
  4. Trafik dari internet ke lan atau downstream akan melalui traffic control, kecuali trafik dari port 80 (www) yang mempunyai tanda TOS 0×30 atau DSCP 12 (cache hit).
Catatan: trafik ke internet port 80 akan melalui server proxy remote secara transparent.

Source Code
01#!/bin/sh
02 
03# File: tc-1.sh
04# Deskripsi: Trafik control simple dengan htb
05# Kriteria:
06# 1. Trafik dari local area network (lan) ke router dan sebaliknya tidak melalui traffic control.
07# 2. Trafik dari lan ke internet atau upstream tidak melalui traffic control.
08# 3. Trafik dari internet ke lan atau downstream akan melalui traffic control, kecuali trafik
09#     dari port 80 (www) yang mempunyai tanda TOS 0×30 atau DSCP 12 (cache hit).
10#
11# Created by Arief Yudhawarman (2009)
12# Email: awarmanff at yahoo.com
13#
14 
15IPTABLES="/usr/sbin/iptables"
16TC="/sbin/tc"
17 
18# parameter
19LAN="eth0"
20WAN="eth1"
21 
22# Bandwidth
23# (kbps)
24RATE=384
25CEIL=384
26 
27#
28# IPTABLES
29# PACKET MANGLE
30#
31 
32# PREROUTING
33#
34# Flush table
35$IPTABLES -F -t mangle
36#
37# Mangle packet cache hit
38$IPTABLES -A PREROUTING -t mangle -i $WAN -p tcp -m dscp --dscp 12 -j MARK --set-mark 0x212
39$IPTABLES -A PREROUTING -t mangle -i $WAN -p tcp -m dscp --dscp 12 -j RETURN
40#
41# Mangle all trafic
42$IPTABLES -A PREROUTING -t mangle -i $WAN -j MARK --set-mark 6
43 
44#
45# TRAFFIC CONTROL
46#
47 
48# Create qdisc dev LAN
49$TC qdisc del dev $LAN root
50$TC qdisc add dev $LAN root handle 1:0 htb
51#
52# create class
53$TC class add dev $LAN parent 1:0 classid 1:2 htb rate ${RATE}kbit ceil ${CEIL}kbit quantum 1500 prio 8
54#
55# Attach qdisc
56$TC qdisc add dev $LAN parent 1:2 handle 2: sfq perturb 10
57#
58# Filter traffic with packet mark 6
59$TC filter add dev eth0 protocol ip parent 1:0 prio 1 handle 6 fw flowid 1:2
Penjelasan:
  • Baris 38: menandai trafik cache hit (dscp 12) yang masuk ke device wan dengan packet mark 212.
  • Baris 39: -j RETURN agar trafik cache hit tidak akan masuk ke rule lain dibawahnya.
  • Baris 42: menandai semua trafik yang masuk ke device wan dengan packet mark 6.
  • Baris 59: filter semua trafik dengan packet mark 6 ke class handler 1:2
Untuk analisa paket mangle dan traffic control gunakan perintah:
  • iptables -L PREROUTING -t mangle -nv
  • Chain PREROUTING (policy ACCEPT 2580K packets, 606M bytes)
     pkts bytes target     prot opt in     out     source               destination
       20 22316 MARK       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           DSCP match 0x0c MARK set 0x212
       20 22316 RETURN     tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           DSCP match 0x0c
    20391 1247K MARK       all  --  eth1   *       0.0.0.0/0            0.0.0.0/0           MARK set 0x6
  • tc -s -d qdisc show dev eth0
  • qdisc htb 1: r2q 10 default 0 direct_packets_stat 0 ver 3.17
     Sent 7500 bytes 52 pkts (dropped 0, overlimits 0)
    qdisc sfq 2: parent 1:2 limit 128p quantum 1514b flows 128/1024 perturb 10sec
     Sent 7500 bytes 52 pkts (dropped 0, overlimits 0)
  • tc -s -d class show dev eth0
  • class htb 1:2 root leaf 2: prio 7 quantum 1500 rate 384000bit ceil 384000bit burst 2079b/8 mpu 0b overhead 0b cburst 2079b/8 mpu 0b overhead 0b level 0
     Sent 168952 bytes 1120 pkts (dropped 0, overlimits 0)
     rate 4104bit 3pps
     lended: 1120 borrowed: 0 giants: 0
     tokens: 16933 ctokens: 16933
  • tc -s -d filter show dev eth0
  • filter parent 1: protocol ip pref 1 fw
    filter parent 1: protocol ip pref 1 fw handle 0x6 classid 1:2

Referensi
  1. Linux Advanced Routing & Traffic Control HOWTO
  2. Manual iptables
  3. Referensi berbahasa indonesia mengenai traffic control di Penjelasan Traffic Shaping
source : http://awarmanf.wordpress.com/2009/12/29/linuxtc1/

Tidak ada komentar: