本页内容
配置路由聚合
了解路由聚合
路由聚合方法通过将所选的多个路由整合到单个路由播发中,帮助将 IP 网络中路由表的数量降至最低。这种方法与非聚合路由不同,非聚合路由中的每个路由表都包含每个路由的唯一条目。聚合方法无助于减小进行聚合的路由器上路由表的大小。配置仅播发聚合而非参与路由的导出策略时,即可对接收更新的路由器产生聚合效果。
当聚合路由有一个或多个起作用的路由时,该 路由将变为活动状态。参与路由是活动路由,与聚合目标更具体地匹配。例如,对于聚合目标 192.168.0.0/16
、到达 192.168.192.0/19
和 192.168.67.0/24
正在参与路由的路由,但到达 192.168.0.0./8
和 192.168.0.0/16
不。
一个路由只能与单个聚合路由有关。但是,活动聚合路由可能会递归导致不太具体的匹配聚合路由。例如,到目标的 192.168.0.0/16
聚合路由可以促成到 192.168.0.0/13
的聚合路由。
聚合路由处于活动状态时,将它安装在路由表中,并提供以下信息:
拒绝下一跃点 — 如果更具体的数据包与更具体的路由不匹配,则数据包将被拒绝,并将 ICMP 无法访问的消息发送至数据包的发起方。
使用
aggregate
语句配置的指标值。如果指定了过滤器,则由主要参与者的策略过滤器产生的优先级值。
语句中
aggregate
配置的 AS 路径(如果有)。否则,该路径会通过聚合所有起作用路由的路径来计算。如果指定了任何,则按
aggregate
语句中配置的社区。注意:您只能为每个目标前缀配置一个聚合路由。
要配置默认路由表 ()inet.0
中的聚合路由,请 aggregate
添加以下语句:
aggregate { defaults { ... aggregate-options ... } route destination-prefix { policy policy-name; ... aggregate-options ... } }
要配置其他路由表中的聚合路由,或在默认路由表 ()inet.0
中显式配置聚合路由,请添加以下 aggregate
语句:
rib routing-table-name { aggregate { defaults { ... aggregate-options ... } route destination-prefix { policy policy-name; ... aggregate-options ... } } }
您不能为 IPv4 组播路由表 (inet.1) 或 IPv6 组播路由表 (inet6.1) 配置聚合路由。
该 aggregate
语句由两部分组成:
defaults
-(可选)在这里指定全局聚合路由选项。这些路由被视为全局默认值,并应用于您在语句中aggregate
配置的所有聚合路由。route
-您可以在这里配置各个聚合路由。在语句的aggregate
这一部分,您可以选择配置聚合路由选项。这些选项仅适用于单个目标,并覆盖您在defaults
语句部分aggregate
配置的任何选项。
在语句部分配置单个聚合路由route
aggregate
时,请通过以下方式之一指定路由的目标 (inroute destination-prefix
):
network/mask-length
,其中network
是 IP 地址的网络部分,mask-length
也是目标前缀长度。default
如果这是到目标的默认路由这相当于将 IP 地址指定为0.0.0.0/0
。
配置聚合路由后,可以通过配置然后由路由协议导出的策略来让协议播发路由。
在语句部分aggregate
配置聚合路由的目标前缀routes
时,您可以关联路由策略。这样做相当于目标前缀的导入路由策略过滤器。也就是说,聚合路由的每个潜在贡献者以及任何聚合选项都会通过策略过滤器进行传递。然后,策略可以接受或拒绝作为聚合路由的贡献者路由,如果接受该贡献者,策略可以修改默认首选项。
以下算法用于比较两个聚合贡献路由,以确定哪一个是主要或首选贡献者:
比较协议
preferences
的参与路由。优先级越低,路由越好。这与确定路由表最佳路由时进行的比较类似。比较协议
preferences2
的参与路由。优先级 2 值越低越好。如果只有一个路由,preferences2
则此路由首选。优先级值相同。继续对前缀值进行数字比较。
主要贡献者是数字上最小的前缀值。
如果两个前缀的数字相等,则主要贡献者为具有最小前缀长度值的路由。
此时,两个路由是相同的。主要贡献者不会改变。现有主要贡献者还有一个附加的下一跃点。
被拒绝的贡献者仍然可以促成不太具体的聚合路由。如果未指定策略过滤器,则所有候选路由都与聚合路由有关。
要将路由策略与聚合路由相关联,配置 policy
路由时请添加语句:
aggregate (defaults | route) { policy policy-name; }
在defaults
语句和route
部分aggregate
,您可以指定aggregate-options
,以定义有关路由安装到路由表中时随路由一起附带的聚合路由的更多信息。所有聚合选项均可选。您在语句部分aggregate
指定的defaults
聚合选项将被视为全局默认值,并应用于您在语句中aggregate
配置的所有聚合路由。您在语句部分aggregate
指定的route
聚合选项将覆盖所有全局聚合选项,并且仅应用于该目标。
要配置聚合路由选项,请在语句的或defaults
route
部分aggregate
添加一个或多个选项:
[edit] routing-options { aggregate { (defaults | route) { (active | passive); as-path <as-path> <origin (egp | igp | incomplete)> <atomic-aggregate> <aggregator as-number in-address>; community [ community-ids ]; discard; (brief | full); (metric | metric2 | metric3 | metric4) metric <type type>; (preference | preference2 | color | color2) preference <type type>; tag metric type number; } } }
- 为聚合路由配置指标值
- 为聚合路由配置优先级值
- 为聚合路由配置下一跃点
- 将 BGP 社区与聚合路由相关联
- 将 AS 路径与聚合路由相关联
- 在聚合路由路径中包含 AS 编号
- 为聚合路由配置标记值
- 控制路由和转发表中非活动聚合路由的保留
为聚合路由配置指标值
最多可指定四个指标值,从(对于第一个指标值)开始metric
,然后继续metric2
metric3
,并通过metric4
包括以下一个或多个语句:
aggregate (defaults | route) { (metric | metric2 | metric3 | metric4) metric <type type>; }
有关可包括这些语句的层次结构级别列表,请参阅这些语句的语句摘要部分。
在选项中 type
,您可以指定路由类型。
为聚合路由配置优先级值
默认情况下,聚合路由的优先级值为 130。如果路由表包含到目标的动态路由,其优先级值比此优先级更好(较低),则动态路由将被选为活动路由并安装在转发表表中。
要修改默认优先级值,请指定主要优先级值 (preference
)。您还可以指定辅助优先级值 (preference2
);和颜色,这些甚至更细粒度的优先级值(color
和 color2
)。为此,请包括以下一个或多个语句:
aggregate (defaults | route) { (preference | preference2 | color | color2) preference <type type>; }
有关可包括这些语句的层次结构级别列表,请参阅这些语句的语句摘要部分。
优先级值可以是 0 到 4,294,967,295 (232 – 1) 范围内的数字,编号越低,表示更首选的路由。有关优先级值的更多信息,请参阅 路由首选项概述。
在选项中 type
,您可以指定路由类型。
为聚合路由配置下一跃点
默认情况下,当聚合路由安装在路由表中时,下一跃点配置为拒绝路由。也就是说,数据包被拒绝,并将 ICMP 无法访问的消息发送至数据包的发起方。
在语句部分aggregate
配置单个路由route
时,或者为聚合路由配置默认值时,可以指定丢弃下一跃点。这意味着,如果更具体的数据包与更具体的路由不匹配,则数据包将被拒绝,并且路由表中会安装此目标的拒绝路由,但不会发送 ICMP 无法访问的消息。
由于能够丢弃下一跃点,因此您可以发起一个可以通过动态路由协议播发的摘要路由,并允许丢弃与比汇总路由更具体路由不匹配的接收流量。要丢弃下一跃点,请 discard
包括以下选项:
discard;
有关可包含此语句的层次结构级别列表,请参阅此语句的语句摘要部分。
将 BGP 社区与聚合路由相关联
默认情况下,没有 BGP 社区信息与聚合路由相关联。要使社区信息与路由相关联,请包括以下 community
选项:
aggregate (defaults | route) { community [ community-ids ]; }
有关可包含此语句的层次结构级别列表,请参阅此语句的语句摘要部分。 community-value
是社区标识符,可以是 0 到 65,535 范围内的数字。
community-ids
是社区或扩展社区的一个或多个社区标识符。
社区标识符的格式为:
as-number:community-value
as-number
是 AS 编号,可以是 1 到 65,534 范围内的值。
您还可以将社区指定 community-ids
为 RFC 1997 中定义的以下知名社区名称之一:
no-export
— 包含此社区名称的路由不会在 BGP 联合体边界之外播发。no-advertise
— 包含此社区名称的路由不会播发给其他 BGP 对等方。no-export-subconfed
— 包含此社区名称的路由不会播发至外部 BGP 对等方,包括 BGP 联合体内其他成员 AS 中的对等方。
您可以使用选项使用聚合路由none
显式排除 BGP 社区信息。none
在语句部分aggregate
配置单个路由route
以覆盖community
语句部分指定的defaults
选项时包括。
层级不支持 [edit routing-options]
扩展社区属性。您必须在 [edit policy-options]
层次结构级别配置扩展社区。有关配置扩展社区的信息,请参阅 路由策略、防火墙过滤器和流量监管器用户指南中的“配置扩展社区属性”部分。有关配置 4 字节 AS 编号和扩展社区的信息,请参阅 在 BGP 网络中使用 4 字节自治系统编号。
将 AS 路径与聚合路由相关联
默认情况下,聚合路由的 AS 路径基于组件路由构建。要手动指定 AS 路径并将 AS 路径信息与路由关联,请包括以下 as-path
选项:
aggregate (defaults | route) { as-path <as-path> <origin (egp | igp | incomplete)> <atomic-aggregate> <aggregator as-number in-address>; }
有关可包含此语句的层次结构级别列表,请参阅此语句的语句摘要部分。
as-path
是要随路由一起的 AS 路径。它可以包含单个 AS 路径编号和 AS 集的组合。将集括在方括号 ( [ ] ) 中。路径中的第一个 AS 编号表示紧邻本地 AS 的 AS。每个后续编号表示一个 AS,该 AS 会逐渐远离本地 AS,朝路径的原点前进。
在 Junos OS 9.1 及更高版本中,如 RFC 4893( BGP 对四字节 AS 编号空间的支持)中定义的,数字 AS 范围得到了扩展,可为 4 字节 AS 编号提供 BGP 支持。对于 AS 编号,可以配置一个从 1 到 4,294,967,295 的值。所有 Junos OS 版本都支持 2 字节 AS 编号。2 字节 AS 编号范围为 1 到 65,535(这是 4 字节范围的子集)。
在 Junos OS 9.2 及更高版本中,您还可以使用 AS 点符号格式(两个整数值加一个句点)配置 4 字节 AS 编号:<16-bit high-order value in decimal>.<16-bit low-order value in decimal>。例如,以纯数字格式表示的 4 字节 AS 编号 65,546 以 AS 点符号格式表示为 1.10。您可以以 AS 点符号格式指定 0.0 到 65535.65535 范围内的值。
您还可以使用 BGP 源属性指定 AS 路径,该属性指示 AS 路径信息的来源:
egp
-路径信息源自其他 AS。igp
-路径信息源自本地 AS。incomplete
-通过一些其他方式学习路径信息。
要将 BGP ATOMIC_AGGREGATE
路径属性连接到聚合路由,请 atomic-aggregate
指定选项。此路径属性表示本地系统选择了不太具体的路由,而不是更具体的路由。
要将 BGP AGGREGATOR
路径属性连接到聚合路由,请 aggregator
指定选项。使用此选项时,必须指定构成聚合路由的最后一个 AS 编号(编码为两个八位位组),然后指定构成聚合路由的 BGP 系统的 IP 地址。
从 Junos OS 13.2R1 开始,当聚合路由的 AS 路径(基于起作用路由构建)超过最大 BGP 数据包大小的一半(4096 字节)时,BGP 路由将隐藏。例如,AS 路径会为其设置溢出 ASPathSize 标志。如果想要泄露这样的 BGP 路由,其 AS 路径长度可能会溢出,我们建议在默认路由配置中静态添加 AS 路径。例如:
[edit routing-instances instance-name routing options] user@host# set aggregate route 0.0.0.0/0 as-path path 1267
在聚合路由路径中包含 AS 编号
默认情况下,所有起作用路径中的所有 AS 编号均包含在聚合路由的路径中。要仅包含起作用 AS 路径中最长的公共前导序列,在 brief
配置路由时包括选项。如果这样做会导致聚合路由中省略 AS 编号,则聚合路由随附 BGP ATOMIC_ATTRIBUTE
路径属性。
aggregate (defaults | route) { brief; }
要显式将所有起作用路径中的所有 AS 编号包含在聚合路由的路径中,在full
配置路由时包括选项。在语句部分aggregate
配置单个路由route
以覆盖retain
语句部分指定的defaults
选项时,包括此选项。
aggregate (defaults | route) { full; }
有关可包括这些语句的层次结构级别列表,请参阅这些语句的语句摘要部分。
为聚合路由配置标记值
默认情况下,没有标记值与聚合路由相关联。您可以通过添加 tag
选项来指定标记值:
aggregate (defaults | route) { tag metric type number; }
有关可包含此语句的层次结构级别列表,请参阅此语句的语句摘要部分。
控制路由和转发表中非活动聚合路由的保留
只有当下一跃点无法访问时(如果没有起作用的路由),静态路由才会从路由表中移除。要连续地将聚合路由安装在路由和转发表表中,配置 passive
路由时请包括以下选项:
aggregate (defaults | route) { passive; }
已配置为继续安装在路由和转发表中的路由,当它们处于非活动状态时,将标记下 reject
一跃点。
要明确移除聚合路由变为非活动状态,可在active
配置路由时包括选项。在语句部分aggregate
配置单个路由route
以覆盖passive
语句部分指定的defaults
选项时,包括此选项。
aggregate (defaults | route) { active; }
示例:通过路由聚合汇总静态路由
此示例说明如何通过配置聚合路由来汇总路由。
要求
配置此示例之前,不需要除设备初始化之外的特殊配置。
概述
在此示例中:
- 设备 R1 连接到客户网络 10.200.1.0/24 和 10.200.2.0/24。
出于演示目的,此示例中这些路由表示为设备 R1 上的环路接口。
- 设备 R1 有一个静态默认路由来访问 ISP 网络 (10.0.45.0)。
- 设备 R2 的静态路由配置为访问设备 R1 的客户网络(10.200.1.0/24 和 10.200.2.0/24)。
- 设备 R2 还有一个路由策略,配置为将所有静态路由播发至其邻接方设备 R3。
- 当设备 R3 向设备 ISP 发送有关这些路由的信息(10.200.1.0/24 和 10.200.2.0/24)时,此信息汇总为单个聚合路由 (10.200.0.0/16)。
- 设备 R2 和设备 R3 共享 IBGP 会话,并将 OSPF 作为 IGP。
- 设备 ISP 将默认路由注入 AS 64501。
此示例显示所有设备的配置和设备 R3 上的分步配置。
配置
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到层级的 [edit]
CLI 中。
设备 R1
set interfaces ge-0/0/0 description R1-to-R2 set interfaces ge-0/0/0 unit 0 family inet address 10.0.0.1/30 set interfaces lo0 unit 0 family inet address 10.200.1.1/24 set interfaces lo0 unit 0 family inet address 10.200.2.2/24 set routing-options static route 0.0.0.0/0 next-hop 10.0.0.2
设备 R2
set interfaces ge-0/0/0 description R2-to-R1 set interfaces ge-0/0/0 unit 0 family inet address 10.0.0.2/30 set interfaces ge-0/0/1 description R2-to-R3 set interfaces ge-0/0/1 unit 0 family inet address 10.0.2.2/30 set interfaces lo0 unit 0 family inet address 192.168.100.2/32 set policy-options policy-statement send-customer-routes from protocol static set policy-options policy-statement send-customer-routes then accept set protocols bgp group internal type internal set protocols bgp group internal local-address 192.168.100.2 set protocols bgp group internal export send-customer-routes set protocols bgp group internal neighbor 192.168.100.3 set protocols ospf area 0.0.0.0 interface ge-0/0/0.0 set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set routing-options autonomous-system 64501 set routing-options static route 10.200.1.0/24 next-hop 10.0.0.1 set routing-options static route 10.200.2.0/24 next-hop 10.0.0.1
设备 R3
set interfaces ge-0/0/1 description R3-to-R2 set interfaces ge-0/0/1 unit 0 family inet address 10.0.2.1/30 set interfaces ge-0/0/2 description R3-to-ISP set interfaces ge-0/0/2 unit 0 family inet address 10.0.45.2/30 set interfaces lo0 unit 0 family inet address 192.168.100.3/32 set policy-options policy-statement next-hop-self term 1 from protocol bgp set policy-options policy-statement next-hop-self term 1 then next-hop self set policy-options policy-statement next-hop-self term 1 then accept set policy-options policy-statement send-aggregate term 1 from protocol aggregate set policy-options policy-statement send-aggregate term 1 then accept set policy-options policy-statement send-aggregate term suppress-specific-routes from route-filter 10.200.0.0/16 longer set policy-options policy-statement send-aggregate term suppress-specific-routes then reject set protocols bgp group external type external set protocols bgp group external export send-aggregate set protocols bgp group external peer-as 64502 set protocols bgp group external neighbor 10.0.45.1 set protocols bgp group internal type internal set protocols bgp group internal local-address 192.168.100.3 set protocols bgp group internal export next-hop-self set protocols bgp group internal neighbor 192.168.100.2 set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set routing-options autonomous-system 64501 set routing-options aggregate route 10.200.0.0/16
设备 ISP
set interfaces ge-0/0/2 description ISP-to-R3 set interfaces ge-0/0/2 unit 0 family inet address 10.0.45.1/30 set policy-options policy-statement advertise-default term 1 from route-filter 0.0.0.0/0 exact set policy-options policy-statement advertise-default term 1 then accept set protocols bgp group external type external set protocols bgp group external export advertise-default set protocols bgp group external peer-as 64501 set protocols bgp group external neighbor 10.0.45.2 set routing-options autonomous-system 64502 set routing-options static route 0.0.0.0/0 discard
逐步过程
以下示例要求您在配置层次结构中的各个级别上导航。有关导航 CLI 的信息,请参阅 《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要配置设备 R3:
-
配置设备接口。
[edit interfaces] user@R3# set ge-0/0/1 description R3-to-R2 user@R3# set ge-0/0/1 unit 0 family inet address 10.0.2.1/30 user@R3# set ge-0/0/2 description R3-to-ISP user@R3# set ge-0/0/2 unit 0 family inet address 10.0.45.2/30 user@R3# set lo0 unit 0 family inet address 192.168.100.3/32
配置 AS 编号。
[edit routing-options] user@R3# set autonomous-system 64501
-
配置与 ISP 设备的 EBGP 会话。
[edit protocols] user@R3# set bgp group external type external user@R3# set bgp group external peer-as 64502 user@R3# bgp group external neighbor 10.0.45.1
-
使用设备 R2 配置 IBGP 会话。
[edit protocols] user@R3# set bgp group internal type internal user@R3# set bgp group internal local-address 192.168.100.3 user@R3# set bgp group internal neighbor 192.168.100.2
-
将 OSPF 配置为 IGP。
[edit protocols] user@R3# set ospf area 0.0.0.0 interface ge-0/0/1.0 user@R3# set ospf area 0.0.0.0 interface lo0.0 passive
-
配置客户网络路由的聚合路由。
[edit routing-options] user@R3# set aggregate route 10.200.0.0/16
-
配置路由策略以播发聚合路由。
此策略中的第一个术语播发聚合路由。第二个术语可防止播发更具体的路由。
[edit policy-options] user@R3# set policy-statement send-aggregate term 1 from protocol aggregate user@R3# set policy-statement send-aggregate term 1 then accept user@R3# set policy-statement send-aggregate term suppress-specific-routes from route-filter 10.200.0.0/16 longer user@R3# set policy-statement send-aggregate term suppress-specific-routes then reject
-
配置路由策略,将设备 R3 报告为与设备 ISP 参与 EBGP 会话的结果的下一跃点。
[edit policy-options] user@R3# set policy-statement next-hop-self term 1 from protocol bgp user@R3# set policy-statement next-hop-self term 1 then next-hop self user@R3# set policy-statement next-hop-self term 1 then accept
-
将聚合路由策略应用于带有设备 ISP 的 EBGP 会话。
[edit protocols] user@R3# set bgp group external export send-aggregate
-
使用设备 R2 将下一跳自我策略应用于 IBGP 会话。
[edit protocols] user@R3# set bgp group internal export next-hop-self
完成设备配置后,提交配置。
[edit] user@R3# commit
结果
通过发出 show interfaces
、 show protocols
、 show policy-options
和 show routing-options
命令来确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明,以更正配置。
user@R3# show interfaces ge-0/0/1 { description R3-to-R2; unit 0 { family inet { address 10.0.2.1/30; } } } ge-0/0/2 { description R3-to-ISP; unit 0 { family inet { address 10.0.45.2/30; } } } lo0 { unit 0 { family inet { address 192.168.100.3/32; } } } user@R3# show protocols bgp { group external { type external; export send-aggregate; peer-as 64502; neighbor 10.0.45.1; } group internal { type internal; local-address 192.168.100.3; export next-hop-self; neighbor 192.168.100.2; } } ospf { area 0.0.0.0 { interface ge-0/0/1.0; interface lo0.0 { passive; } } } user@R3# show policy-options policy-statement next-hop-self { term 1 { from protocol bgp; then { next-hop self; accept; } } } policy-statement send-aggregate { term 1 { from protocol aggregate; then accept; } term suppress-specific-routes { from { route-filter 10.200.0.0/16 longer; } then reject; } } user@R3# show routing-options autonomous-system 64501; aggregate { route 10.200.0.0/16; }
验证
确认配置工作正常。
验证设备 R3 是否具有预期的路由
目的
确认设备 R3 具有来自设备 R2 的播发静态路由。
行动
user@R3>show route terse protocol bgp inet.0: 12 destinations, 12 routes (12 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both A Destination P Prf Metric 1 Metric 2 Next hop AS path * 0.0.0.0/0 B 170 100 >10.0.45.1 64502 I * 10.200.1.0/24 B 170 100 >10.0.2.2 I * 10.200.2.0/24 B 170 100 >10.0.2.2 I
意义
输出显示,设备 R3 已学习设备 R2 上配置的静态路由,以便通过 IBGP 对等连接到设备 R1 的客户网络 (10.200.1.0/24 和 10.200.2.0/24)。
验证设备 R3 是否将聚合路由播发至设备 ISP
目的
确保设备 R3 不会发送特定的静态路由,只会发送汇总的聚合路由。
行动
user@R3>show route advertising-protocol bgp 10.0.45.1 inet.0: 20 destinations, 20 routes (20 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 10.200.0.0/16 Self I
意义
输出显示设备 R3 仅将汇总的路由发送至设备 ISP。
验证端到端连接
目的
确认从设备 R1 上的客户网络到设备 ISP 的端到端连接。
行动
user@R1>ping 10.0.45.2 source 10.200.1.1 PING 10.0.45.2 (10.0.45.2): 56 data bytes 64 bytes from 10.0.45.2: icmp_seq=0 ttl=63 time=3.953 ms 64 bytes from 10.0.45.2: icmp_seq=1 ttl=63 time=4.979 ms 64 bytes from 10.0.45.2: icmp_seq=2 ttl=63 time=3.789 ms
意义
输出显示成功的 ping,验证从客户网络 10.200.1.1 设备 ISP 的可达性。