本檔案介紹Cisco IOS®上的各種keepalive機制。
保持連線消息由一個網路裝置通過物理或虛擬電路傳送,以便通知另一個網路裝置它們之間的電路仍然正常工作。要使keepalive正常工作,有兩個重要因素:
在廣播媒體(例如乙太網路)上,keepalive稍微是唯一的。由於乙太網路上有許多可能的鄰居,因此keepalive並不是設計用來判斷通向線路上任何一個特定鄰居的路徑是否可用。它僅用於檢查本地系統是否具有對乙太網線本身的讀寫訪問許可權。路由器生成一個乙太網資料包,其本身作為源和目的MAC地址,並且生成一個特殊的乙太網型別代碼0x9000。乙太網硬體將此資料包傳送到乙太網線,然後立即再次收到此資料包。這將檢查乙太網介面卡上的傳送和接收硬體以及線路的基本完整性。
序列介面可以有不同型別的封裝,且每種封裝型別都會決定要使用的keepalive型別。
在介面組態模式中輸入 keepalive指令,設定路由器將ECHOREQ封包傳送到對等點的頻率:
另一個眾所周知的keepalive機制是HDLC的串列keepalive。串列keepalive在兩個路由器之間來回傳送,並且keepalive已確認。通過使用序列號跟蹤每個keepalive資料包,每台裝置都可以確認它是HDLC對等裝置是否收到它傳送的keepalive。對於HDLC封裝,三個忽略的keepalive會導致介面關閉。
為HDLC連線啟用debug serial interface命令,以便允許使用者檢視已生成和傳送的keepalive:
Sample Output:
17:21:09.685: Serial0/0: HDLC myseq 0, mineseen 0*, yourseen 1, line up
HDLC keepalive包含三個片段以確定其是否有效:
由於HDLC keepalive是ECHOREQ型別的keepalive,因此keepalive頻率非常重要,建議兩端完全匹配。 如果計時器不同步,序列號將開始順序混亂。例如,如果將一側設定為10秒,而另一側設定為25秒,只要頻率差異不足以導致序列號因三的差值而關閉,該介面仍將保持活動狀態。
為了說明HDLC keepalive的工作原理,路由器1和路由器2分別通過Serial0/0和Serial2/0直接連線。為了說明如何使用失敗的HDCL keepalive來追蹤介面狀態,路由器1上的Serial 0/0將關閉。
路由器1
Router1#show interfaces serial 0/0/0
Serial0/0/0 is up, line protocol is up (connected)
Hardware is HD64570
Internet address is 10.0.0.1/8
MTU 1500 bytes, BW 64 Kbit, DLY 20000 usec, rely 255/255, load 1/255
Encapsulation HDLC, loopback not set, keepalive set (10 sec)
[output is omited]
17:21:09.685: Serial0/0: HDLC myseq 0, mineseen 0*, yourseen 1, line up
17:21:19.725: Serial0/0: HDLC myseq 1, mineseen 1*, yourseen 2, line up
17:21:29.753: Serial0/0: HDLC myseq 2, mineseen 2*, yourseen 3, line up
17:21:39.773: Serial0/0: HDLC myseq 3, mineseen 3*, yourseen 4, line up
17:21:49.805: Serial0/0: HDLC myseq 4, mineseen 4*, yourseen 5, line up
17:21:59.837: Serial0/0: HDLC myseq 5, mineseen 5*, yourseen 6, line up
17:22:09.865: Serial0/0: HDLC myseq 6, mineseen 6*, yourseen 7, line up
17:22:19.905: Serial0/0: HDLC myseq 7, mineseen 7*, yourseen 8, line up
17:22:29.945: Serial0/0: HDLC myseq 8, mineseen 8*, yourseen 9, line up
Router1 (config-if)#shut
17:22:39.965: Serial0/0: HDLC myseq 9, mineseen 9*, yourseen 10, line up
17:22:42.225: %LINK-5-CHANGED: Interface Serial0/0, changed state
to administratively down
17:22:43.245: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0,
changed state to down
路由器2
Router2#show interfaces serial 0/0/0
Serial0/0/0 is up, line protocol is up (connected)
Hardware is HD64570
Internet address is 10.0.0.2/8
MTU 1500 bytes, BW 64 Kbit, DLY 20000 usec, rely 255/255, load 1/255
Encapsulation HDLC, loopback not set, keepalive set (10 sec)
[output is omited]
17:21:04.929: Serial2/0: HDLC myseq 0, mineseen 0, yourseen 0, line up
17:21:14.941: Serial2/0: HDLC myseq 1, mineseen 1*, yourseen 1, line up
17:21:24.961: Serial2/0: HDLC myseq 2, mineseen 2*, yourseen 2, line up
17:21:34.981: Serial2/0: HDLC myseq 3, mineseen 3*, yourseen 3, line up
17:21:45.001: Serial2/0: HDLC myseq 4, mineseen 4*, yourseen 4, line up
17:21:55.021: Serial2/0: HDLC myseq 5, mineseen 5*, yourseen 5, line up
17:22:05.041: Serial2/0: HDLC myseq 6, mineseen 6*, yourseen 6, line up
17:22:15.061: Serial2/0: HDLC myseq 7, mineseen 7*, yourseen 7, line up
17:22:25.081: Serial2/0: HDLC myseq 8, mineseen 8*, yourseen 8, line up
17:22:35.101: Serial2/0: HDLC myseq 9, mineseen 9*, yourseen 9, line up
17:22:45.113: Serial2/0: HDLC myseq 10, mineseen 10*, yourseen 10, line up
17:22:55.133: Serial2/0: HDLC myseq 11, mineseen 10, yourseen 10, line up
17:23:05.153: HD(0): Reset from 0x203758
17:23:05.153: HD(0): Asserting DTR
17:23:05.153: HD(0): Asserting DTR and RTS
17:23:05.153: Serial2/0: HDLC myseq 12, mineseen 10, yourseen 10, line up
17:23:15.173: HD(0): Reset from 0x203758
17:23:15.173: HD(0): Asserting DTR
17:23:15.173: HD(0): Asserting DTR and RTS
17:23:15.173: Serial2/0: HDLC myseq 13, mineseen 10, yourseen 10, line down
17:23:16.201: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial2/0,
changed state to down
Router2#
17:23:25.193: Serial2/0: HDLC myseq 14, mineseen 10, yourseen 10, line down
PPP keepalive與HDLC keepalive略有不同。與HDLC不同,PPP keepalive更像ping。兩端都可以在空閒時互相執行ping。正確的協商操作是始終響應此「ping」。 因此對於PPP keepalive,頻率或計時器值僅在本地相關,對另一端沒有影響。即使其中一方關閉keepalive,它仍會響應來自具有keepalive計時器的一方的回應請求。但是,它永遠不會啟動任何自己的功能。
為PPP連線啟用debug ppp packet命令,以便允許使用者檢視傳送的PPP keepalive:
17:00:11.412: Se0/0/0 LCP-FS: I ECHOREQ [Open] id 32 len 12 magic 0x4234E325
和收到的響應:
17:00:11.412: Se0/0/0 LCP-FS: O ECHOREP [Open] id 32 len 12 magic 0x42345A4D
PPP keepalive包含三個部分:
對於PPP封裝,五個忽略的keepalive會導致介面關閉
GRE通道keepalive機制與乙太網路或序列介面相比略微不同。即使遠端路由器不支援GRE keepalive,它也能讓一端發起和接收keepalive資料包到遠端路由器。由於GRE是用於在IP內部對IP進行通道化的封包通道機制,因此可以在另一個GRE IP通道封包中建立GRE IP通道封包。對於GRE keepalive,傳送者會在原始keepalive要求封包中預先建立keepalive回應封包,以便遠端只需對外部GRE IP標頭執行標準GRE解除封裝,然後轉送內部IP GRE封包。此機制會導致keepalive響應從實體介面而非通道介面轉發出去。有關GRE通道keepalive的工作方式的詳細資訊,請參閱GRE Keepalive運作方式。
網際網路金鑰交換(IKE)keepalive是一種機制,用於判斷VPN對等點是否啟動且能夠接收加密流量。除了介面keepalive外,還需要獨立的加密keepalive,因為VPN對等點通常不會背對背連線,因此介面keepalive無法提供有關VPN對等點狀態的足夠資訊。
在Cisco IOS裝置上,IKE keepalive是使用稱為失效對等體偵測(DPD)的專有方法啟用的。 若要允許網關向對等點傳送DPD,請在全域性配置模式下輸入以下命令:
crypto isakmp keepalive seconds [retry-seconds] [ periodic | on-demand ]
若要停用keepalive,請使用此命令的「no」形式。如需此命令中每個關鍵字的作用的詳細資訊,請參閱crypto isakmp keepalive。為了獲得更高的精細度,還可以在ISAKMP配置檔案下配置keepalive。有關詳細資訊,請參閱ISAKMP配置檔案概述[Cisco IOS IPsec]。
在某個VPN對等體位於網路地址轉換(NAT)後面的情況下,會使用NAT遍歷進行加密。但是,在空閒期間,上游裝置上的NAT條目可能會超時。當啟動隧道且NAT不是雙向時,這會導致問題。啟用NAT keepalive是為了在兩個對等體之間的連線期間保持動態NAT對映處於活動狀態。NAT keepalive是未加密負載為一個位元組的UDP封包。雖然目前的DPD實作與NAT keepalive類似,但有一點不同 — 如果IPsec實體沒有在指定的時間週期傳送或接收資料包,DPD用於檢測對等體狀態,而傳送NAT keepalive時使用。有效範圍為5到3600秒。
有關此功能的詳細資訊,請參見IPsec NAT Transparency。