配置 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) 组条目。
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 表。
创建 instance-name.inet.2 表的另一种方法是使用该
rib-group
语句。请参阅 示例:将特定路由从一个路由表导出到另一个路由表。注意:将 bgp.l3vpn.2 表中instance-name的 inet-vpn 组播路由导入 .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 电路路由。此表中的路由用于发送或接收 l2 电路信令消息。mpls.0 — 用于 MPLS 标签交换操作。当本地设备是传输路由器时,使用此表。
iso.0 — IS-IS 路由。使用 IS-IS 支持 IP 路由时,此表仅包含本地设备的网络实体标题 (NET)。
juniper_private — 使 Junos OS 能够在路由引擎和 PIC 硬件之间进行内部通信。
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 在内的一些路由协议使用这些附加首选项。
您可以将火星地址和静态、聚合和生成的路由添加到 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 会使用其默认路由表。
如果只想将静态、聚合、生成或 martian 路由添加到默认 IPv4 单播路由表 (inet.0),则无需创建任何路由表,因为默认情况下,这些路由已添加到 inet.0 中。您可以通过添加 静态、 聚合、 生成和 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 表中执行路由泄漏。
如果需要将
rib-group
路由导入 .inet.0 以外的 instance表中,您可以使用该语句。要使用具有 自动导出功能的 RIB 组,路由实例应指定显式 vrf 导入 和 vrf 导出 策略。 vrf 导入 和 vrf 导出 策略可以扩展为包含附加条款,以便根据 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 导入和
vrf-export
语句用于应用 vpna 导入和 vpna 导出路由策略。 配置 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-options
、 show 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 route table vpna.inet.2
命令,show table route vpna.inet.0
确认配置工作正常。