A Modest COMMunity Proposal
Dale S. Johnson
Thu Sep 8 19:17:34 CEST 1994
Marten, Tony,
I have a very modest proposal for the COMMunity-handling code, which has
a slightly complicated agenda behind it. I believe this would be an
implementation detail which would have no implication for any current
document.
PROPOSAL: That the RIPE DB code that reads COMMUNITY files be written
in such a way that only the IP/LEN at the beginning of each line be read;
that anything after that initial IP/LEN (and trailing whitespace) would
be considered as a comment by existing code.
COMPLICATED RATIONALE: We have this "DBSELECTOR" thing that we need
to implement in order to be able to do net-based policy (particularly
for AS690). One possible architecture for the DBSELECTOR data format
would be to make it an extension to the COMMunity object. The current
definition of the COMMunity object and its usage would not change
(except for declaring anything past the first whitespace character to
be of no interest to the code). Any current COMMunity file would
fulfill its present funciton without changes.
Those who had need, though, could add text tokens to the COMMunity lines,
which could be "grep'd" by the DBSELECTOR function. Specifically, I could
create a COMM_AS690 file with the following format:
#
# COMM_AS690 - Community Definition for ANSNet/NSFNet
#
# Format: IP/Len [metric:AS(NSS) [metric:AS(NSS)] ... ]]
#
6.0.0.0/8 1:568 2:19
7.0.0.0/8 1:701(136) 2:701(134)
...
Our DBSELECTOR syntax could then be used to produce sets of networks,
one set for each metric:AS(NSS) token that exists in the file. If we
don't have a feature that gives us this kind of functionality, we may
be forced to create 300+ specially-named COMMunity files just to be
able to represent AS690 policy. (And another 300+ for MCINet, and
another for SPRINTNet, ... )
-----------------------------------
If you and Tony (and Daniel, when he gets back) consider this at all
reasonable, we could expand the discussion to more detail. For instance,
this information also really needs to be copied into the public database
somewhere. Currently, for AS690, it is in the about-to-be-retired nsf-in
attribute. If we used the 300+ community approach, it would end up in
the Route object, as a series of community names:
Route: 6.0.0.0/8
Communities: COMM_AS690_1:568 COMM_AS690_2:19 COMM_ASMCI_1:568 ...
It might be useful to create a new Route attribute specifically for these
AS-specific purposes:
Route: 6.0.0.0/8
Communities: HEPNET COMM_AS690 COMM_ASMCI
COMM_Details: COMM_AS690 1:568 2:19
COMM_Details: COMM_AS<MCI> 1:567 2:53
There are a number of fundatmental issues which tie into this: who owns
the data, how is it changed, (how often is it changed; how expensive is
that operation), whether that info is fully public (e.g. contained in the
ftp of ripe.db), etc. This is only one of a number of possible
implementations that I think it would be good for everyone on this list
to discuss (presumably mostly after the Lisbon meeting, since this would
not be part of RIPE-81++).
But since you are finishing up the next release of the code, I thought
I'd suggest the addition of the one inoccuous line to the code that reads
COMMunity files that would keep this approach from breaking things in the
future.
Thoughts?
--Dale
-------- Logged at Thu Sep 8 21:54:52 MET DST 1994 ---------
[ rr-impl Archive ]