Manual:Routing/OSPF: Difference between revisions
No edit summary |
No edit summary |
||
Line 698: | Line 698: | ||
<br /> | <br /> | ||
[[OSPF_as_PE-CE_routing_protocol|Sham link configuration example]] | [[OSPF_as_PE-CE_routing_protocol|Sham link configuration example]] | ||
<br /> | |||
<br /> | |||
Sham link must be configured on both sides.<br /> | |||
For a sham link to be active, two conditions must be met:<br /> | |||
<ul> | |||
:<li>src-address is a valid local address with /32 netmask in OSPF instance's routing table. | |||
:<li>there is a valid route to dst-address in the OSPF instance's routing table. | |||
</ul> | |||
<br /> | |||
When the sham link is active, hello packets are sent on it only until the neighbor reaches full state. After that, hello packet sending on the sham link is suppressed.<br /> | |||
RouterOS does not support periodic LSA refresh suppression on sham-links yet, however. | |||
</p> | </p> | ||
Revision as of 13:45, 11 September 2009
Summary
MikroTik RouterOS implements OSPF Version 2 (RFC 2328). The OSPF protocol is the link-state protocol that takes care of the routes in the dynamic network structure that can employ different paths to its subnetworks. It always chooses shortest path to the subnetwork first.
Instance
Sub-menu: /routing ospf instance
Since v3.17 it is possible to run multiple OSPF instances. General OSPF configuration now is moved to instances.
Properties
Property | Description |
---|---|
distribute-default (never | if-installed-as-type-1 | if-installed-as-type-2 | always-as-type-1 | always-as-type-2; Default: never) | specifies how to distribute default route. Should be used for ABR (Area Border router) or ASBR (Autonomous System boundary router)
|
domain-id (Hex|Address;) | By default Null domain-id is used, as described in RFC 4577 |
domain-tag (integer: 0..4294967295 ;) | used for interoperability with older Cisco systems. By default it is not set and should be configured manually. When domain tag is set, it is used even if router is not a PE router. |
in-filter (string;) | name of the routing filter chain used for incoming prefixes |
metric-bgp (integer|default; Default: 20) | the cost of the routes learned from BGP protocol. When set to default, MED attribute value from BGP route will be used, if MED is not set then default value 20 is used. |
metric-connected (integer; Default: 20) | the cost of the routes to directly connected networks |
metric-default (integer; Default: 1) | the cost of the default route |
metric-other-ospf (integer|auto; Default: 20) | the cost of the routes learned from other OSPF instances. If auto is configured, then the cost from previous instance is taken into account, otherwise cost is set to statically configured value. |
metric-rip (integer; Default: 20) | the cost of the routes learned from RIP protocol |
metric-static (integer; Default: 20) | the cost of the static routes |
mpls-te-area (string;) | Area name which will be used in MPLS traffic engineering |
mpls-te-router-id (ip;) | |
out-filter (string;) | name of the routing filter chain used for outgoing prefixes |
redistribute-bgp (as-type-1 | as-type-2 | no; Default: no) | redistribute all routes learned by the BGP protocol |
redistribute-connected (as-type-1 | as-type-2 | no; Default: no) | redistribute all connected routes, i.e., routes to directly reachable networks |
redistribute-other-ospf (as-type-1 | as-type-2 | no; Default: no) | redistribute all routes learned by other OSPF instances |
redistribute-rip (as-type-1 | as-type-2 | no; Default: no) | redistribute all routes learned by the RIP protocol |
redistribute-static (as-type-1 | as-type-2 | no; Default: no) | if enabled, the router will redistribute the information about static routes added to its routing database, i.e., routes that have been created using the '/ip route add' command on the router |
router-id (IP address; Default: 0.0.0.0) | the OSPF Router ID. If not specified, OSPF use one of router's IP addresses. |
routing-table (name of routing table;) | routing tables where ospf routes will be installed |
Notes
OSPF protocol supports two types of metrics:
- type1 - external metrics are expressed in the same units as OSPF interface cost. In other words the router expects the cost of a link to a network which is external to AS to be the same order of magnitude as the cost of the internal links.
- type2 - external metrics are an order of magnitude larger; any type2 metric is considered greater than the cost of any path internal to the AS. Use of type2 external metric assumes that routing between AS is the major cost of routing a packet, and eliminates the need conversion of external costs to internal link state metrics.
Status
Command /routing ospf monitor
will display current OSPF status.
For multi instance OSPF you have to use following command:
/routing ospf instance print status
Available read only properties:
Property | Description |
---|---|
state (down | running) | shows if OSPF is running or not |
effective-router-id (IP address) | Router-ID chosen by OSPF. |
dijkstras (integer) | shows how many times dijkstras were recalculated |
db-exchanges (integer) | |
external-imports (integer) | How many external routes are imported into OSPF from this router. |
Area
Sub-menu: /routing ospf area
Description
OSPF allows collections of routers to be grouped together. Such a group is called an area. Each area runs a separate copy of the basic link-state routing algorithm. This means that each area has its own link-state database and corresponding shortest path tree.
The structure of an area is invisible from other areas. This isolation of knowledge makes the protocol more scalable if multiple areas are used; routing table calculation takes less CPU resources and routing traffic is reduced.
However, multi-area setups create additional complexity. It is not recommended separate areas with fewer than 50 routers. The maximum number of routers in one area is mostly dependent on CPU power you have for routing table calculation.
Properties
Property | Description |
---|---|
area-id (IP address; Default: 0.0.0.0) | OSPF area identifier. An area with area-id=0.0.0.0 (the backbone) must always be present. The backbone always contains all area border routers. The backbone is responsible for distributing routing information between non-backbone areas. The backbone must be contiguous, i.e. there must be no disconnected segments. However, area border routers do not need to be physically connected to the backbone - connection to it may be simulated using a virtual link. |
default-cost (integer; Default: 1) | specifies the cost for the default route originated by this stub area ABR. Applicable only for stub areas on ABRs |
inject-summary-lsas (yes | no; Default: yes) | specifies whether to flood summary LSAs in this stub area. Applicable only for stub areas on ABRs |
name (string; Default: ) | the name of the area |
translator-role (integer; Default: ) | |
type (default | nssa | stub; Default: default) | area type |
Status
/routing ospf area print status
will show additional read-only properties
Property | Description |
---|---|
interfaces (integer;) | count of interfaces assigned to this area |
active-interfaces (integer;) | currently active count of interfaces assigned to this area |
neighbors (integer;) | count of OSPF neighbors in this area |
adjacent-neighbors (integer;) | count of adjacent OSPF neighbors in this area |
Area Range
Sub-menu: /routing ospf area range
Description
Prefix ranges are used to aggregate routing information on area boundaries. By default, ABR creates a summary LSA for each route in specific area, and advertises it in adjacent areas. Using 'ranges' allows to create only one summary LSA for multiple routes and send only single advertisement into adjacent areas, or to suppress advertisements altogether. If a range is configured as 'advertise=yes', a single summary LSA is advertised for each range if there are any routes under the range is the specific area. Else ('advertise=no') no summary LSAs area created and advertised outside area boundaries at all.
Properties
Property | Description |
---|---|
advertise (yes | no; Default: yes) | whether to create summary LSA and advertise it to adjacent areas |
area (string; Default: ) | the OSPF area associated with this range |
cost (integer | default; Default: default) | the cost of the summary LSA this range will create
|
range (IP prefix; Default: ) | the network prefix of this range |
Note
For an active range (i.e. one that has at least one OSPF route from the specified area falling under it), 'unreachable' route is created and installed in the routing table.
Network
Sub-menu: /routing ospf network
To start the OSPF protocol, you have to define the networks on which OSPF will run and associated area for each of these networks
Property | Description |
---|---|
area (string; Default: backbone) | the OSPF area to be associated with the specified address range |
network (IP prefix; Default: ) | the network prefix associated with the area. OSPF will be enabled on all interfaces that has at least one address falling within this range. Note that the network prefix of the address is used for this check (i.e. not the local address). For PtP interfaces this means the address of the remote endpoint. |
Interface
Sub-menu: /routing ospf interface
Property | Description |
---|---|
authentication (none | simple | md5; Default: none) | specifies authentication method for OSPF protocol messages.
|
authentication-key (string; Default: "") | authentication key to be used for simple or MD5 authentication |
authentication-key-id (integer; Default: 1) | key id is used to calculate message digest (used only when MD5 authentication is enabled). Value should match on all OSPF routers from the same region. |
cost (integer: 1..65535; Default: 1) | interface cost expressed as link state metric |
dead-interval (time; Default: 40s) | specifies the interval after which a neighbor is declared as dead. This interval is advertised in hello packets. This value must be the same for all routers on a specific network, otherwise adjacency between them will not form |
hello-interval (time; Default: 10s) | the interval between hello packets that the router sends out this interface. The smaller this interval is, the faster topological changes will be detected, but more routing traffic will ensue. This value must be the same for all routers on a specific network, otherwise adjacency between them will not form |
interface (string | all; Default: all) | the interface name
|
network-type (broadcast | nbma | point-to-point | ptmp; Default: broadcast) | the OSPF network type on this interface. Note that if interface configuration does not exist, the default network type is 'point-to-point' on PTP interfaces, and 'broadcast' on all other interfaces.
|
passive (yes | no; Default: no) | if enabled, do not send or receive OSPF traffic on this interface |
priority (integer: 0..255; Default: 1) | router's priority. Used to determine the designated router in a broadcast network. The router with highest priority value takes precedence. Priority value 0 means the router is not eligible to become designated or backup designated router at all. |
retransmit-interval (time; Default: 5s) | time between retransmitting lost link state advertisements. When a router sends a link state advertisement (LSA) to its neighbor, it keeps the LSA until it receives back the acknowledgment. If it receives no acknowledgment in time, it will retransmit the LSA |
transmit-delay (time; Default: 1s) | link state transmit delay is the estimated time it takes to transmit a link state update packet on the interface |
Status
/routing ospf interface print status
will show additional information about used inerfaces
Property | Description |
---|---|
ip-address (IP address;) | Ip address assigned to this interface |
state (backup | designated-router;) | current interface state |
instance (instance name;) | OSPF instance that is using this interface |
area (area name;) | area to which interface is assigned |
neighbors (integer;) | count of OSPF neighbors found on this interface |
adjacent-neighbors (integer;) | count of OSPF neighbors found on this interface that have formed adjacencies |
designated-router (IP address;) | router-ID of elected designated router (DR) |
backup-designated-router (IP address;) | router-ID of elected backup designated router (BDR) |
NBMA Neighbor
Sub-menu: /routing ospf nbma-neighbor
Manual configuration for non-broadcast multi-access neighbors. Required only if interfaces with 'network-type=nbma' are configured.
Property | Description |
---|---|
address (IP address; Default: ) | the unicast IP address of the neighbor |
poll-interval (time; Default: 2m) | how often to send hello messages to neighbors which are in "down" state (i.e. there is no traffic from them) |
priority (integer: 0..255; Default: 0) | assumed priority value of neighbors which are in "down" state |
Virtual Link
Sub-menu: /routing ospf virtual-link
Description
As stated in OSPF RFC, the backbone area must be contiguous. However, it is possible to define areas in such a way that the backbone is no longer contiguous. In this case the system administrator must restore backbone connectivity by configuring virtual links. Virtual link can be configured between two routers through common area called transit area, one of them should have to be connected with backbone. Virtual links belong to the backbone. The protocol treats two routers joined by a virtual link as if they were connected by an unnumbered point-to-point network
Properties
Property | Description |
---|---|
authentication (none | simple | md5; Default: none) | specifies authentication method for OSPF protocol messages. |
authentication-key (string; Default: "") | authentication key to be used for simple or MD5 authentication |
authentication-key-id (integer; Default: 1) | lalala |
neighbor-id (IP address; Default: 0.0.0.0) | specifies router-id of the neighbour |
transit-area (string; Default: (unknown)) | a non-backbone area the two routers have in common |
Note
Virtual link should be configured on both routers. Virtual links can not be established through stub areas.
LSA
Sub-menu: /routing ospf lsa
Read only properties:
Property | Description |
---|---|
instance (string) | |
area (string) | |
type (string) | |
id (IP address) | |
originator (IP address) | |
sequence-number (string) | |
age (integerr) | |
checksum (string) | |
options (string) | |
body (string) |
Neighbor
Sub-menu: /routing ospf Neighbor
Read only properties:
Property | Description |
---|---|
router-id (IP address) | neighbor router's RouterID |
address (IP address) | IP address of neighbor router that is used to form OSPF connection |
interface (string) | interface that neighbor router is connected to |
priority (integer) | priority configured on neighbor |
dr-address (IP address) | IP address of Designated Router |
backup-dr-address (IP address) | IP address of Backup Designated Router |
state (down | attempt | init | 2-way | ExStart | Exchange | Loading | full) |
|
state-changes (integer) | Total count of OSPF state changes since neighbor identification |
ls-retransmits (integer) | |
ls-requests (integer) | |
db-summaries (integer) | |
adjacency (time) | Elapsed time since adjacency was formed |
OSPF Router
Sub-menu: /routing ospf ospf-router
List of all area border routers (ABRs).
Read only properties:
Property | Description |
---|---|
area (string) | |
router-id (IP address) | |
state (string) | |
gateway (IP address) | |
cost (integer) |
Route
Sub-menu: /routing ospf route
Read only properties:
Property | Description |
---|---|
instance (string) | Which OSPF instance route belongs to |
dst-address (IP prefix) | Destination prefix |
state (intra-area | inter-area | ext-1 | ext-2 | imported-ext-1 | imported-ext-2) | State representing origin of the route |
gateway (IP address) | used gateway |
interface (string) | used interface |
cost (integer) | Cost of the route |
area (external | backbone | <other area>) | Which OSPF area this route belongs to |
Sham link
Sub-menu: /routing ospf sham-link
Description
A sham-link is required between any two VPN sites that belong to the same OSPF area and share an OSPF backdoor link. If there is no intra-area link between the CE routers, you do not need to configure an OSPF sham link.
Sham link configuration example
Sham link must be configured on both sides.
For a sham link to be active, two conditions must be met:
- src-address is a valid local address with /32 netmask in OSPF instance's routing table.
- there is a valid route to dst-address in the OSPF instance's routing table.
When the sham link is active, hello packets are sent on it only until the neighbor reaches full state. After that, hello packet sending on the sham link is suppressed.
RouterOS does not support periodic LSA refresh suppression on sham-links yet, however.
Properties
Property | Description |
---|---|
area (area name) | name of area that shares an OSPF backdoor link |
cost (integer: 1..65535 ) | cost of the link |
dst-address (IP address) | loopback address of link's remote router |
src-address (IP address) | loopback address of link's local router |