XORP is a modular, extensible, open source networking platform that can be leveraged by:
- Network operators wanting to reduce cost by running open source networking applications on off-the-shelf hardware.
- Network equipment vendors wanting to expand market presence for their special-purpose hardware.
- Network application writers vendors wanting to expand market presence for their special purpose hardware.
- Network researchers wanting a platform for experimentation and invention.
XORP code can be downloaded and used to build a fully functional PC-based router. A basic implementation of XORP is also available as a Live CD--i.e, a downloadable CD image that can be burned to a bootable CD. This allows XORP to be run without installing any additional software, understanding how XORP works internally, or knowing anything about Linux/Unix system administration.
XORP has a single unified command line interface (CLI) which is used to configure routing protocols and network interfaces. XORP's CLI can be extended to encompass additional router functionality such as queue manangement, QoS configuration, firewalls, NATs and DHCP configuration. The XORP architecture also permits different routing protocols to run in different security "sandboxes", offering the potential for greater robustness and security than alternative router platforms.
XORP currently supports both IPv4 and IPv6 versions of BGP4+, OSPFv2, OSPFv3, RIP and RIPng for unicast routing, and PIM-SM and IGMP/MLD for multicast. XORP runs on most Linux and *BSD distributions. Details can be found in the BUILD_NOTES file.
The performance of PC-based XORP implementations depends on the forwarding capability of the underlying hardware. For environments and applications requiring higher bandwidth or greater speed, XORP can be used as a software stack for controlling advanced hardware forwarding planes. Its Forwarding Engine Abstraction (FEA) process provides a key abstraction layer that isolates higher level routing functionality from the underlying operating system and forwarding engines. This makes it straightforward to port XORP to new hardware platforms using software shims to protect vendor proprietary intellectual property.
Third-party router application development has been largely precluded by the lack of open APIs for commercial router platforms. XORP's extensible architecture allows router operators to install new binary application processes that appear as integrated parts of the router from an operational perspective. This is enabled via XORP's inter-process communication mechanism, combined with it's run-time extensible router-manager process and CLI. Practically speaking, XORP enables customer choice by de-coupling router applications from the underlying routing platform.
The networking research community has been hindered by the lack of an open, production-ready platform on which to develop new technology. Experimentation, testing and measurement are typically done via simulation with no guarantee that results will carry over to real-world routing. This is where XORP comes in:
- XORP can be used as a platform to develop new routing protocols.
- XORP can be used as a network emulator, allowing multiple emulated routers to run real routing code on a single host in a carefully controlled environment.
- XORP is scriptable. Any scripting language can make calls to any XORP process and get back the response, allowing for novel uses of existing router code.
- XORP can be instrumented to perform measurements of traffic, routing messages, or practically anything else that goes on in a production router.
- XORP can <insert your own ideas here>!