[net.mail] Line costs used in pathalias

hagouel@ittvax.UUCP (Jack Hagouel) (01/18/85)

Given the interest in the meaning of the DAILY, HOURLY, ... designations
I thought that this excerpt of a message I sent to Mark Horton may be
of interest to this newsgroup. I believe that a more rigorous
approach to defining the line costs used by pathalias is possible
if the optimization objectives are more clearly defined. The
syntax of expressing these costs is not addressed here, although
it is also important.

----- start of excerpt -----

The cost values allocated to connections appear to be arbitrary.
If there was a formula that was used to compute them I would
be interested to learn it. The rest of this letter deals with
thoughts and sketchy suggestions on computing the cost. I think
that a good definition of cost will be appreciated by both
the users and the providers of Usenet service.

Current cost trend appears to be that frequent connections have lower
cost (but not proportionally so). Telephone charges may also
be relevant. I couldn't guess any more factors.

The issue to be resolved is how to achieve least cost routing
(using the pathalias program). The problem arises in that the
user perceives a different cost (delay) from the cost of the
service provider (mostly dollars and fairness). To top it
all, the "network manager" is concerned with efficient 
utilization of the resources, i.e. throughput.

With the advent of domains the problem becomes more manageable.
At least for some domains (like ATT) the domain manager and the
service providers are the same; possibly even many of the users 
(internal traffic).

Since the whole concept of Usenet is based on voluntary,
non-abused, contribution of resources for the collective good,
fairness appears to be the driving force. For Usenet to become
useable low delay could work wonders. Throughput may have to
be left in the background.

Currently pathalias is not very dynamic (path computations occur 
infrequently). In the future that may change, I hope. It is
desirable to preserve the same cost definition in both cases.

Focus on fairness: I think that the best way to define it is that
a site will not be asked to handle more mail than it commited
to when it joined the network. 

Question: do sites declare their capacity constraints? If not
maybe some semi-formal definition is necessary (beyond the
frequency of calls). I've often seen new sites mentioning
a vague "as long as we do not get a lot of transient traffic".

Based on these capacity constraints pathalias should be able
to do some load splitting, i.e. the optimal path is not always
used since that would overutilize the "good" connections and
ignore the "bad" ones.

The following algorithm could be used: each node is initially
allocated bandwidth through other nodes in the network. The
amount allocated would depend on the topological distance of
the two nodes and the total bandwidth available. Each node
may allocate its own bandwidth. The allocation would
last for a predetermined amount of time (say a month).

Pathalias will execute based on these values. The source of
traffic will monitor its bandwidth consumption. When it
exceeds a limit on a node then it generates a new path
based on the remaining allocation. Intermediate nodes may
monitor for adherence to their limits and inhibit excess traffic.

Allocations that are underutilized may be either redistributed
or negotiated periodically. Bids for additional bandwidth
may be automatically processed at allocation time.

This becomes an organic algorithm where node bandwidth becomes
a commodity and it is fairly allocated to demand. The penalty
is increased bookeeping and control traffic. The advantage is
that nodes can budget their Usenet contribution in some
predictable and consistent fashion.

Jack Hagouel
...!ittvax!hagouel
(203) 929-7341 x244
  

spaf@gatech.UUCP (Gene Spafford) (01/20/85)

Just as a note of general interest, the mathematical model for a
network where some of the edges, and some of the combinations of edges,
have maximum flow constraints as well as edge weights (preferences,
speeds, etc), is known as a matroid.  Matroid analysis can be done by
program, although optimizations are often much more complex than a
similar (directed) network.  I can provide a text reference to anyone
interested, but I have no interest in implementing any such in a
pathalias-style program.  I've done something similar before, and
I don't want to do it again in the very near future (at least until
after I finish my thesis!).
-- 
Gene "7 months and counting" Spafford
The Clouds Project, School of ICS, Georgia Tech, Atlanta GA 30332
CSNet:	Spaf @ GATech		ARPA:	Spaf%GATech.CSNet @ CSNet-Relay.ARPA
uucp:	...!{akgua,allegra,hplabs,ihnp4,linus,seismo,ulysses}!gatech!spaf

honey@down.FUN (code 101) (01/21/85)

I follow your thinking, Jack, but I see a serious problem:  allocating
bandwidth.  Even if I know ihnp4's capacity, how much of it am I
entitled to take?  I can't ask ihnp4 to assign me some fraction, since
that would require n-squared messages.  Is there a centralized scheme
that is both fair and effective?  (Read max-flow for effective.)
Doesn't this require a lot of data?

Incidentally, it is my understanding that the authors of pathalias had
in mind an objective function that measured delay.  The costs (and more
importantly, their mnemonics) are an attempt, if ad hoc, to effect that
goal.

	Peter

hagouel@ittvax.UUCP (Jack Hagouel) (01/21/85)

From Peter (...!down!honey):
>         ... Even if I know ihnp4's capacity, how much of it am I
> entitled to take?  I can't ask ihnp4 to assign me some fraction, since
> that would require n-squared messages...

It is true that the burden of every node in the network allocating
capacity for every other node in the network is too large. Not
to mention the messages needed to implement such a scheme. There
are ways though to realistically implement the fairness algorithm
I suggested with considerably less cost.

The total capacity in ihnp4 is broken down into assigned slots 
and a common pool. Nodes that do not consume more than a (predefined)
small portion of ihnp4's capacity are all allocated capacity from
the common pool with minimal tracking (to be described in a later
paragraph). Nodes with higher consumption are allocated a slot with
predefined capacity which diminishes with usage. 

When the capacity
allocation expires ihnp4 nacks subsequent messages causing the
remote node to recalculate the path blocking ihnp4 from becoming
an intermediate node. Based on the allocation period, each node
recalculates all its paths (say the 1st of each month) with no
blocking restrictions. Based on usage ihnp4 may reduce the allocation
of any node. Allocations may be increased by demand from the remote
node: it may decide that the delay characteristic of the second
best path is considerably higher than going through ihnp4 (say
there is a network wide-rule that requests will only be generated
if the delay more than doubles). If the nack scheme is used then
the information of increased/decreased allocation need not be
transmitted at all.

Finally, let's touch on the subject of how ihnp4 manages its
own resources in terms of keeping track of allocations: ihnp4
defines the threshold that differentiates between nodes in the
pool and nodes in assigned slots. If that threshold is high enough
then there are no assigned slots: ihnp4 would not keep track
of any node and it would never generate nacks.

Depending on its storage capacity ihnp4 defines the threshold
so that it can handle the resulting data base (some trial and
error may be required). The threshold may change at any time
without affecting any other node (other than impose a restriction).

It is easy to see how a node may lose a slot (through an allocation
bellow the threshold). To gain a slot the node must use more than
the current threshold. But this information is not available since
its usage is lumped into the common pool.

A possible answer to the above problem is to keep short term
statistics (i.e. daily, weekly or otherwise) and identify new
candidates for slots. If the allocation is monthly, then a 
possible candidate would be a node that consumed a quarter of
the allocation per week. These are offline calculations which
can happen at system time as opposed to the slot calculations
which need to happen online. Of course some cap for capacity
usage per day should exist online (i.e. if a node exceeded
the threshold in one day then it is reasonable to send a nack).

So, to conclude, there are ways for allowing a flexible
implementation of the fairness algorithm. Each node may decide
to use it or not use it and still coexist with nodes that use
it. Pathalias would need to change slightly to implement
blocking, and it may have to run a little bit more often.
Furthermore, participating nodes may define their own
granularity of participation. 

Jack Hagouel
..!ittvax!hagouel