Hi Chris,
Did find and read docs in tcng/doc ?
We are using tcng external interface to translate something like this:
=================================================================/*
* diffserv.tc
*
* Written 2002 by Jacob Teplitsky
* Copyright 2002 Bivio Networks
*/
/*
* Classification:
* - static classification by DSCP
*
* Queuing:
* - traffic selected by static classification:
* EF:
* policed by SLB, and transmitted unshaped.
* AF:
* - nr_wfq
* - GRED for each AF level
* - DSMARK implementing marking (AF33 -> AF32 and AF43 -> AF42)
* - other traffic:
* - RED
*/
$ef_rate = 25 Mbps;
$af_rate = 100 Mbps;
dev "s0e0" {
egress {
/* Expedited Forwarding, RFC2598 */
$ef_pol = SLB(cir $ef_rate,cbs 100 kB);
class (<$ef>) if ip_dscp == 0b101110 && SLB_else_drop($ef_pol);
/* Assured Forwarding, RFC2597 */
class (<$af11>) if ip_dscp == 0b001010;
class (<$af12>) if ip_dscp == 0b001100;
class (<$af13>) if ip_dscp == 0b001110;
class (<$af21>) if ip_dscp == 0b010010;
class (<$af22>) if ip_dscp == 0b010100;
class (<$af23>) if ip_dscp == 0b010110;
class (<$af31>) if ip_dscp == 0b011010;
class (<$af32>) if ip_dscp == 0b011100;
class (<$af33>,set_dscp(0b011100))
if ip_dscp == 0b011110;
class (<$af41>) if ip_dscp == 0b100010;
class (<$af42>) if ip_dscp == 0b100100;
class (<$af43>,set_dscp(0b100100))
if ip_dscp == 0b100110;
/* Best Effort */
class (<$be>) if 1;
nr_cbr {
$ef = class (rate 2 Gbps, bounded,prio 1) {
fifo;
}
class (rate $af_rate,bounded,prio 1) {
nr_wfq {
nr_wfq_class(weight 2) {
nr_gred (min 6kB,max 18kB,limit 20kB) {
$af11 = class (probability 0.1);
$af12 = class (probability 0.2);
$af13 = class (probability 0.4,default);
}
}
nr_wfq_class(weight 1) {
nr_gred (min 8kB,max 24kB,limit 50kB) {
$af21 = class (probability 0.1);
$af22 = class (probability 0.2);
$af23 = class (probability 0.4,default);
}
}
nr_wfq_class(weight 3) {
nr_gred (min 8kB,max 24kB,limit 100kB) {
$af31 = class (probability 0.1);
$af32 = class (probability 0.2);
$af33 = class (probability 0.4,default);
}
}
nr_wfq_class(weight 1) {
nr_gred (min 8kB,max 24kB,limit 100kB) {
$af41 = class (probability 0.1);
$af42 = class (probability 0.2);
$af43 = class (probability 0.4,default);
}
}
}
}
$be = class (rate 100MBps,prio 2) { /* rate is ignored */
fifo;
}
}
}
}
========================================================================
to:
======================================================================# b300
bucket 1 = 3125000 0 102400 102400 0
block s0e0 egress
qdisc 3 = fifo
qdisc 5 = gred bandwidth 0 default 2
class 0 = avpkt 1 burst 0 limit 20480 max 18432 min 6144 probability 100000
class 1 = avpkt 1 burst 0 limit 20480 max 18432 min 6144 probability 200000
class 2 = avpkt 1 burst 0 limit 20480 max 18432 min 6144 probability 400000
qdisc 6 = gred bandwidth 0 default 2
class 0 = avpkt 1 burst 0 limit 51200 max 24576 min 8192 probability 100000
class 1 = avpkt 1 burst 0 limit 51200 max 24576 min 8192 probability 200000
class 2 = avpkt 1 burst 0 limit 51200 max 24576 min 8192 probability 400000
qdisc 7 = gred bandwidth 0 default 2
class 0 = avpkt 1 burst 0 limit 102400 max 24576 min 8192 probability 100000
class 1 = avpkt 1 burst 0 limit 102400 max 24576 min 8192 probability 200000
class 2 = avpkt 1 burst 0 limit 102400 max 24576 min 8192 probability 400000
qdisc 8 = gred bandwidth 0 default 2
class 0 = avpkt 1 burst 0 limit 102400 max 24576 min 8192 probability 100000
class 1 = avpkt 1 burst 0 limit 102400 max 24576 min 8192 probability 200000
class 2 = avpkt 1 burst 0 limit 102400 max 24576 min 8192 probability 400000
qdisc 4 = prio bands 4
class 1 = qdisc 5 pragma weight=2.000000
class 2 = qdisc 6 pragma weight=1.000000
class 3 = qdisc 7 pragma weight=3.000000
class 4 = qdisc 8 pragma weight=1.000000
qdisc 9 = fifo
qdisc 2 = cbq
class 0 = allot 1 avpkt 1 bandwidth 2147483647 maxburst 1 rate 2147483647
class 1 = allot 1 avpkt 1 bandwidth 2147483647 bounded 1 maxburst 1 parent 0
prio 1 qdisc 3 rate 250000000
class 2 = allot 1 avpkt 1 bandwidth 2147483647 bounded 1 maxburst 1 parent 0
prio 1 qdisc 4 rate 12500000
class 3 = allot 1 avpkt 1 bandwidth 2147483647 maxburst 1 parent 0 prio 2 qdisc
9 rate 100000000
qdisc 1 = dsmark indices 512
class 0 = qdisc 2
class 128 class 272 class 273 class 274 class 288 class 289 class 290 class 304
class 305 class 306 = mask 3 value 112
class 320 class 321 class 322 = mask 3 value 144
class 384 action 128 = class 1:384,2:3
action 66 = class 1:322,2:2,4:4,8:2
action 65 = class 1:321,2:2,4:4,8:1
action 64 = class 1:320,2:2,4:4,8:0
action 50 = class 1:306,2:2,4:3,7:2
action 49 = class 1:305,2:2,4:3,7:1
action 48 = class 1:304,2:2,4:3,7:0
action 34 = class 1:290,2:2,4:2,6:2
action 33 = class 1:289,2:2,4:2,6:1
action 32 = class 1:288,2:2,4:2,6:0
action 18 = class 1:274,2:2,4:1,5:2
action 17 = class 1:273,2:2,4:1,5:1
action 16 = class 1:272,2:2,4:1,5:0
action 0 = drop
action 1 = class 1:128,2:1
action 2 = count 1 action 1
action 3 = conform 1 action 2 action 0
match 0:152:6=0x2E action 3
match 0:152:6=0x0A action 16
match 0:152:6=0x0C action 17
match 0:152:6=0x0E action 18
match 0:152:6=0x12 action 32
match 0:152:6=0x14 action 33
match 0:152:6=0x16 action 34
match 0:152:6=0x1A action 48
match 0:152:6=0x1C action 49
match 0:152:6=0x1E action 50
match 0:152:6=0x22 action 64
match 0:152:6=0x24 action 65
match 0:152:6=0x26 action 66
match action 128
# END
====================================================================
Then we use set of routines:
tcng/lib/tcng/include/tccext.h to parse the tccext output
and download the config into our NP.
However, we are not using Intel IXP1200 NP
Thanks
- Jacob> From: "Chris Clark" <cclark@ece.gatech.edu>
> Subject: RE: [LARTC] tcng and network processor
>
> I see that Bivio uses a network processor with TCNG, but I can''t
find
> any more details... There are no whitepapers on the website.
>
> Werner (or anyone else at Bivio), are you able to provide any details?
>
>
> -----Original Message-----
>
> I am considering a project to translate tcc output (C code or external
> interface) to network processor code, so that the NP can do the actual
> traffic shaping. I have a platform using the Intel IXP1200 NP on a PCI
> card, which functions as a NIC for the host PC running Linux. This
> approach would reduce the processing load on the host.
>
> Has anyone attempted anything like this?
>
> I have never used tcng before, but I have been reading all of the
> available documentation. Is there anything that I should know about tcc
> or its output before I attempt this?
>
> Thanks,
> Chris
>
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/