配置 Junos OS 路由表
了解 Junos OS 路由表
Junos OS 会自动创建并维护多个路由表。每个路由表都有特定用途。除了这些自动创建的路由表之外,您还可以创建自己的路由表。
每个路由表填充转发表的一部分。因此,转发表基于路由表进行分区。这允许为每个路由表设置特定的转发行为。例如,对于 VPN,每个基于 VPN 的路由表在转转发表中都有其自己的特定于 VPN 的分区。
路由软件通常会在不同的路由表中维护单播路由和组播路由。您可能还出于策略方面的考虑,需要创建单独的路由表来管理路由信息的传播。
创建路由表是可选的。如果未创建任何路由表,Junos OS 将使用其默认路由表,如下所示:
inet.0 — 用于 IP 版本 4 (IPv4) 单播路由。此表存储接口本地路由和直接路由、静态路由和动态学习路由。
inet.1 — 用于 IPv4 组播转发缓存。此表存储根据联接状态信息动态创建的 IPv4 (S,G) 组条目。
inet.2 — 当启用多协议 BGP (MBGP) 时,对于后续地址族指示器 (SAFI) 2 路由。此表存储用于组播反向路径转发 (RPF) 查找的单播路由。此表中的路由可由距离矢量组播路由协议 (DVMRP) 使用,该协议需要特定的 RPF 表。相比之下,协议无关组播 (PIM) 不需要此表,因为它可以对 inet.0 表执行 RPF 检查。您可以使用路由信息库 (RIB) 组将路由从 inet.0 导入到 inet.2,也可以通过组播路由协议将路由直接安装到 inet.2 中。
inet.3 - 用于 IPv4 MPLS。此表存储 MPLS 标签交换路径 (LSP) 的出口地址、LSP 名称和传出接口名称。仅当本地设备是 LSP 的入口节点时,才使用此路由表。
inet6.0 — 用于 IP 版本 6 (IPv6) 单播路由。此表存储接口本地路由和直接路由、静态路由和动态学习路由。
inet6.1 — 用于 IPv6 组播转发缓存。此表存储根据联接状态信息动态创建的 IPv6 (S,G) 组条目。
-
inet6.2 — inet6.2 表通常与其他 IPv6 路由表结合使用,作为接口路由的默认路由表组的一部分,特别是在 PTX 路由器上。
-
inet6.3 — inet6.3 表用于存储已标记的 IPv6 路由。
instance-name.inet.0 - 如果配置路由实例,Junos OS 将创建默认单播路由表 instance-name.inet.0。
instance-name.inet.2 - 如果在 VRF 类型的路由实例中配置 路由实例 instance-name 协议 BGP 家族 inet 组播 ,则 Junos OS 将创建 instance-name.inet.2 表。
创建 .inet.2 表的instance-name另一种方法是使用
rib-group语句。请参阅示例:将特定路由从一个路由表导出到另一个路由表。注意:将 inet-vpn 组播路由从 bgp.l3vpn.2 表导入instance-name到 .inet.2 表不会创建 instance-name.inet.2 表。仅当 .inet.2 表已存在时instance-name,导入作才有效。
instance-name.inetflow.0 - 如果配置流路由,Junos OS 将创建流路由表 instance-name.inetflow.0。
bgp.l2vpn.0 - 用于从 BGP 获知的第 2 层 VPN 路由。此表存储从其他提供商边缘 (PE) 路由器获知的路由。基于目标社区,将第 2 层路由信息复制到第 2 层 VPN 路由和转发实例 (VRF) 中。
bgp.l3vpn.0 — 用于从 BGP 获知的第 3 层 VPN 路由。此表存储从其他 PE 路由器获知的路由。当存在匹配的路由表时,此表中的路由将复制到第 3 层 VRF 中。
l2circuit.0—对于从 LDP 获知的 l2 电路路由。此表中的路由用于发送或接收 l2circuit 信令消息。mpls.0 — 用于 MPLS 标签交换作。当本地设备是中转路由器时,使用此表。
iso.0 - 用于 IS-IS 路由。使用 IS-IS 支持 IP 路由时,此表仅包含本地设备的网络实体名称 (NET)。
juniper_private — 用于在 路由引擎 和 PIC 硬件之间进行内部通信的Junos OS。
-
l2xc.0 — 该表通过 SRv6 网络保存 Junos OS 中 CCC 和相关 2 层交换服务的第 2 层交叉连接路由。
-
lsdist.0 — Junos OS 中的表保存 BGP-LS NLRI,用作流量工程数据库与 BGP-LS 路由通告和接收之间的关键集成点。
-
vxlan.inet — 用于某些 QFX 平台上的 VXLAN 隧道作。此表存储通过 IP 网络到 VXLAN 隧道端点的可访问性。它用于 VXLAN 封装和解封装。
-
bgp.evpn0 - 用于 BGP EVPN 路由。此表存储通过 BGP 学习的用于 EVPN作的路由,包括 MAC 和 IP 地址绑定、包容性组播路由和以太网分段路由。
-
instance-name.evpn — 用于特定路由实例中的 EVPN 路由。配置 EVPN 路由实例时,Junos 和 EVO OS 会创建此表来存储特定于该实例的 EVPN 路由。
Junos OS 中的路由表功能
Junos OS 维护两个路由信息数据库:
路由表 — 包含所有路由协议获知的所有路由信息。(某些供应商将此类表称为路由信息库 (RIB)。
转发表 — 包含实际用于转发数据包的路由。(某些供应商将此类表称为转发信息库 (FIB)。
默认情况下,Junos OS 维护三个路由表:一个用于 IP 版本 4 (IPv4) 单播路由,第二个用于组播路由,第三个用于 MPLS。您可以配置其他路由表。
Junos OS 为 IPv4 和 IP 版本 6 (IPv6) 路由维护单独的路由表。
Junos OS 将路由表中的所有活动路由安装到转发表中。活动路由是用于将数据包转发到其目标的路由。Junos作系统内核维护转发表的主副本。它将转发表复制到数据包转发引擎,是负责转发数据包的组件。
Junos 路由协议进程通常通过选择优先级值最低的路由来确定活动路由。Junos OS 支持备用首选项和决胜首选项,并且某些路由协议(包括 BGP 和 MPLS)会使用这些附加首选项。
您可以将 martian 地址以及静态路由、聚合路由和生成路由添加到 Junos 路由表中,并使用 表 1 中所示的一个或多个属性配置路由。
描述 |
静态的 |
骨料 |
生成 |
|---|---|---|---|
目标地址 |
X |
X |
X |
到目标的默认路由 |
X |
X |
X |
到目标的下一跃点的 IP 地址或接口 |
X |
– |
– |
将标签交换路径 (LSP) 作为下一跃点 |
X |
– |
– |
丢弃数据包,安装此目标的拒绝路由,然后发送互联网控制信息协议 (ICMP) 无法访问的消息 |
X |
X |
X |
丢弃数据包,安装此目标的拒绝路由,但不要发送无法访问的 ICMP 消息 |
X |
X |
X |
使本地路由器接收数据包 |
X |
– |
– |
将指标值与路由相关联 |
X |
X |
X |
路由类型 |
X |
X |
X |
首选项值 |
X |
X |
X |
其他首选项值 |
X |
X |
X |
独立优先级(限定下一跃点 语句) |
X |
– |
– |
要与路由关联的 BGP 社区信息 |
X |
X |
X |
要与路由关联的自治系统 (AS) 路径信息 |
X |
X |
X |
要与路由关联的 OSPF 标记字符串 |
X |
X |
X |
请勿将活动静态路由安装到转转发表中 |
X |
– |
– |
将路由安装到转转发表中 |
X |
– |
– |
在转转发表中永久保留静态路由 |
X |
– |
– |
仅包括参与 AS 路径的最长公共前导序列 |
– |
X |
– |
包括特定路由的所有 AS 编号 |
– |
X |
– |
在路由表和转发表中保留非活动路由 |
X |
X |
X |
从路由表和转发表中移除非活动路由 |
X |
X |
X |
要与路由关联的活动策略 |
– |
X |
X |
指定路由不符合重新播发条件 |
X |
– |
– |
指定路由到不是直接连接下一跃点的前缀 |
X |
– |
– |
了解 PTX 路由器上接口路由的默认路由表组
在 PTX 系列数据包传输路由器上,默认接口路由路由表组与其他 Junos OS 路由设备的组不同。
PTX 系列路由器是执行 IP 转发的 MPLS 传输平台,通常使用内部网关协议 (IGP) 路由。接口路由是直接连接路由和本地路由。
PTX 系列路由器与其他 Junos OS 路由设备的不同之处在于,它们强制执行间接下一跃点解析。PTX 系列路由器需要解析间接下一跃点才能创建链式复合下一跃点。这可能会导致在下一跃点类型不可用时隐藏路由。
为防止路由被隐藏,PTX 系列平台会自动将 inet.0 中的路由复制到 inet.2 和 inet.3 中,并将 inet6.0 中的路由复制到 inet6.2 和 inet6.3 中。
PTX 系列路由器上的默认接口路由表配置如下:
user@host# show routing-options | display inheritance defaults
##
## 'interface-routes' was inherited from group 'junos-defaults'
##
interface-routes {
##
## 'rib-group' was inherited from group 'junos-defaults'
##
rib-group {
##
## 'junos-ifrg-inet0-to-inet2-and-inet3' was inherited from group 'junos-defaults'
##
inet junos-ifrg-inet0-to-inet2-and-inet3;
##
## 'junos-ifrg-inet60-to-inet62-and-inet63' was inherited from group 'junos-defaults'
##
inet6 junos-ifrg-inet60-to-inet62-and-inet63;
}
}
rib-groups {
##
## 'junos-ifrg-inet0-to-inet2-and-inet3' was inherited from group 'junos-defaults'
##
junos-ifrg-inet0-to-inet2-and-inet3 {
##
## 'inet.0' was inherited from group 'junos-defaults'
## 'inet.2' was inherited from group 'junos-defaults'
## 'inet.3' was inherited from group 'junos-defaults'
##
import-rib [ inet.0 inet.2 inet.3 ];
}
##
## 'junos-ifrg-inet60-to-inet62-and-inet63' was inherited from group 'junos-defaults'
##
junos-ifrg-inet60-to-inet62-and-inet63 {
##
## 'inet6.0' was inherited from group 'junos-defaults'
## 'inet6.2' was inherited from group 'junos-defaults'
## 'inet6.3' was inherited from group 'junos-defaults'
##
import-rib [ inet6.0 inet6.2 inet6.3 ];
}
}
另见
示例:创建路由表
此示例说明如何创建自定义路由表。
要求
在此示例中,除了设备初始化之外,不需要任何特殊配置。
概述
创建路由表是可选的。出于策略方面的考虑,您可能需要创建单独的路由表来管理路由信息的传播。此功能很少使用,但为了完整起见,本文进行了演示。
如果不创建任何路由表,Junos OS 将使用其默认路由表。
如果只想将静态、聚合、生成或火星路由添加到默认 IPv4 单播路由表 (inet.0),则无需创建任何路由表,因为默认情况下,这些路由会添加到 inet.0 中。您可以通过添加 static、 aggregate、 generate 和 martians 语句来添加这些路由。
要显式创建路由表,请在语句下rib包含语rib句和子语句。
路由表名称 routing-table-name包括协议家族,可以选择后跟句点和数字。IPv4 家族的协议家族可以 是 inet,IPv6 家族的 inet6 或者是国际标准组织 (ISO) 协议家族的 iso 。数字表示路由实例。第一个实例为 0。
此示例说明如何配置名为 inet.14 的自定义 IPv4 路由表。该示例还演示如何使用单个静态路由填充路由表。
在EX 系列交换机上,只能将动态学习的路由从一个路由表组导入到另一个组。
配置
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到层 [edit] 级的 CLI 中。
set routing-options rib inet.14 static route 10.2.0.0/16 discard
程序
分步过程
下面的示例要求您在各个配置层级中进行导航。有关 CLI 导航的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要创建路由表,请执行以下作:
配置路由表。
[edit routing-options] user@host# set rib inet.14 static route 10.2.0.0/16 discard
如果完成设备配置,请提交配置。
[edit] user@host# commit
结果
发出 show routing-options 命令,确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。
user@host# show routing-options
rib inet.14 {
static {
route 10.2.0.0/16 discard;
}
}
示例:将特定路由从一个路由表导出到另一个路由表
此示例说明如何将特定路由从一个路由表复制到同一路由实例中的另一个路由表。
要求
配置此示例之前,不需要除设备初始化之外的特殊配置。
概述
此示例使用 auto-export 语句和语 rib-group 句来实现将特定路由从一个路由表导出到另一个路由表的目标。
请考虑以下几点:
在路由实例中配置 自动导出 时,将检查 vrf 导入 和 vrf 导出 策略。 自动导出 功能根据策略中的路由目标和社区信息,在本地路由实例 inet.0 表之间执行路由泄漏。
如果需要将路由导入到 .inet.0 以外的instance表中,则可以使用该
rib-group语句。要使用具有自动导出功能的 RIB 组,路由实例应指定显式 vrf 导入和 vrf 导出策略。vrf-import 和 vrf-export 策略可以扩展为包含附加术语,以根据 RIB 组的需要过滤路由。
在此示例中,访问内部路由将添加到 vpna.inet.0 路由表中。内部访问路由也会复制到 vpna.inet.2 路由表中。
配置
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到层 [edit] 级的 CLI 中。
set interfaces fe-1/3/1 vlan-tagging set interfaces fe-1/3/1 unit 0 vlan-id 512 set interfaces fe-1/3/1 unit 0 family inet address 10.168.100.3/24 set interfaces lo0 unit 0 family inet address 192.168.3.3/32 set routing-options rib-groups rib-group-vpna-access-internal import-rib vpna.inet.2 set routing-options autonomous-system 63000 set policy-options policy-statement vpna-export term a from protocol bgp set policy-options policy-statement vpna-export term a then community add vpna-comm set policy-options policy-statement vpna-export term a then accept set policy-options policy-statement vpna-export term b from protocol access-internal set policy-options policy-statement vpna-export term b then accept set policy-options policy-statement vpna-export term c then reject set policy-options policy-statement vpna-import term a from protocol bgp set policy-options policy-statement vpna-import term a from community vpna-comm set policy-options policy-statement vpna-import term a then accept set policy-options policy-statement vpna-import term b from instance vpna set policy-options policy-statement vpna-import term b from protocol access-internal set policy-options policy-statement vpna-import term b then accept set policy-options policy-statement vpna-import term c then reject set policy-options community vpna-comm members target:63000:100 set routing-instances vpna instance-type vrf set routing-instances vpna interface fe-1/3/1.1 set routing-instances vpna route-distinguisher 100:1 set routing-instances vpna vrf-import vpna-import set routing-instances vpna vrf-export vpna-export set routing-instances vpna routing-options auto-export family inet unicast rib-group rib-group-vpna-access-internal set routing-instances vpna protocols bgp group bgp-vpna type external set routing-instances vpna protocols bgp group bgp-vpna family inet multicast set routing-instances vpna protocols bgp group bgp-vpna peer-as 100 set routing-instances vpna protocols bgp group bgp-vpna neighbor 10.0.0.10
在路由表之间配置特定路由导出
分步过程
下面的示例要求您在各个配置层级中进行导航。有关作说明,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要配置设备,请执行以下作:
配置接口。
[edit interfaces fe-1/3/1] user@host# set vlan-tagging user@host# set unit 0 vlan-id 512 user@host# set unit 0 family inet address 10.168.100.3/24 [edit interfaces lo0 unit 0] user@host# set family inet address 192.168.3.3/32
-
配置路由策略,指定导入到 vpna.inet.0 和从 vpna.inet.0 导出的特定路由。
[edit policy-options policy-statement vpna-export] user@host# set term a from protocol bgp user@host# set term a then community add vpna-comm user@host# set term a then accept user@host# set term b from protocol access-internal user@host# set term b then accept user@host# set term c then reject [edit policy-options policy-statement vpna-import] user@host# set term a from protocol bgp user@host# set term a from community vpna-comm user@host# set term a then accept user@host# set term b from instance vpna user@host# set term b from protocol access-internal user@host# set term b then accept user@host# set term c then reject [edit policy-options] user@host# set community vpna-comm members target:63000:100
-
配置路由实例。
[edit routing-instances vpna] user@host# set instance-type vrf user@host# set interface fe-1/3/1.1 user@host# set route-distinguisher 100:1 user@host# set vrf-import vpna-import user@host# set vrf-export vpna-export
vrf-import 和
vrf-export语句用于应用 vpna-import 和 vpna-export 路由策略。 配置 RIB 组,并将路由导入到 vpna.inet.2 路由表中。
[edit routing-options] user@host# set rib-groups rib-group-vpna-access-internal import-rib vpna.inet.2
配置
auto-export语句,使路由能够从一个路由表导出到另一个。[edit routing-options] user@host# set auto-export family inet unicast rib-group rib-group-vpna-access-internal
配置 BGP。
[edit routing-instances vpna protocols bgp group bgp-vpna] user@host# set type external user@host# set family inet multicast user@host# set peer-as 100 user@host# set neighbor 100.0.0.10
配置自治系统 (AS) 编号。
[edit routing-options] user@host# set autonomous-system 63000
结果
在配置模式下,输入show interfaces、show policy-optionsshow routing-options、和show routing-instances命令,以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。
user@host# show interfaces
fe-1/3/1 {
vlan-tagging;
unit 0 {
vlan-id 512;
family inet {
address 10.168.100.3/24;
}
}
}
lo0 {
unit 0 {
family inet {
address 192.168.3.3/32;
}
}
}
user@host# show policy-options
policy-statement vpna-export {
term a {
from {
protocol bgp;
}
then {
community add vpna-comm;
accept;
}
}
term b {
from protocol access-internal;
then accept;
}
term c {
then reject;
}
}
policy-statement vpna-import {
term a {
from {
protocol bgp;
community vpna-comm;
}
then accept;
}
term b {
from {
instance vpna;
protocol access-internal;
}
then accept;
}
term c {
then reject;
}
}
community vpna-comm members target:63000:100;
user@host# show routing-options
rib-groups {
rib-group-vpna-access-internal {
import-rib vpna.inet.2;
}
}
autonomous-system 63000;
user@host# show routing-instances
vpna {
instance-type vrf;
interface fe-1/3/1.1;
route-distinguisher 100:1;
vrf-import vpna-import;
vrf-export vpna-export;
routing-options {
auto-export {
family inet {
unicast {
rib-group rib-group-vpna-access-internal;
}
}
}
}
protocols {
bgp {
group bgp-vpna {
type external;
family inet {
multicast;
}
peer-as 100;
neighbor 100.0.0.10;
}
}
}
}
如果完成设备配置,请从配置模式进入 提交 。
验证
运行 show table route vpna.inet.0 和 show route table vpna.inet.2 命令,确认配置工作正常。