OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [Documentation/] [networking/] [policy-routing.txt] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
Classes
2
-------
3
 
4
        "Class" is a complete routing table in common sense.
5
        I.e. it is tree of nodes (destination prefix, tos, metric)
6
        with attached information: gateway, device etc.
7
        This tree is looked up as specified in RFC1812 5.2.4.3
8
        1. Basic match
9
        2. Longest match
10
        3. Weak TOS.
11
        4. Metric. (should not be in kernel space, but they are)
12
        5. Additional pruning rules. (not in kernel space).
13
 
14
        We have two special type of nodes:
15
        REJECT - abort route lookup and return an error value.
16
        THROW  - abort route lookup in this class.
17
 
18
 
19
        Currently the number of classes is limited to 255
20
        (0 is reserved for "not specified class")
21
 
22
        Three classes are builtin:
23
 
24
        RT_CLASS_LOCAL=255 - local interface addresses,
25
        broadcasts, nat addresses.
26
 
27
        RT_CLASS_MAIN=254  - all normal routes are put there
28
        by default.
29
 
30
        RT_CLASS_DEFAULT=253 - if ip_fib_model==1, then
31
        normal default routes are put there, if ip_fib_model==2
32
        all gateway routes are put there.
33
 
34
 
35
Rules
36
-----
37
        Rule is a record of (src prefix, src interface, tos, dst prefix)
38
        with attached information.
39
 
40
        Rule types:
41
        RTP_ROUTE - lookup in attached class
42
        RTP_NAT   - lookup in attached class and if a match is found,
43
                    translate packet source address.
44
        RTP_MASQUERADE - lookup in attached class and if a match is found,
45
                    masquerade packet as sourced by us.
46
        RTP_DROP   - silently drop the packet.
47
        RTP_REJECT - drop the packet and send ICMP NET UNREACHABLE.
48
        RTP_PROHIBIT - drop the packet and send ICMP COMM. ADM. PROHIBITED.
49
 
50
        Rule flags:
51
        RTRF_LOG - log route creations.
52
        RTRF_VALVE - One way route (used with masquerading)
53
 
54
Default setup:
55
 
56
root@amber:/pub/ip-routing # iproute -r
57
Kernel routing policy rules
58
Pref Source             Destination        TOS Iface   Cl
59
 
60
 254 default            default            00  *       254
61
 255 default            default            00  *       253
62
 
63
 
64
Lookup algorithm
65
----------------
66
 
67
        We scan rules list, and if a rule is matched, apply it.
68
        If a route is found, return it.
69
        If it is not found or a THROW node was matched, continue
70
        to scan rules.
71
 
72
Applications
73
------------
74
 
75
1.      Just ignore classes. All the routes are put into MAIN class
76
        (and/or into DEFAULT class).
77
 
78
        HOWTO:  iproute add PREFIX [ tos TOS ] [ gw GW ] [ dev DEV ]
79
                [ metric METRIC ] [ reject ] ... (look at iproute utility)
80
 
81
                or use route utility from current net-tools.
82
 
83
2.      Opposite case. Just forget all that you know about routing
84
        tables. Every rule is supplied with its own gateway, device
85
        info. record. This approach is not appropriate for automated
86
        route maintenance, but it is ideal for manual configuration.
87
 
88
        HOWTO:  iproute addrule [ from PREFIX ] [ to PREFIX ] [ tos TOS ]
89
                [ dev INPUTDEV] [ pref PREFERENCE ] route [ gw GATEWAY ]
90
                [ dev OUTDEV ] .....
91
 
92
        Warning: As of now the size of the routing table in this
93
        approach is limited to 256. If someone likes this model, I'll
94
        relax this limitation.
95
 
96
3.      OSPF classes (see RFC1583, RFC1812 E.3.3)
97
        Very clean, stable and robust algorithm for OSPF routing
98
        domains. Unfortunately, it is not widely used in the Internet.
99
 
100
        Proposed setup:
101
        255 local addresses
102
        254 interface routes
103
        253 ASE routes with external metric
104
        252 ASE routes with internal metric
105
        251 inter-area routes
106
        250 intra-area routes for 1st area
107
        249 intra-area routes for 2nd area
108
        etc.
109
 
110
        Rules:
111
        iproute addrule class 253
112
        iproute addrule class 252
113
        iproute addrule class 251
114
        iproute addrule to a-prefix-for-1st-area class 250
115
        iproute addrule to another-prefix-for-1st-area class 250
116
        ...
117
        iproute addrule to a-prefix-for-2nd-area class 249
118
        ...
119
 
120
        Area classes must be terminated with reject record.
121
        iproute add default reject class 250
122
        iproute add default reject class 249
123
        ...
124
 
125
4.      The Variant Router Requirements Algorithm (RFC1812 E.3.2)
126
        Create 16 classes for different TOS values.
127
        It is a funny, but pretty useless algorithm.
128
        I listed it just to show the power of new routing code.
129
 
130
5.      All the variety of combinations......
131
 
132
 
133
GATED
134
-----
135
 
136
        Gated does not understand classes, but it will work
137
        happily in MAIN+DEFAULT. All policy routes can be set
138
        and maintained manually.
139
 
140
IMPORTANT NOTE
141
--------------
142
        route.c has a compilation time switch CONFIG_IP_LOCAL_RT_POLICY.
143
        If it is set, locally originated packets are routed
144
        using all the policy list. This is not very convenient and
145
        pretty ambiguous when used with NAT and masquerading.
146
        I set it to FALSE by default.
147
 
148
 
149
Alexey Kuznetov
150
kuznet@ms2.inr.ac.ru

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.