-
Notifications
You must be signed in to change notification settings - Fork 74
/
README
314 lines (224 loc) · 9.99 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
XORP: eXtensible Open Router Platform
1. Overview
===========
XORP is an open networking platform that supports OSPF, RIP, BGP,
OLSR, VRRP, PIM, IGMP (Multicast) and other routing protocols. Most protocols
support IPv4 and IPv6 where applicable. It is known to work on various
Linux distributions and flavors of BSD.
XORP started life as a project at the ICSI Center for Open Networking (ICON)
at the International Computer Science Institute in Berkeley, California,
USA, and spent some time with the team at XORP, Inc. It is now maintained
and improved on a volunteer basis by a core of long-term XORP developers
and some newer contributors.
XORP's primary goal is to be an open platform for networking protocol
implementations and an alternative to proprietary and closed networking
products in the marketplace today.
XORP design philosophy is:
* modularity
* extensibility
* performance
* robustness
This is achieved by carefully separating functionalities into
independent modules, and by providing an API for each module.
XORP divides into two subsystems. The higher-level ("user-level")
subsystem consists of the routing protocols. The lower-level ("kernel")
manages the forwarding path, and provides APIs for the higher-level to
access.
User-level XORP uses multi-process architecture with one process per
routing protocol, and a novel inter-process communication mechanism
called XRL (XORP Resource Locator).
The lower-level subsystem can use traditional UNIX kernel forwarding, or
Click modular router. The modularity and independency of the lower-level
from the user-level subsystem allows for its easily replacement with
other solutions including high-end hardware-based forwarding engines.
For more information about XORP high-level design see the following
paper available from http://www.xorp.org/ :
"XORP: An Open Platform for Network Research", HotNets-I 2002 Workshop.
2. Status
=========
This is XORP Release 1.8.6-WIP
Supported platforms:
* DragonFlyBSD
* FreeBSD
* NetBSD
* OpenBSD
* Mac OS X ???
* Linux (x86-32, x86-64, Sparc)
* Windows (via mingw cross-compile)
See xorp/BUILD_NOTES for OS-specific details, compilation
information, etc.
Development platform:
* Linux and FreeBSD
Other platforms can also be used for development, perhaps with a bit
of effort. Ask on the xorp-hackers mailing list if your preferred
platform is not currently supported.
See xorp/ERRATA for the list of known problems.
Currently, XORP implements the following protocols:
* RIP and RIPng:
- RFC 2453 (RIP version 2)
- RFC 2082 (RIP-2 MD5 Authentication)
- RFC 2080 (RIPng for IPv6)
* BGP4:
- RFC 4271 (A Border Gateway Protocol 4 (BGP-4))
- RFC 3392 (Capabilities Advertisement with BGP-4)
- RFC 4760 (Multiprotocol Extensions for BGP-4)
- RFC 2545 (Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain
Routing)
- RFC 1997 (BGP Communities Attribute)
- RFC 2796 (BGP Route Reflection - An Alternative to Full Mesh IBGP)
- RFC 3065 (Autonomous System Confederations for BGP)
- RFC 2439 (BGP Route Flap Damping)
- RFC 4893 (BGP Support for Four-octet AS Number Space)
- RFC 1657 (Definitions of Managed Objects for the Fourth Version
of the Border Gateway Protocol (BGP-4) using SMIv2)
* OSPFv2:
- RFC 2328 (OSPF Version 2)
- RFC 3101 (The OSPF Not-So-Stubby Area (NSSA) Option)
* OSPFv3:
- draft-ietf-ospf-ospfv3-update-14.txt (OSPF for IPv6)
* PIM-SM:
- draft-ietf-pim-sm-v2-new-11.{ps,txt}
- draft-ietf-pim-sm-bsr-03.{ps,txt}
* IGMP v1, v2, and v3:
- RFC 2236 (Internet Group Management Protocol, Version 2)
- RFC 3376 (Internet Group Management Protocol, Version 3)
* MLD v1 and v2:
- RFC 2710 (Multicast Listener Discovery (MLD) for IPv6)
- RFC 3810 (Multicast Listener Discovery Version 2 (MLDv2) for IPv6)
* VRRP v2:
- RFC 3768 (Virtual Router Redundancy Protocol (VRRP))
For description of the changes in each release, see ${XORP}/RELEASE_NOTES.
3. Compilation, configuration and startup
=========================================
To compile XORP, you must have a recent version of scons and g++
compiler toolset installed.
cd xorp
scons
scons install
For help on scons and available compile options:
scons --help
You may also wish to try this script to create a tar.gz install package:
./lf_pkg.bash
In general, configuration and startup of the various XORP processes are
normally meant to happen via the router manager (rtrmgr), so please
refer first to the XORP online documentation linked from:
http://www.xorp.org
4. Code structure and documentation
===================================
The content of some important directories is listed below:
* xorp/bgp : BGP implementation.
* xorp/cli : CLI (Command-Line Interface) library.
It is used by the Router Manager (rtrmgr), and by some of the
multicast code (the multicast-specific part of fea, mld6igmp, pim).
* docs : XORP user documentation. Note that much of this is
now on the wiki linked from www.xorp.org. The latex based documentation
is deprecated.
* xorp/etc : Various XORP-related files (e.g., configuration, templates).
* xorp/fea : Forwarding Engine Abstraction.
The FEA implements the interface between XORP and the underlying
forwarding engine (e.g., the UNIX kernel). It is used both for
unicast and multicast. Note that the multicast-specific
documentation is in ${XORP}/docs/mfea.
* xorp/fib2mrib : Forwarding Information Base to the Multicast Routing
Information Base route propagator.
It uses the FEA to obtain the FIB information from the underlying
system, and propagates it to the MRIB, so it can be used by
multicast routing protocols such as PIM-SM. Typically, it is needed
only if the unicast routing protocols run within XORP do not inject
routes in the MRIB.
* xorp/libcomm : Communication socket library.
* xorp/libfeaclient : Library that is useful to clients of the FEA.
* xorp/libproto : Abstract protocol library.
Used by the following modules/directories: cli, fea, mld6igmp, ospf,
pim.
* xorp/libxipc : XRL (XORP Resource Locator) library and XRL-related
programs.
* xorp/libxorp : XORP library that contains various basic
functionalities such as IP addresses, IP subnets, etc.
* xorp/mld6igmp : Multicast Listen Discovery/Internet Group Management
Protocol (MLD/IGMP) implementation.
* xorp/mrt : Various multicast-related code.
Used by the following modules/directories: fea, mld6igmp, pim.
* xorp/ospf : Open Shortest Path First implementation.
* xorp/policy : Policy-related library.
* xorp/pim : Protocol Independent Multicast - Sparse Mode (PIM-SM)
implementation.
* xorp/rib : Routing Information Base.
It is used to store the routing information from various protocols.
* xorp/rip: Routing Information Protocol implementation.
* xorp/rtrmgr : Router Manager.
It is used to manage and configure all XORP components.
* xorp/static_routes : Static routes management.
It is used to configure static routes.
* xorp/vrrp : Virtual Router Redundancy Protocol implementation.
* xorp/xrl : XRL (XORP Resource Locator) interface.
The directories listed below contain third-party contributed code which
is distributed with each XORP source release:
* xorp/contrib : various contributed code.
* olsr : RFC 3626 Optimized Link State Routing implementation.
Generously funded by CenGen, Inc. (Does not compile in 1.7,
but will work in 1.8)
* mld6igmp_lite : Implementation of the Lightweight IGMPv3/MLDv2
protocols:
- draft-ietf-mboned-lightweight-igmpv3-mldv2-02.txt
The directories listed below contain various information that are of
limited interest, or are not relevant to the current release:
* devnotes : various notes for the XORP core members.
* utils : Various XORP-related utilities.
5. Authors & Contributors
==========
* Ben Greear (Current Project Manager)
* Pierre Lepropre (Documentation)
The old core team consisted of:
* Fred Bauer
* Andrea Bittau
* Javier Cardona
* Atanu Ghosh
* Adam Greenhalgh
* Mark Handley
* Orion Hodson
* Eddie Kohler
* Pavlin Radoslavov
* Luigi Rizzo
* Bruce M. Simpson
* Marko Zec
6. Acknowledgments
==================
* Sponsors (in chronological order, oldest first):
- AT&T funding (through ICIR)
- Intel Corporation
- NSF grant (ANI-0129541).
The following acknowledgment and disclaimer applies for the NSF
support:
This material is based upon work supported by the National
Science Foundation under Grant No. 0129541.
Any opinions, findings, and conclusions or recommendations
expressed in this material are those of the author(s) and do not
necessarily reflect the views of the National Science Foundation.
- Microsoft
- Vyatta
- CenGen
- Candela Technologies (Sponsors Ben Greear)
- RUN at University of Liege (hosts & supports the documentation wiki)
* Martin C. Shepherd for the libtecla library (used by the CLI).
8. Additional information
=========================
* WWW: http://www.xorp.org/
* Source code and binary distribution access:
http://github.com/greearb/xorp.ct
* XORP Bugzilla database and bug reports:
http://www.xorp.org/bugzilla
* XORP users mailing list: [email protected]
This list is for general XORP discussion.
To subscribe, send email to [email protected] with
the word "subscribe" (no quotes!) in the subject or the body
of the email. For more subscription options, send the command
"help" instead, or use the following URL:
http://mailman.ICSI.Berkeley.edu/mailman/listinfo/xorp-users
* XORP hackers mailing list: [email protected]
This list is for XORP development discussion.
To subscribe, send email to [email protected] with
the word "subscribe" (no quotes!) in the subject or the body
of the email. For more subscription options, send the command
"help" instead, or use the following URL:
http://mailman.ICSI.Berkeley.edu/mailman/listinfo/xorp-hackers