Doc: SADR documentation
This commit is contained in:
parent
7a8ae228f9
commit
159d619caf
1 changed files with 46 additions and 15 deletions
|
@ -293,6 +293,20 @@ routes are:
|
||||||
<item>Route next hops (see below)
|
<item>Route next hops (see below)
|
||||||
</itemize>
|
</itemize>
|
||||||
|
|
||||||
|
<sect1>IPv6 source-specific routes
|
||||||
|
<label id="ip-sadr-routes">
|
||||||
|
|
||||||
|
<p>The IPv6 routes containing both destination and source prefix. They are used
|
||||||
|
for source-specific routing (SSR), also called source-address dependent routing
|
||||||
|
(SADR), see <rfc id="8043">. Currently limited mostly to the Babel protocol.
|
||||||
|
Configuration keyword is <cf/ipv6 sadr/.
|
||||||
|
|
||||||
|
<itemize>
|
||||||
|
<item>(PK) Route destination (IP prefix together with its length)
|
||||||
|
<item>(PK) Route source (IP prefix together with its length)
|
||||||
|
<item>Route next hops (see below)
|
||||||
|
</itemize>
|
||||||
|
|
||||||
<sect1>VPN IPv4 and IPv6 routes
|
<sect1>VPN IPv4 and IPv6 routes
|
||||||
<label id="vpn-routes">
|
<label id="vpn-routes">
|
||||||
|
|
||||||
|
@ -1239,6 +1253,12 @@ foot).
|
||||||
pair, and <cf/.len/, which separates prefix length from the pair.
|
pair, and <cf/.len/, which separates prefix length from the pair.
|
||||||
So <cf>1.2.0.0/16.len = 16</cf> is true.
|
So <cf>1.2.0.0/16.len = 16</cf> is true.
|
||||||
|
|
||||||
|
<cf/NET_IP6_SADR/ nettype holds both destination and source IPv6
|
||||||
|
prefix. The literals are written as <cf><m/ipaddress//<m/pxlen/ from
|
||||||
|
<m/ipaddress//<m/pxlen/</cf>, where the first part is the destination
|
||||||
|
prefix and the second art is the source prefix. They support the same
|
||||||
|
operators as IP prefixes, but just for the destination part.
|
||||||
|
|
||||||
<cf/NET_VPN4/ and <cf/NET_VPN6/ prefixes hold an IP prefix with VPN
|
<cf/NET_VPN4/ and <cf/NET_VPN6/ prefixes hold an IP prefix with VPN
|
||||||
Route Distinguisher (<rfc id="4364">). They support the same special
|
Route Distinguisher (<rfc id="4364">). They support the same special
|
||||||
operators as IP prefixes, and also <cf/.rd/ which extracts the Route
|
operators as IP prefixes, and also <cf/.rd/ which extracts the Route
|
||||||
|
@ -1459,6 +1479,7 @@ foot).
|
||||||
lclists, with LCs instead of pairs as arguments.
|
lclists, with LCs instead of pairs as arguments.
|
||||||
</descrip>
|
</descrip>
|
||||||
|
|
||||||
|
|
||||||
<sect>Operators
|
<sect>Operators
|
||||||
<label id="operators">
|
<label id="operators">
|
||||||
|
|
||||||
|
@ -1651,19 +1672,25 @@ cases desirable.
|
||||||
routes over the same IPv6 transport. For sending and receiving Babel packets,
|
routes over the same IPv6 transport. For sending and receiving Babel packets,
|
||||||
only a link-local IPv6 address is needed.
|
only a link-local IPv6 address is needed.
|
||||||
|
|
||||||
<p>BIRD does not implement any Babel extensions, but will coexist with
|
<p>BIRD implements an extension for IPv6 source-specific routing (SSR or SADR),
|
||||||
implementations using extensions (and will just ignore extension messages).
|
but must be configured accordingly to use it. SADR-enabled Babel router can
|
||||||
|
interoperate with non-SADR Babel router, but the later would ignore routes
|
||||||
|
with specific (non-zero) source prefix.
|
||||||
|
|
||||||
<sect1>Configuration
|
<sect1>Configuration
|
||||||
<label id="babel-config">
|
<label id="babel-config">
|
||||||
|
|
||||||
<p>Babel supports no global configuration options apart from those common to all
|
<p>The Babel protocol support both IPv4 and IPv6 channels; both can be
|
||||||
other protocols, but supports the following per-interface configuration options:
|
configured simultaneously. It can also be configured with <ref
|
||||||
|
id="ip-sadr-routes" name="IPv6 SADR"> channel instead of regular IPv6
|
||||||
|
channel, in such case SADR support is enabled. Babel supports no global
|
||||||
|
configuration options apart from those common to all other protocols, but
|
||||||
|
supports the following per-interface configuration options:
|
||||||
|
|
||||||
<code>
|
<code>
|
||||||
protocol babel [<name>] {
|
protocol babel [<name>] {
|
||||||
ipv4 { <channel config> };
|
ipv4 { <channel config> };
|
||||||
ipv6 { <channel config> };
|
ipv6 [sadr] { <channel config> };
|
||||||
interface <interface pattern> {
|
interface <interface pattern> {
|
||||||
type <wired|wireless>;
|
type <wired|wireless>;
|
||||||
rxcost <number>;
|
rxcost <number>;
|
||||||
|
@ -1683,8 +1710,8 @@ protocol babel [<name>] {
|
||||||
</code>
|
</code>
|
||||||
|
|
||||||
<descrip>
|
<descrip>
|
||||||
<tag><label id="babel-channel">ipv4|ipv6 <m/channel config/</tag>
|
<tag><label id="babel-channel">ipv4 | ipv6 [sadr] <m/channel config/</tag>
|
||||||
The supported channels are IPv4 and IPv6.
|
The supported channels are IPv4, IPv6, and IPv6 SADR.
|
||||||
|
|
||||||
<tag><label id="babel-type">type wired|wireless </tag>
|
<tag><label id="babel-type">type wired|wireless </tag>
|
||||||
This option specifies the interface type: Wired or wireless. On wired
|
This option specifies the interface type: Wired or wireless. On wired
|
||||||
|
@ -2124,7 +2151,7 @@ using the following configuration parameters:
|
||||||
but in such cases you need to tweak the BGP paths manually in the filters
|
but in such cases you need to tweak the BGP paths manually in the filters
|
||||||
to get consistent behavior.) Optional <cf/ip/ argument specifies a source
|
to get consistent behavior.) Optional <cf/ip/ argument specifies a source
|
||||||
address, equivalent to the <cf/source address/ option (see below).
|
address, equivalent to the <cf/source address/ option (see below).
|
||||||
Optional </cf/port> argument specifies the local BGP port instead of
|
Optional <cf/port/ argument specifies the local BGP port instead of
|
||||||
standard port 179. The parameter may be used multiple times with
|
standard port 179. The parameter may be used multiple times with
|
||||||
different sub-options (e.g., both <cf/local 10.0.0.1 as 65000;/ and
|
different sub-options (e.g., both <cf/local 10.0.0.1 as 65000;/ and
|
||||||
<cf/local 10.0.0.1; local as 65000;/ are valid). This parameter is
|
<cf/local 10.0.0.1; local as 65000;/ are valid). This parameter is
|
||||||
|
@ -2745,16 +2772,17 @@ protocol device {
|
||||||
<p>The Direct protocol is a simple generator of device routes for all the
|
<p>The Direct protocol is a simple generator of device routes for all the
|
||||||
directly connected networks according to the list of interfaces provided by the
|
directly connected networks according to the list of interfaces provided by the
|
||||||
kernel via the Device protocol. The Direct protocol supports both IPv4 and IPv6
|
kernel via the Device protocol. The Direct protocol supports both IPv4 and IPv6
|
||||||
channels.
|
channels; both can be configured simultaneously. It can also be configured with
|
||||||
|
<ref id="ip-sadr-routes" name="IPv6 SADR"> channel instead of regular IPv6
|
||||||
|
channel in order to be used together with SADR-enabled Babel protocol.
|
||||||
|
|
||||||
<p>The question is whether it is a good idea to have such device routes in BIRD
|
<p>The question is whether it is a good idea to have such device routes in BIRD
|
||||||
routing table. OS kernel usually handles device routes for directly connected
|
routing table. OS kernel usually handles device routes for directly connected
|
||||||
networks by itself so we don't need (and don't want) to export these routes to
|
networks by itself so we don't need (and don't want) to export these routes to
|
||||||
the kernel protocol. OSPF protocol creates device routes for its interfaces
|
the kernel protocol. OSPF protocol creates device routes for its interfaces
|
||||||
itself and BGP protocol is usually used for exporting aggregate routes. Although
|
itself and BGP protocol is usually used for exporting aggregate routes. But the
|
||||||
there are some use cases that use the direct protocol (like abusing eBGP as an
|
Direct protocol is necessary for distance-vector protocols like RIP or Babel to
|
||||||
IGP routing protocol), in most cases it is not needed to have these device
|
announce local networks.
|
||||||
routes in BIRD routing table and to use the direct protocol.
|
|
||||||
|
|
||||||
<p>There is one notable case when you definitely want to use the direct protocol
|
<p>There is one notable case when you definitely want to use the direct protocol
|
||||||
-- running BIRD on BSD systems. Having high priority device routes for directly
|
-- running BIRD on BSD systems. Having high priority device routes for directly
|
||||||
|
@ -2829,8 +2857,10 @@ kernel protocols to the same routing table and changing route destination
|
||||||
(gateway) in an export filter of a kernel protocol does not work. Both
|
(gateway) in an export filter of a kernel protocol does not work. Both
|
||||||
limitations can be overcome using another routing table and the pipe protocol.
|
limitations can be overcome using another routing table and the pipe protocol.
|
||||||
|
|
||||||
<p>The Kernel protocol supports both IPv4 and IPv6 channels; only one of them
|
<p>The Kernel protocol supports both IPv4 and IPv6 channels; only one channel
|
||||||
can be configured in each protocol instance.
|
can be configured in each protocol instance. On Linux, it also supports <ref
|
||||||
|
id="ip-sadr-routes" name="IPv6 SADR"> and <ref id="mpls-routes" name="MPLS">
|
||||||
|
channels.
|
||||||
|
|
||||||
<sect1>Configuration
|
<sect1>Configuration
|
||||||
<label id="krt-config">
|
<label id="krt-config">
|
||||||
|
@ -4281,6 +4311,7 @@ protocol rip {
|
||||||
|
|
||||||
|
|
||||||
<sect>RPKI
|
<sect>RPKI
|
||||||
|
<label id="rpki">
|
||||||
|
|
||||||
<sect1>Introduction
|
<sect1>Introduction
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue