man mrtd (Commandes) - multi-threaded routing daemon

NAME

mrtd - multi-threaded routing daemon

DESCRIPTION

Usage: mrtd [-f config_file] [-p uii_port ] [-v] [-n]

3. MRTd

MRTd is a multi-threaded routing daemon with support for BGP4, RIP1/2, RIPng, and BGP4+ (for IPv6) and multiple RIBs (i.e. route server). MRTd reads Cisco Systems-like router configuration files and includes a Cisco Systems router-like interactive telnet interface.

At the moment, BGP, RIPng, and BGP4+ are completely supported. RIP1/2 and its interaction with other protocols are not supported. Development of OSPF and PIM-DM is currently underway.

Synopsis

mrtd [-v] [-n] [-f configuration file] [-l rib file] [-r] [-m]

Options

-f configuration_file Read the specified configuration file. By default, MRT tries to read /etc/mrtd.conf.

-v Turn on verbose logging to standard output. This is useful to turn on logging before the debug commands are read in the configuration file.

-n Specify that MRT will not modify the kernel routing table. (This option is used to test MRT configurations with actual routing data.)

-r Don't install routes in the RIB.

-l routing database Load routes from a routing table dump and use these prefixes in the simulation. The routing database file must be in MRT message format. The programs included in the route_atob directory will convert GateD, RSd and Cisco Systems routing table dumps to MRT RIB format.

-m Use a new dump format.

Description

MRT first reads its configuration file (by default /etc/mrtd.conf) to configure routing protocols, route peerings, and routing policy. The configuration file closely resembles those used by Cisco Systems routers.

After reading the configuration file, MRT scans the kernel for existing routes, scans the kernel interface list, and then initiates routing protocol communications. MRT also begins listening on the mrt service port, "mrtd," (specified in /etc/services) for user telnet connections.

Sample Configuration Files

A sample IPv4 MRT configuration file is shown below:

Line vty password my_password login ! debug norm stdout ! access-list 1 deny 0.0.0.0/0 access-list 1 permit all access-list 2 permit 192.168.0.0/16 ! router bgp 185 neighbor 192.168.10.2 remote-as 65 neighbor 192.168.10.2 distribute-list 1 in neighbor 192.168.10.2 distribute-list 2 out neighbor 198.108.60.244 remote-as 185 redistribute static redistribute rip ! router rip network 192.168.10.0/24 network 198.108.60.0/24 redistribute static redistribute bgp ! ip route 192.168.100.0/24 192.168.10.100 ip route 192.168.150.0/23 192.168.10.100 ip route 192.168.190.1/24 192.168.10.100 ip route 10.0.0.0/8 192.168.10.100

Following is a sample IPv6 configuration file:

Line vty password my_passwordhttp://pythia.uoregon.edu/~llynch/nanog16.html port 5674 login ! dump bgp view 1 /susr/masaki/tmp/ipv6/bgp.routes.%y%m%d.%H:%M 60m dump bgp updates /susr/masaki/tmp/ipv6/bgp.updates.%y%m%d.%H:%M 15m debug all /tmp/MRTd.log 1000000 redirect /tmp ! access-list 1 deny 3ffe:1c00::/24 refine !merit internal access-list 1 permit all ! access-list 99 deny all ! as-path access-list 1 permit ^1673 ! just an example, it's always true ! router bgp 237 ! define own AS number aggregate-address 3ffe:1c00::/24 summary-only as-set neighbor 3ffe:0dfe:fffe::9 remote-as 1673 ! eBGP neighbor 3ffe:0dfe:fffe::9 description ANS neighbor 3ffe:0dfe:fffe::9 distribute-list 1 out ! drop specific neighbor 3ffe:0dfe:fffe::9 filter-list 1 in ! as path filter neighbor 3ffe:1c00::3 remote-as 237 ! iBGP neighbor 3ffe:1c00::3 description CC neighbor 3ffe:1c00::3 bgp4+ 1 ! use RFC version of BGP4 MP neighbor 3ffe:1c00:0:60::112 remote-as 112 ! for test neighbor 3ffe:1c00:0:60::112 remote-as 112 description MRT neighbor 3ffe:1c00:0:60::112 distribute-list 99 in ! drop everything neighbor 3ffe:1c00:0:60::112 bgp4+ 1 ! ! use RFC version of BGP4 MP redistribute static ! inject static routes redistribute direct ! inject connected routes ! router ripng network 3ffe:1c00:0:60::/64 network 3ffe:1c00:0:12::/64 network cti1 network cti2 redistribute static redistribute direct redistribute bgp distribute-list 99 in cti2 distribute-list 99 out cti2 ! ip route 0.0.0.0/0 198.108.60.1 ! default route ip route 3ffe:1c00::/24 ::1 ! merit pTLA

Configuration Guide

This section introduces the command sets for: * Configuring MRTd and BGPsim * Using MRT's interactive interface to monitor the status of MRTd and BGPsim.

For information about the uii, debug, and access-list configuration commands, see Chapter 2, "Getting Started."

Configuration Commands

As mentioned in Chapter 2, all of the below options may be configured directly through the UII telnet interface. Administrators may also choose to edit the configuration file directly on disk. In this case, MRTd must be rebooted before the changes will take affect.

Configuring Routes and Policy

MRTd supports most of the common Cisco Systems routing policy commands, including access lists, as-path access lists and route maps.

route-- defines a static route

route []

Establishes a static route to a destination via . may be an IPv4 or IPv6 address and must be consistent with . To use a specific interface, specify .

as-path access-list --defines an as-path access-list

as-path access-list <number> {permit|deny} <as-regular-expression>

Defines an as-path access-list <number>, which permits or denies access if <as-regular-expression> is matched. Matches are performed in the order in which they appear. At the end of a list with the same number, deny .* is assumed. The as regular expressions are as follows: <number> an as number (1 through 65535) . Matches any single as number * Matches 0 or more sequences of the pattern + Matches 1 or more sequences of the pattern ? Matches 0 or 1 occurrences of the pattern ^ Matches the beginning of the as path $ Matches the end of the as path | Matches one of the alternatives () Encloses a pattern For example: .* any AS path, including null 237$ originated from AS 237 237 via AS 237 ^(237|10) from AS 237 or AS 10 ^$ originated from this AS

network <prefix>

Configure routes originating in BGP.

route-map-- define a route-map

route-map

Defines the conditions to modify attributes of any updates.

route-map sub commands

set as-path [prepend]

Sets or prepends to the as-path of the route. Note that there is no matching function implemented. ... ... a sequence of AS numbers

[ ... ] a set of AS numbers

set community [additive] (|no-export|no-advertise)

Sets community attribute to the route, or appends if additive is specified. values are 1 to 4294967200.

set origin (igp|egp |incomplete)

Sets the origin code.

set next-hop <address>

Sets the nexthop attribute. If the address is an IPv6 global address, it is set as BGP4+ next hop. In addition, If the address is an IPv6 link-local address, it is set as BGP4+ next hop link local address.

set metric

Sets the metric value (MED).

set local-preference

Sets the local preference value.

set dpa as

Sets the DPA values.

set atomic-aggregate

Sets automatic aggregate attribute.

set aggregator as <address>

Sets aggregator information. <address> should be IPv4.

Configuring Routing Protocols

MRTd supports BGP4, BGP4+, RIP2, and RIPng. This version includes partial support for OSPF, and a PIM-DM implementation is underway.

router--configures routing protocol

router bgp <as number>

Enables assignment of the BGP (or BGP4+ if IPv6 is available) routing protocol to the routing process.

router ripng

Enables RIPng routing protocol.

router rip

Enables RIP routing protocol.

The following commands are available for the router bgp command.

neighbor remote-as <peer's as number>

Adds an entry of BGP neighbor with . <peer's as number> should be an AS number to which the peer belongs. Must precede other neighbor commands for .

neighbor update-source

Specifies the addresses for outgoing BGP connections and at which incoming BGP connections are accepted.

neighbor next-hop-self

Forces the next hop in the AS path to be the host itself.

neighbor <peer address> (transparent-as|transparent-nexthop)

Set transparent option for neighbor, as in use as a route server.

neighbor <peer address> passive

Does not initiate BGP connections--only accepts them.

neighbor maximum-prefix

Sets the maximum number of prefixes incuded in a BGP update.

neighbor distribute-list {in|out}

Applies access-list to incoming (in) or outgoing (out) route updates for a peer with .

neighbor <peer address> filter-list <number> {in|out}

Applies as-path access-list <number> to incoming (in) or outgoing (out) route updates for a peer with <peer address>.

neighbor < peer address> weight <num>

Set a weight associated with a peer.

neighbor <peer address> trace

Enable tracing of a BGP peer.

neighbor route-map {in|out}

Applies a route-map to incoming (in) or outgoing (out) route updates for a peer with .

neighbor route-reflector-client

Sends routes to an internal peer even if learned from another internal peer (route reflection.)

neighbor description <string>

Attaches <string> to the neighbor as a description.

neighbor (holdtime|keepalive|connectretry|starttime) <num>

Set the timer for a neighbor.

neighbor <name> neighbor-list <num>

Allows anonymous neighbor peers.

neighbor bgp4+ (0|1|old|new|rfc|auto)

Specifies BGP4+ packet format. The default is 0.

redistribute

Redistributes routes from such as rip to BGP.

aggregate-address [summary-only] [as-set]

Creates an aggregate entry to . summary-only suppresses all more specific routes from updates. as-set merges as paths to generate as-set path attribute.

bgp router <id>

Defines the router ID used in BGP. The router ID should be an IPv4 address assigned to the host. The default is one of the addresses available on the host; which is picked up by MRT automatically.

bgp cluster-id <id>

Defines the cluster ID used in the BGP reflector. The default is the same as the router ID.

router rip/ripng --RIP/RIPng routing

The following commands are available for the router RIP/RIPng command.

network {|}

Specifies interface(s) by or by name. to turn on RIP/RIPng. All interfaces included under will be enabled.

distribute-list {in|out}

Applies access-list to incoming (in) or outgoing (out) route updates on .

redistribute

Redistributes routes from to RIP/RIPng.

Statistics Collection

MRTd can log both routing table dumps and binary traces of all BGP events in a format parseable by other MRT (and soon Zebra) tools. So, for example, BGP updates can be recorded via MRTd and later replayed to test peers through bgpsim or sbgp. The MRT Programmer's Manual includes a description of the MRT packet formats.

dump bgp-- dump BGP updates, state changes, and routes

dump-binary [{ip|ipv6}] bgp routes []

Dump BGP routing table in binary MRT format. can be in strftime() format. If is specified, the file will be reopened every , re-evaluating the filename. If ip or ipv6 is specified, only the routes of the address will be dumped.

dump [{ip|ipv6}] bgp {routes|updates|all} []

Dumps BGP/BGP4+ routes, updates, or all into the file . can be in strftime() format. If is specified, the file will be reopened every , re-evaluating the filename. If ip or ipv6 is specified, only the routes of the address will be dumped.

dump bgp view <view number> []

Dump routing table for specified view.

Interactive Interface Commands

MRTd and BGPsim provide an interactive user interface for management (e.g., viewing the routing table) and configuration.

The following commands are specific to MRTd and BGPSim. Additional commands are described in Chapter 2, "Getting Started."

clear bgp * <name> - Close/reset BGP peering session with this peer *

config * - Enter configuration mode

quit - Exit mode, or exit UII interface

show - show system information

show [{ip|ipv6}] bgp

show [{ip|ipv6}] bgp summary

Show BGP peers summary

show [{ip|ipv6}] bgp neighbors

Show BGP peers and their status

show bgp neighbors (<peer address>|<name>|*) errors

Show recent BGP errors/notifications with this peer.

show bgp neighbors (<peer address>|<name>|*) routes

Show BGP routes sent to this peer

show [{ip|ipv6}] bgp routes

Show BGP routing table

show [{ip|ipv6}] bgp regexp <as-regular expression>

Show BGP routes matching the as-path regular expression.

show [{ip|ipv6}] bgp prefix <prefix>

Show BGP routes matching this prefix.

show config

Show the current configuration

show interfaces

Show all interfaces available

show ip

Show IPv4 routing table

show ipv6

Show IPv6 routing table

show rib

Show the central routing table

show rip

Show RIP status

show rip routes

Show RIP routing table

show ripng

Show RIPng status

show ripng routes

Show RIPng routing table

show view <view number>

Show the BGP routing table for this view.

dump & load - dump and load bgp binary routing table dump to/from disk

dump [{ip|ipv6}] bgp routes <filename>

Dumps bgp routes into the file <filename>.

load [{ip|ipv6}] bgp routes <filename>

Loads bgp routes from the file <filename>. Note that this will introduce inconsistency into the routing table.

trace - log protocol information to disk or UII

trace [{ip|ipv6}] bgp *

Enable tracing of BGP protocol.

trace bgp neighbor (<peer address>|<peer name>) *

Enable tracing on the peer. (The "terminal monitor" command is required to watch this at the UII.)

trace bgp view (*|inet|inet6|<num>) *

Enable tracing of view routing table changes.

quit--quit the mode or disconnect

* Note that if you set `enable password' in your configuration, the enable command is required in order to execute some potentially dangerous commands, such as clear bgp, config, and trace bgp (marked with an asterisk* above.)

Following are examples of the interactive interface commands: [21] MRTd> show ip 4 prefixes P Pref Time Destination Next Hop If *S 1 74:42:37 0.0.0.0/0 198.108.60.1 ep0 *C 0 74:42:37 127.0.0.0/8 0.0.0.0 lo0 *C 0 74:42:37 192.168.12.0/24 0.0.0.0 lo0 *C 0 74:42:37 198.108.60.0/24 0.0.0.0 lo0 [17] MRTd> show ripng

Routing Protocol is "ripng" (Using IPV6) Listening on port 521 (socket 10) Sending updates every 30 seconds +/- 15, next due in 29 seconds Triggered update and split horizon (no poisoned reverse) implemented Invalid after 180 seconds, hold down 180, flushed after 120

106 ripng routes and 107 ripng attributes active 106 hash entries

You can find more documentation in /usr/share/doc/mrt/html/