Cisco IOS 使用 IP SLA 状态作为静态路由的开关

2024-03-08 15:04

本文主要是介绍Cisco IOS 使用 IP SLA 状态作为静态路由的开关,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Cisco IOS 和 IOS XE 作为最普及的路由器和交换机操作系统,内建强大的状态跟踪联动能力。

我们配置网络设备时,希望设备能主动发现网络故障,及时作出相应调整,并将故障状态传递给网络的其他部分,减少故障恢复时的人工干预。

本文涉及 Cisco IOS 中的三个功能

  1. 静态路由随 track 状态开关
  2. 使用 IP SLA 检查指定 IP 是否响应 ICMP ECHO REQUEST(即 ping)
  3. Enhanced Object Tracking(即前述 track)聚合多个 IP SLA 检查的结果

案例介绍

配置要求

给出一种判断互联网接入链路是否可用的方法,如果此互联网接入链路不可用,从本机路由表中删除对应的默认路由,使得依赖此默认路由的动态路由协议向其邻居撤回默认路由。

基本思路

  1. 持续跟踪互联网上两个 IP 地址的 ICMP 可达性
  2. 如果它们中至少有一个可达,启用默认路由,同时禁用为这两个地址添加的静态主机路由。
  3. 如果两个均不可达,禁用/撤回默认路由。

相关配置

本文使用 192.0.2.1, 198.51.100.1 和 203.0.113.1 作为示例,这三个地址是 RFC 5735 中规定的文档专用地址,不在互联网上使用,读者应该自己选择合适的地址,与地址使用方联系获得许可,避免被误判为拒绝服务攻击流量。

  • 配置两个 IP SLA 测试

    1. 发送的 ICMP 数据报文结构 C15C0105 是 CISCO IOS 的另类拼写,可自定义。
    2. ISP-A 是使用的本机配置的对应此运营商的 VRF 名称,如果在全局路由表使用,可以不写这一行
    3. tag 是对此 IP SLA 测试的别名,用于帮助识别
    4. threshold 40 定义了 40ms 以上的 RTT 时间为超出上限,timeout 80 定义了 80ms 以上的 RTT 时间判为超时错误。
    5. 最后一行 ip sla group schedule 将两个 IP SLA 测试统一启动,每一个周期都是 10 秒,启动间隔 5s,立即启动,永远执行。
    ip sla 1icmp-echo 198.51.100.1 source-interface GigabitEthernet1request-data-size 1200tos 184data-pattern C15C0105vrf ISP-Atag ping-TESTNET-2threshold 40timeout 80frequency 10history distributions-of-statistics-kept 5history lives-kept 2history filter all
    !
    ip sla 2icmp-echo 203.0.113.1 source-interface GigabitEthernet1request-data-size 1200tos 184data-pattern C15C0105vrf ISP-Atag ping-TESTNET-3threshold 100timeout 200frequency 10history distributions-of-statistics-kept 5history lives-kept 2history filter all
    !
    ip sla group schedule 1 1-2 schedule-period 10 start-time now life forever
    
  • 配置调用上述 IP SLA 测试结果的 Tracking

    1. track 1 状态与 IP SLA 测试 1 联动
    2. track 2 状态与 IP SLA 测试 2 联动
    3. 在跟踪的 IP SLA 变为 DOWN 之后 31 秒内不改变 track 自身状态,如果这段等待期内 IP SLA 变为 UP,track 状态不会震荡。同理,若 track 从 DOWN 状态恢复,需要等待 61 秒内没有 IP SLA DOWN 的事件。
    4. track 3 状态取决于前两个跟踪目标(可以配置更多),如果小于 24% 则判为无效,如果大于 49% 则判为有效。在只配置了两个 object 的情况下,一个 object 状态为 UP,则贡献 50%,整体判为有效。
    5. track 10 的状态与 ISP-A 这个 VRF 的路由表中是否存在默认路由联动
    6. track 11 的状态与 track 10 状态相反
    track 1 ip sla 1delay down 31 up 61
    !
    track 2 ip sla 2delay down 31 up 61
    !
    track 3 list threshold percentageobject 1object 2threshold percentage down 24 up 49
    !
    track 10 ip route 0.0.0.0 0.0.0.0 reachabilityip vrf ISP-A
    !
    track 11 list boolean andobject 10 not
    
  • 配置与上述 track 联动的静态路由

    1. 两个被测试地址的主机路由与默认路由的相反状态关联,即存在默认路由时,这两条主机路由不会被安装。
    2. 默认路由与链路可用性关联,即可以到达两个被测试地址时,安装默认路由。
    3. 以下配置不会形成震荡的原因是,两个被测试地址可以通过默认路由离开本路由器。
    ip route vrf ISP-A 198.51.100.1 255.255.255.255 192.0.2.1 name TESTNET-1 track 11
    ip route vrf ISP-A 203.0.113.1 255.255.255.255 192.0.2.1 name TESTNET-2 track 11
    ip route vrf ISP-A 0.0.0.0 0.0.0.0 192.0.2.1 name ISP-A-DEFAULT track 3
    

参考资料

IP SLA 和 Tracking 的选项及其丰富,读者可参考

  1. IP SLAs Configuration Guide, Cisco IOS XE 16
  2. IP Application Services Configuration Guide, Cisco IOS XE 16 - Configuring Enhanced Object Tracking

这篇关于Cisco IOS 使用 IP SLA 状态作为静态路由的开关的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/787475

相关文章

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意