[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[RAM] IPv6 /32 to /48 prefixes and Tree-Bitmap FIB speed



If someone can help me with a few questions, I would really
appreciate it.  One concerns IPv6 BGP practice and the other how
Tree-Bitmap FIBs work with long prefixes.

When I look at the table "Root Prefix Length Distributions":

  http://bgp.potaroo.net/v6/as1221/

(not the first table which precedes it "Prefix Length
Distributions") I see a bunch of prefix lengths which I assume are
those advertised globally:

  /19     2
  ...
  /32	617
  /33	  4 	
  /34	  1 	
  /35	 18 	
  /48	 60 	

Is there some formal or informal agreement not to accept
advertisements for prefixes longer than /48?  I know
there is such a rule for IPv4 (/24) but am not sure if it is
formalised anywhere.

If so, then when an end-user gets a /48 of PI space, as per ARIN
or AfriNIC policies:

  http://www.arin.net/policy/nrpm.html#six58
  http://www.afrinic.net/Registration/afsup-ipv6pi-assignments.htm

I guess this means they can't split this prefix, for instance for
load balancing in a multihomed situation or for using with two
offices in different cities or countries which use different
providers.  This would mean the end-user needs a separate /48 for
each physical office in a different city or country.  Can someone
confirm this?


I also want to confirm or improve my understanding of how
ASIC-based FIBs (rather than those which use TCAM) actually cope
with classifying packets which match really long rules.

I understand that the CRS-1 uses the Tree Bitmap algorithm:

  http://www.firstpr.com.au/ip/sram-ip-forwarding/#Vargese_CRS_1

I have the final 2004 paper if anyone wants a copy.  In this
paper, the hardware reference design deals with the most
significant 8 bits of address in an on-chip RAM lookup table
(actually a 12 bit index).  Then the rest of the address bits are
processed 6 at a time (stride of 6, in Figure 12).

I recognise that the actual CRS-1 algorithm may differ somewhat
from this, but still, it seems that to match a packet against a
/32 rule will probably take 4 external memory reads.  For instance
ignore the first 3 bits which are always 001, then use an internal
RAM table for the next 11 bits and then the last 18 bits as a 3 *
6 bit stride.

For a /48 rule, it seems that with a 6 bit stride, the number of
memory accesses goes up to 7 or so.   This is a really ugly amount
of DRAM cycles to classify each packet passing through a transit
router.  Maybe on-chip caches could help, but I can't imagine how.

I find it impossible to think happily of such cumbersome
techniques, but as far as I know, strides beyond 6 bits have
various problems.  Even if the stride was 12 bits, it would still
be 3 or 4 memory accesses per packet.

Is the future really this grim?  TCAMs are fast but power-hungry
and a can of worms in other respects, such as worst-case update
time.  The fact that Juniper and Cisco use trie-based techniques
indicates that TCAMs can't do the job - but these trie-based
approaches seem to be so slow.

  - Robin


_______________________________________________
RAM mailing list
RAM at iab.org
https://www1.ietf.org/mailman/listinfo/ram