前言
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 2014-11-29
Posted In: 網絡服務 Services
發佈留言