本人第一次写Blog,前端时间一直在研究juniper的策略路由,现在将相关配置分享下。



Juniper交换机的策略路由器,与cisco、H3C的逻辑原理不太一样。

SRX支持原生的RPM触发路由倒换,类似Cisco IP SLA的功能。M/T/MX/EX/QFX没有这个功能,但可通过JUNOS内置的"event-options"这个通用的自动运维特性实现一样的效果。

其原理是通过RPM监控目标地址,当监控失败后RPM会在系统日志里生成"PING_TEST_FAILED”日志,可在event-options里定义"PING_TEST_FAILED"这一事件触发后续动作,后续动作定义为设备配置更改"change-configuration", 内容为删除原有静态路由,生成新路由,然后deactive自身这条policy,active新的policy以在后面当监控目标成功后重新恢复原配置。


注意级别必须在Info级别以下才能看见RPM Trap信息


# show system syslog
user * {
any emergency;
}
file messages {
any notice;
authorization info;

}


配置RPM:

# show services
rpm {
    probe my-probe {
        test my-test {
            probe-type icmp-ping;
            target address 192.168.5.4;
            probe-count 3;
            probe-interval 1;
            test-interval 1;
            thresholds {
                successive-loss 3;
            }
            traps test-failure;
        }
    }

}


配置event-options:


policy ping-fail {
    events PING_TEST_FAILED;
    attributes-match {
        PING_TEST_FAILED.test-owner matches my-probe;
        PING_TEST_FAILED.test-name matches my-test;
    }
    then {
        change-configuration {
            commands {
                "delete routing-options static route 23.1.1.0/24 next-hop 12.1.1.2";
                "set routing-options static route 23.1.1.0/24 next-hop 12.1.1.3";
                "deactivate event-options policy ping-fail";
                "activate event-options policy ping-success";
            }
            user-name lab;
            commit-options {
                log "ping fail change is succeful!";
            }
        }
    }
}
inactive: policy ping-success {
    events PING_TEST_COMPLETED;
    attributes-match {
        PING_TEST_COMPLETED.test-name matches my-test;
        PING_TEST_COMPLETED.test-owner matches my-probe;
    }
    then {
        change-configuration {
            commands {
                "set routing-options static route 23.1.1.0/24 next-hop 12.1.1.2";
                "delete routing-options static route 23.1.1.0/24 next-hop 12.1.1.3";
                "deactivate event-options policy ping-success";
                "activate event-options policy ping-fail";
            }
            user-name lab;
            commit-options {           
                log "ping ok change is succeful!";
            }
        }
    }
}