Classes
-------

	"Class" is a complete routing table in common sense.
	I.e. it is tree of nodes (destination prefix, tos, metric)
	with attached information: gateway, device etc.
	This tree is looked up as specified in RFC1812 5.2.4.3
	1. Basic match
	2. Longest match
	3. Weak TOS.
	4. Metric. (should not be in kernel space, but they are)
	5. Additional pruning rules. (not in kernel space).
	
	We have two special type of nodes:
	REJECT - abort route lookup and return an error value.
	THROW  - abort route lookup in this class.


	Currently the number of classes is limited to 255
	(0 is reserved for "not specified class")

	Three classes are builtin:

	RT_CLASS_LOCAL=255 - local interface addresses,
	broadcasts, nat addresses.

	RT_CLASS_MAIN=254  - all normal routes are put there
	by default.

	RT_CLASS_DEFAULT=253 - if ip_fib_model==1, then
	normal default routes are put there, if ip_fib_model==2
	all gateway routes are put there.


Rules
-----
	Rule is a record of (src prefix, src interface, tos, dst prefix)
	with attached information.

	Rule types:
	RTP_ROUTE - lookup in attached class
	RTP_NAT   - lookup in attached class and if a match is found,
		    translate packet source address.
	RTP_MASQUERADE - lookup in attached class and if a match is found,
		    masquerade packet as sourced by us.
	RTP_DROP   - silently drop the packet.
	RTP_REJECT - drop the packet and send ICMP NET UNREACHABLE.
	RTP_PROHIBIT - drop the packet and send ICMP COMM. ADM. PROHIBITED.

	Rule flags:
	RTRF_LOG - log route creations.
	RTRF_VALVE - One way route (used with masquerading)

Default setup:

root@amber:/pub/ip-routing # iproute -r
Kernel routing policy rules
Pref Source             Destination        TOS Iface   Cl
   0 default            default            00  *       255
 254 default            default            00  *       254
 255 default            default            00  *       253


Lookup algorithm
----------------

	We scan rules list, and if a rule is matched, apply it.
	If a route is found, return it.
	If it is not found or a THROW node was matched, continue
	to scan rules.

Applications
------------

1.	Just ignore classes. All the routes are put into MAIN class
	(and/or into DEFAULT class).

	HOWTO:  iproute add PREFIX [ tos TOS ] [ gw GW ] [ dev DEV ]
		[ metric METRIC ] [ reject ] ... (look at iproute utility)

		or use route utility from current net-tools.
		
2.	Opposite case. Just forget all that you know about routing
	tables. Every rule is supplied with its own gateway, device
	info. record. This approach is not appropriate for automated
	route maintenance, but it is ideal for manual configuration.

	HOWTO:  iproute addrule [ from PREFIX ] [ to PREFIX ] [ tos TOS ]
		[ dev INPUTDEV] [ pref PREFERENCE ] route [ gw GATEWAY ]
		[ dev OUTDEV ] .....

	Warning: As of now the size of the routing table in this
	approach is limited to 256. If someone likes this model, I'll
	relax this limitation.

3.	OSPF classes (see RFC1583, RFC1812 E.3.3)
	Very clean, stable and robust algorithm for OSPF routing
	domains. Unfortunately, it is not widely used in the Internet.

	Proposed setup:
	255 local addresses
	254 interface routes
	253 ASE routes with external metric
	252 ASE routes with internal metric
	251 inter-area routes
	250 intra-area routes for 1st area
	249 intra-area routes for 2nd area
	etc.
	
	Rules:
	iproute addrule class 253
	iproute addrule class 252
	iproute addrule class 251
	iproute addrule to a-prefix-for-1st-area class 250
	iproute addrule to another-prefix-for-1st-area class 250
	...
	iproute addrule to a-prefix-for-2nd-area class 249
	...

	Area classes must be terminated with reject record.
	iproute add default reject class 250
	iproute add default reject class 249
	...

4.	The Variant Router Requirements Algorithm (RFC1812 E.3.2)
	Create 16 classes for different TOS values.
	It is a funny, but pretty useless algorithm.
	I listed it just to show the power of new routing code.

5.	All the variety of combinations......


GATED
-----

	Gated does not understand classes, but it will work
	happily in MAIN+DEFAULT. All policy routes can be set
	and maintained manually.

IMPORTANT NOTE
--------------
	route.c has a compilation time switch CONFIG_IP_LOCAL_RT_POLICY.
	If it is set, locally originated packets are routed
	using all the policy list. This is not very convenient and
	pretty ambiguous when used with NAT and masquerading.
	I set it to FALSE by default.


Alexey Kuznetov
kuznet@ms2.inr.ac.ru
