class CacheTable

specialized BGPRouteTable that stores routes modified by a FilterTable. More...

 
LOGO
 Annotated List  Files  Globals  Hierarchy  Index  Top

Public Methods


Detailed Description

The XORP BGP is internally implemented as a set of pipelines consisting of a series of BGPRouteTables. Each pipeline receives routes from a BGP peer, stores them, and applies filters to them to modify the routes. Then the pipelines converge on a single decision process, which decides which route wins amongst possible alternative routes. After decision, the winning routes fanout again along a set of pipelines, again being filtered, before being transmitted to peers.

Typically there are two FilterTables for each peer which modify routes passing down the pipeline, one in the input branch from that peer, and one in the output branch to that peer. A FilterTable does not store the routes it modifies, so a CacheTable is placed downstream of a FilterTable to store routes that are modified.

In the current code, a CacheTable isn't strictly necessary, but it simplifies life for all downstream tables, because they know that all routes they receive are stored in stable storage and won't go away without explicit notification.

In the future, it is likely that the CacheTables in the outgoing branches will be removed, as they waste quite a bit of memory for very little gain. However, they have not yet been removed because their internal sanity checks have served as a valuable debugging device to ensure consistency in the messages travelling down the outgoing branches.

 CacheTable (string tablename, Safi safi, BGPRouteTable<A> *parent, const PeerHandler *peer)

CacheTable

 ~CacheTable ()

~CacheTable

int  add_route (const InternalMessage<A> &rtmsg, BGPRouteTable<A> *caller)

add_route

Reimplemented from BGPRouteTable.

int  replace_route (const InternalMessage<A> &old_rtmsg, const InternalMessage<A> &new_rtmsg, BGPRouteTable<A> *caller)

replace_route

Reimplemented from BGPRouteTable.

int  delete_route (const InternalMessage<A> &rtmsg, BGPRouteTable<A> *caller)

delete_route

Reimplemented from BGPRouteTable.

int  push (BGPRouteTable<A> *caller)

push

Reimplemented from BGPRouteTable.

int  route_dump (const InternalMessage<A> &rtmsg, BGPRouteTable<A> *caller, const PeerHandler *dump_peer)

route_dump

Reimplemented from BGPRouteTable.

void  flush_cache ()

flush_cache

const SubnetRoute<A> * lookup_route (const IPNet<A> &net, uint32_t& genid)

lookup_route

[const]

Reimplemented from BGPRouteTable.

void  route_used (const SubnetRoute<A>* route, bool in_use)

route_used

Reimplemented from BGPRouteTable.

RouteTableType  type ()

type

[const]

Reimplemented from BGPRouteTable.

string  str ()

str

[const]

Reimplemented from BGPRouteTable.

void  output_state (bool busy, BGPRouteTable<A> *next_table)

output_state

Reimplemented from BGPRouteTable.

bool  get_next_message (BGPRouteTable<A> *next_table)

get_next_message

Reimplemented from BGPRouteTable.

int  route_count ()

route_count

[const]

EventLoop&  eventloop ()

eventloop

[const]


Generated by: pavlin on possum.icir.org on Thu Jul 8 23:48:33 2004, using kdoc $.