I have the following question.
Is there a way to shape fairly trought one big channel two others, what I have
in mind.
users <-------- [eth2]<======[eth0]<------ Internet (1Mbit/s)
|====[eth1]<------ Peering (1Mbit/s)
Now the problem, as u see there is two internet downstrams with compound speed
of 2Mbit/s, the poblem is that on the eth2-egrees there should be only one
class(channel), sum of the others. Say for example all users have 100kb/s (so
that we can calculate easly). Now I want to make a compound channels so that
when internet-channels are free users can get unused speed (ceil), (on the other
hand rate calculation get very complicated if imposible 'cause it may exceed a
wrapper-channel, so that some mechanism has to be thought to do this). Here is
the pseudo code :
dev eth2 {
htb(rate 2Mbit/s) {
class(rate 100kbps, ceil 150kbps);
class(rate 100kbps, ceil 150kbps);
class(rate 100kbps, ceil 150kbps);
.....
class(rate 100kbps, ceil 150kbps);
}
}
oops to metion that one of channels is national peering and the other is
internet.
So as u see the compound speed can easly exceed one of the channels w/o ever
touching the second channel.. I mean that if for example all users start to
dload only from the peering channel, they will exceed easly the 1Mbit/s
capacity, 'cause wrapper channel is 2MBit/s
On the other hand if I don't put this 2mbit-wrapper I can't use
ceil-functionality.
Also I can't create 2 wrapper-channels 1Mbit/s each, 'cause users has to have
100kb/s compound speed not 100kb/s peering and 100kb/s internet, neither
50kb/s-peering and 50kb/s-internet..
The 100kb/s is divided depending on their current usage, so it is not
predefined..
So the questions are - how to have total speed X divided by all channels
dynamicly and in the same time be able to use ceil-functionality.
Thanx alot in advance for your ideas
raptor