前言
IP Service Level Agreement (IP SLA) 可以用作测量网络的效能,也是一个很好的诊断工具。SLA 通过发送封包到一个目的地和接收目的地的回应来计算出 Round Trip Time丶Packet Loss 等等参数并作出记录。
设定 SLA
以上网络的 Router 起始设定如下:
hostname R1 ! interface Loopback0 ip address 1.1.1.1 255.255.255.255 ! interface Ethernet0/0 ip address 192.168.12.1 255.255.255.0 ! ip route 3.3.3.3 255.255.255.255 192.168.12.2
hostname R2 ! interface Ethernet0/0 ip address 192.168.23.2 255.255.255.0 ! interface Ethernet0/1 ip address 192.168.12.2 255.255.255.0 ! ip route 1.1.1.1 255.255.255.255 192.168.12.1 ip route 3.3.3.3 255.255.255.255 192.168.23.3
hostname R3 ! interface Loopback0 ip address 3.3.3.3 255.255.255.0 ! interface Ethernet0/1 ip address 192.168.23.3 255.255.255.0 ! ip route 1.1.1.1 255.255.255.255 192.168.23.2
於是,1.1.1.1 能够 Ping 通 3.3.3.3。
R1#ping 3.3.3.3 source 1.1.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds: Packet sent with a source address of 1.1.1.1 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 60/91/124 ms
第一部是 SLA 的设定,现在以 R1 为例子,设定一个 ICMP Echo 的侦测,请留意不同版本的 IOS 在设定 SLA 的指令会有少许不同,以下为 IOS 12.4 的设定方法:
R1(config)#ip sla monitor 1 R1(config-sla-monitor)#type echo protocol ipIcmpEcho 3.3.3.3 source-ip 1.1.1.1 R1(config-sla-monitor-echo)#timeout 500 !RTT 大过 500ms 就判失败 R1(config-sla-monitor-echo)#frequency 2 !每 2 秒执行一次 R1(config-sla-monitor-echo)#request-data-size 300 !Payload 300 Byte
第二部是把 SLA 启动,life 是要执行多久,而 start-time 则是何时开始执行:
R1(config)#ip sla monitor schedule 1 life ? <0-2147483647> Life seconds forever continue running forever R1(config)#ip sla monitor schedule 1 life forever start-time ? after Start after a certain amount of time from now hh:mm Start time (hh:mm) hh:mm:ss Start time (hh:mm:ss) now Start now pending Start pending R1(config)#ip sla monitor schedule 1 life forever start-time now
启动後可以使用 show ip sla monitor statistics details 查看结果:
R1#show ip sla monitor statistics details Round trip time (RTT) Index 1 Latest RTT: 59 ms Latest operation start time: *00:30:47.479 UTC Fri Mar 1 2002 Latest operation return code: OK Over thresholds occurred: FALSE Number of successes: 108 Number of failures: 0 Operation time to live: Forever Operational state of entry: Active Last time this entry was reset: Never
除了 ICMP Echo 之外,IP SLA 也支援其他 Protocol,设定方法大同小异:
R1(config-sla-monitor)#type ? dhcp DHCP Operation dlsw DLSW Operation dns DNS Query Operation echo Echo Operation frame-relay Perform frame relay operation ftp FTP Operation http HTTP Operation jitter Jitter Operation pathEcho Path Discovered Echo Operation pathJitter Path Discovered Jitter Operation tcpConnect TCP Connect Operation udpEcho UDP Echo Operation voip Voice Over IP measurement
以 SLA 作 Route Track
现在我们为网络加上一只 Router R4,让 1.1.1.1 有两条路径可以到达 R3。
不过,我们希望只有在 R2 这条路径不通时,才用 R4 这条後备路径,所以我们把 R4 这条 Router 的 AD 设成 10。
R1(config)#ip route 3.3.3.3 255.255.255.255 192.168.14.4 10
於是,R1 继续使用 192.168.12.2 为 Next Hop,
R1#show ip route | begin Gateway
Gateway of last resort is not set
C 192.168.12.0/24 is directly connected, Ethernet0/0
1.0.0.0/32 is subnetted, 1 subnets
C 1.1.1.1 is directly connected, Loopback0
C 192.168.14.0/24 is directly connected, Ethernet0/1
3.0.0.0/32 is subnetted, 1 subnets
S 3.3.3.3 [1/0] via 192.168.12.2
一旦 R2 这条路径 Shutdown,就会切换成 Next Hop 192.168.14.4。
R2(config)#int ethernet 0/1 R2(config-if)#shutdown
R1#show ip route | begin Gateway
Gateway of last resort is not set
1.0.0.0/32 is subnetted, 1 subnets
C 1.1.1.1 is directly connected, Loopback0
C 192.168.14.0/24 is directly connected, Ethernet0/1
3.0.0.0/32 is subnetted, 1 subnets
S 3.3.3.3 [10/0] via 192.168.14.4
问题是,如果 R2 和 R3 因为某些原因断开了,R1 不会知道,而继续使用 192.168.12.2 为 Next Hop,不懂使用後备路径。为了解决这个问题,我们可以把 Route 设成 SLA Track。SLA 已经在刚才设定好,现在只要加入 Track 的部份:
R1(config)#track ? <1-500> Tracked object resolution Tracking resolution parameters timer Polling interval timers R1(config)#track 1 ? interface Select an interface to track ip IP protocol list Group objects in a list rtr Response Time Reporter (RTR) entry R1(config)#track 1 rtr ? <1-2147483647> Entry number R1(config)#track 1 rtr 1
然後,把 R2 路径的 Route 加上 Track。这样,当 SLA 的结果为 Timeout 时,这条 Route 就会被杀掉。
R1(config)#no ip route 3.3.3.3 255.255.255.255 192.168.12.2 R1(config)#ip route 3.3.3.3 255.255.255.255 192.168.12.2 track 1
测试一下,原本 R1 是用 192.168.12.2 这条 Route 的。
R1#show ip route | begin Gateway
Gateway of last resort is not set
C 192.168.12.0/24 is directly connected, Ethernet0/0
1.0.0.0/32 is subnetted, 1 subnets
C 1.1.1.1 is directly connected, Loopback0
C 192.168.14.0/24 is directly connected, Ethernet0/1
3.0.0.0/32 is subnetted, 1 subnets
S 3.3.3.3 [1/0] via 192.168.12.2
在 R3 把 Port Shutdown。
R3(config)#int eth 0/1 R3(config-if)#shutdown
由於 SLA 执行失败,原本的 Route 被抹掉,改成用 192.168.14.4 为 Next Hop 的後备 Route。
R1#show ip sla monitor statistics 1 Round trip time (RTT) Index 1 Latest RTT: NoConnection/Busy/Timeout Latest operation start time: *01:40:35.479 UTC Fri Mar 1 2002 Latest operation return code: Timeout Number of successes: 213 Number of failures: 189 Operation time to live: Forever R1#show ip route | begin Gateway Gateway of last resort is not set C 192.168.12.0/24 is directly connected, Ethernet0/0 1.0.0.0/32 is subnetted, 1 subnets C 1.1.1.1 is directly connected, Loopback0 C 192.168.14.0/24 is directly connected, Ethernet0/1 3.0.0.0/32 is subnetted, 1 subnets S 3.3.3.3 [10/0] via 192.168.14.4
以 SLA 作为 Traffic Generator
很多时候,我们会希望在网络产生一些 Packet 来进行测试,尤其在做 QoS 实验时,这方面 SLA 可以帮到我们。例如:我们想产生一组 20Kbps 的 UDP Traffic,我们可以透过控制 SLA 的 Payload 和 Packet 数目来控制,先来一点数学。
假设我们想产生 80Kbps 的 UDP Traffic:
80Kbps = 80,000 bps = 10,000 Bytes / s
即是说每秒需要产生 10,000 Bytes 的 Traffic,如果每秒产生 10 个 Packet,则每个 Packet 要有 1000 Bytes。
因为一个 UDP Packet 包含 Ethernet Header 14 Bytes丶IP Header 20 Bytes 和 UDP Header 8 Bytes,因此,
Payload = 1,000 – 14 – 20 – 8 = 958 Bytes。
所以结论是要每秒产生 10 个 Payload 为 958 Bytes 的 Packet,设定如下:
R1(config-sla-monitor)#type jitter dest-ipaddr 3.3.3.3 dest-port 12345 source-ipaddr 1.1.1.1 num-packets 10 control disable R1(config-sla-monitor-jitter)#timeout 500 R1(config-sla-monitor-jitter)#frequency 1 R1(config-sla-monitor-jitter)#request-data-size 958 R1(config-sla-monitor-jitter)#exit R1(config)#ip sla monitor schedule 2 life forever start-time now
注意:如果目的地不是 Cisco 设备的话,Control 必需设为 disable 来关闭 Cisco 的 SLA Control Protocol。
相關主題
Jan Ho 2021-07-22
Posted In: 网络服务 Services
发表回复