帮助我们改善您的体验。

让我们了解您的想法。

您是否能抽出两分钟的时间完成一份问卷调查?

Announcement: Try the Ask AI chatbot for answers to your technical questions about Juniper products and solutions.

close
header-navigation
keyboard_arrow_up
close
keyboard_arrow_left
list Table of Contents
keyboard_arrow_right

机器翻译对您有帮助吗?

starstarstarstarstar
Go to English page
免责声明:

我们将使用第三方机器翻译软件翻译本页面。瞻博网络虽已做出相当大的努力提供高质量译文,但无法保证其准确性。如果对译文信息的准确性有任何疑问,请参阅英文版本. 可下载的 PDF 仅提供英文版.

示例:使用复杂的正则表达式测试路由策略

date_range 18-Jan-25

此示例说明如何使用命令测试 test policy 路由策略,以确保策略在生产环境中应用之前产生预期的结果。正则表达式,尤其是复杂的正则表达式,可能很难正确。此示例演示如何使用命令来 test policy 确保正则表达式具有预期效果。

要求

在配置此示例之前,不需要除设备初始化之外的特殊配置。

概述

此示例显示了两台路由设备之间具有外部 BGP (EBGP) 连接。设备 R2 使用 BGP 会话将客户路由发送到设备 R1。这些静态路由附加了多个社区值。

content_copy zoom_out_map
user@R2> show route match-prefix 172.16.* detail

inet.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
172.16.1.0/24 (1 entry, 1 announced)
        *Static Preference: 5
                Next hop type: Reject
                Address: 0x8fd0dc4
                Next-hop reference count: 8
                State: <Active Int Ext>
                Local AS: 64511 
                Age: 21:32:13 
                Validation State: unverified 
                Task: RT
                Announcement bits (1): 0-KRT 
                AS path: I
                Communities: 64510:1 64510:10 64510:11 64510:100 64510:111

172.16.2.0/24 (1 entry, 1 announced)
        *Static Preference: 5
                Next hop type: Reject
                Address: 0x8fd0dc4
                Next-hop reference count: 8
                State: <Active Int Ext>
                Local AS: 64511 
                Age: 21:32:13 
                Validation State: unverified 
                Task: RT
                Announcement bits (1): 0-KRT 
                AS path: I
                Communities: 64510:2 64510:20 64510:22 64510:200 64510:222

172.16.3.0/24 (1 entry, 1 announced)
        *Static Preference: 5
                Next hop type: Reject
                Address: 0x8fd0dc4
                Next-hop reference count: 8
                State: <Active Int Ext>
                Local AS: 64511 
                Age: 21:32:13 
                Validation State: unverified 
                Task: RT
                Announcement bits (1): 0-KRT 
                AS path: I
                Communities: 64510:3 64510:30 64510:33 64510:300 64510:333

172.16.4.0/24 (1 entry, 1 announced)
        *Static Preference: 5
                Next hop type: Reject   
                Address: 0x8fd0dc4
                Next-hop reference count: 8
                State: <Active Int Ext>
                Local AS: 64511 
                Age: 21:32:13 
                Validation State: unverified 
                Task: RT
                Announcement bits (1): 0-KRT 
                AS path: I
                Communities: 64510:4 64510:40 64510:44 64510:400 64510:444

为了测试复杂的正则表达式,设备 R2 具有一个名为 test-regex 用于定位路由的策略。策略配置如下:

content_copy zoom_out_map
policy-statement test-regex {
    term find-routes {
        from community complex-regex;
        then accept;
    }
    term reject-the-rest {
        then reject;
    }
}
community complex-regex members "^64510:[13].*$";

此正则表达式匹配以 1 或 3 开头的社区值。

拓扑学

图 1 显示了示例网络。

图 1: 复杂正则表达式的路由策略测试复杂正则表达式的路由策略测试

CLI 快速配置 显示了 中 图 1所有设备的配置。

#configuration271__policy-test-regex-st本节介绍设备 R2 上的步骤。

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI [edit] 中。

设备 R1

content_copy zoom_out_map
set interfaces fe-1/2/0 unit 0 family inet address 10.0.0.1/30
set interfaces lo0 unit 0 family inet address 192.168.0.1/32
set protocols bgp group ext type external
set protocols bgp group ext peer-as 64511
set protocols bgp group ext neighbor 10.0.0.2
set routing-options router-id 192.168.0.1
set routing-options autonomous-system 64510

设备 R2

content_copy zoom_out_map
set interfaces fe-1/2/0 unit 0 family inet address 10.0.0.2/30
set interfaces lo0 unit 0 family inet address 192.168.0.2/32
set protocols bgp group ext type external
set protocols bgp group ext peer-as 64510
set protocols bgp group ext neighbor 10.0.0.1
set policy-options policy-statement send-static term 1 from protocol static
set policy-options policy-statement send-static term 1 then accept
set policy-options policy-statement send-static term 2 then reject
set policy-options policy-statement test-regex term find-routes from community complex-regex
set policy-options policy-statement test-regex term find-routes then accept
set policy-options policy-statement test-regex term reject-the-rest then reject
set policy-options community complex-regex members "^64510:[13].*$"
set routing-options static route 172.16.1.0/24 reject
set routing-options static route 172.16.1.0/24 community 64510:1
set routing-options static route 172.16.1.0/24 community 64510:10
set routing-options static route 172.16.1.0/24 community 64510:11
set routing-options static route 172.16.1.0/24 community 64510:100
set routing-options static route 172.16.1.0/24 community 64510:111
set routing-options static route 172.16.2.0/24 reject
set routing-options static route 172.16.2.0/24 community 64510:2
set routing-options static route 172.16.2.0/24 community 64510:20
set routing-options static route 172.16.2.0/24 community 64510:22
set routing-options static route 172.16.2.0/24 community 64510:200
set routing-options static route 172.16.2.0/24 community 64510:222
set routing-options static route 172.16.3.0/24 reject
set routing-options static route 172.16.3.0/24 community 64510:3
set routing-options static route 172.16.3.0/24 community 64510:30
set routing-options static route 172.16.3.0/24 community 64510:33
set routing-options static route 172.16.3.0/24 community 64510:300
set routing-options static route 172.16.3.0/24 community 64510:333
set routing-options static route 172.16.4.0/24 reject
set routing-options static route 172.16.4.0/24 community 64510:4
set routing-options static route 172.16.4.0/24 community 64510:40
set routing-options static route 172.16.4.0/24 community 64510:44
set routing-options static route 172.16.4.0/24 community 64510:400
set routing-options static route 172.16.4.0/24 community 64510:444
set routing-options router-id 192.168.0.2
set routing-options autonomous-system 64511

程序

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器

要配置设备 R2:

  1. 配置接口。

    content_copy zoom_out_map
    [edit interfaces]
    user@R2# set fe-1/2/0 unit 0 family inet address 10.0.0.2/30
    user@R2# set lo0 unit 0 family inet address 192.168.0.2/32
    
  2. 配置 BGP。

    将导入策略应用于与设备 R2 的 BGP 对等会话。

    content_copy zoom_out_map
    [edit protocols bgp group ext]
    user@R2# set type external
    user@R2# set peer-as 64510
    user@R2# set neighbor 10.0.0.1
    
  3. 配置发送静态路由的路由策略。

    content_copy zoom_out_map
    [edit policy-options policy-statement send-static]
    user@R2# set term 1 from protocol static
    user@R2# set term 1 then accept
    user@R2# set term 2 then reject
    
  4. 配置测试正则表达式的路由策略。

    content_copy zoom_out_map
    [edit policy-options policy-statement test-regex]
    user@R2# set term find-routes from community complex-regex
    user@R2# set term find-routes then accept
    user@R2# set term reject-the-rest then reject
    [edit policy-options community]
    user@R2# set complex-regex members "^64510:[13].*$"
    
  5. 配置静态路由并附加社区值。

    content_copy zoom_out_map
    [edit routing-options static route 172.16.1.0/24]
    user@R2# set reject
    user@R2# set community [ 64510:1 64510:10 64510:11 64510:100 64510:111 ]
    [edit routing-options static route 172.16.2.0/24]
    user@R2# set reject
    user@R2# set community [ 64510:2 64510:20 64510:22 64510:200 64510:222 ]
    [edit routing-options static route 172.16.3.0/24]
    user@R2# set reject
    user@R2# set community [ 64510:3 64510:30 64510:33 64510:300 64510:333 ]
    [edit routing-options static route 172.16.4.0/24]
    user@R2# set reject
    user@R2# set community [ 64510:4 64510:40 64510:44 64510:400 64510:444 ]
    
  6. 配置自治系统 (AS) 编号和路由器 ID。

    这会影响设备 R2 的路由表,并且不会影响设备 R1 和设备 R3。

    content_copy zoom_out_map
    [edit routing-options ]
    user@R2# set router-id 192.168.0.2
    user@R2# set autonomous-system 64511
    

结果

在配置模式下,输入 show interfacesshow protocolsshow policy-optionsshow routing-options 命令,以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明,以便进行更正。

content_copy zoom_out_map
user@R2# show interfaces
fe-1/2/0 {
    unit 0 {
        family inet {
            address 10.0.0.2/30;
        }
    }
}
lo0 {
    unit 0 {
        family inet {
            address 192.168.0.2/32;
        }
    }
}
content_copy zoom_out_map
user@R2# show protocols
bgp {
    group ext {
        type external;
        peer-as 64510;
        neighbor 10.0.0.1;
    }
}
content_copy zoom_out_map
user@R2# show policy-options
policy-statement send-static {
    term 1 {
        from protocol static;
        then accept;
    }
    term 2 {
        then reject;
    }
}
policy-statement test-regex {
    term find-routes {
        from community complex-regex;
        then accept;
    }
    term reject-the-rest {
        then reject;
    }
}
community complex-regex members "^64510:[13].*$";
content_copy zoom_out_map
user@R2# show routing-options
static {
    route 172.16.1.0/24 {
        reject;
        community [ 64510:1 64510:10 64510:11 64510:100 64510:111 ];
    }
    route 172.16.2.0/24 {
        reject;
        community [ 64510:2 64510:20 64510:22 64510:200 64510:222 ];
    }
    route 172.16.3.0/24 {
        reject;
        community [ 64510:3 64510:30 64510:33 64510:300 64510:333 ];
    }
    route 172.16.4.0/24 {
        reject;
        community [ 64510:4 64510:40 64510:44 64510:400 64510:444 ];
    }
}
router-id 192.168.0.2;
autonomous-system 64511;

如果完成设备配置,请从配置模式输入 commit

验证

确认配置工作正常。

测试以查看哪些社区与正则表达式匹配

目的

您可以使用命令 test policypolicy-name 测试正则表达式及其策略。

操作

  1. 在设备 R2 上,运行 test policy test-regex 0/0 命令。

    content_copy zoom_out_map
    user@R2> test policy test-regex 0/0
    
    
    inet.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
    + = Active Route, - = Last Active, * = Both
    
    172.16.1.0/24      *[Static/5] 1d 00:32:50
                          Reject
    172.16.3.0/24      *[Static/5] 1d 00:32:50
                          Reject
    
    Policy test-regex: 2 prefix accepted, 5 prefix rejected
    
  2. 在设备 R2 上,更改正则表达式以匹配包含任意数量的数字 2 实例的社区值。

    content_copy zoom_out_map
    [edit policy-options community complex-regex]
    user@R2# delete members "^64510:[13].*$"
    user@R2# set members "^65020:2+$"
    user@R2# commit
    
  3. 在设备 R2 上,重新运行 test policy test-regex 0/0 命令。

    content_copy zoom_out_map
    user@R2> test policy test-regex 0/0
    
    inet.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
    + = Active Route, - = Last Active, * = Both
    
    172.16.2.0/24      *[Static/5] 1d 00:31:36
                          Reject
    
    Policy test-regex: 1 prefix accepted, 6 prefix rejected

意义

172.16.1.0 /24 和 172.16.3.0/24 路由都附加了与 ^64510:[13].*$ 表达式匹配的社区。172.16.2.0/24 路由具有与 ^65020:2+$ 表达式匹配的社区。

footer-navigation