09. [BONUS - 10p] tcng (traffic control next generation)

Utilitarul tc oferă un control foarte bun asupra parametrilor QoS. Dar, din păcate, sintaxa este foarte complexă, greu de reținut și puțin lizibilă. tcng este un utilitar cu o sintaxă mult mai expresivă, asemănătoare limbajului C. Folosind aceasta sintaxă, el poate genera comenzile tc echivalente.

Pe stația gateway descărcați și instalați utilitarul tcng:

root@gateway:~# wget http://archive.debian.org/debian/pool/main/t/tcng/tcng_10b-3_amd64.deb
root@gateway:~# dpkg -i tcng_10b-3_amd64.deb

Un fișier tcng are următoarea sintaxă simplificată:

dev INTERFATA
{
     QDISC ()
     {
          class ( ACTIUNE ) FILTRU ;
          class ( ACTIUNE ) FILTRU ;
          ...
          class ( ACTIUNE ) FILTRU ;
      }
}

Ne propunem să creăm un fișier tcng, echivalent configurațiilor HTB de la 05. [10p] Traffic shaping classful:

dev eth0
{
	htb ()
	{
		class ( rate 1Mbps ) if udp_dport == 8000 ; 
		class ( rate 40Mbps ) if udp_dport == 6000 ;
		class ( rate 5Mbps ) if tcp_dport == 21 ;
		class ( rate 3Mbps ) if tcp_dport == 80 ; 
	}
}

Rulați tcng pentru a obține comenzile echivalente tc:

tcng eth0_htb.tc

Inspectați comenzile tc generate și observați asemănările cu comenzile introduse manual.