目錄

簡介

背景資訊

介面存留機制

乙太網路介面

串列介面

HDLC Keepalive

PPP Keepalive

GRE通道介面

Crypto Keepalive

IKE Keepalive

NAT Keepalive

簡介

本檔案介紹Cisco IOS®上的各種keepalive機制。

背景資訊

保持連線消息由一個網路裝置通過物理或虛擬電路傳送，以便通知另一個網路裝置它們之間的電路仍然正常工作。要使keepalive正常工作，有兩個重要因素：

- keepalive間隔是網路裝置傳送的每個keepalive消息之間的時間段。始終可配置。

- keepalive retries是裝置在狀態變更為「down」之前，繼續傳送keepalive封包而沒有回應的次數。 對於某些型別的keepalive，這是可配置的；而對於其他型別，則有一個無法更改的預設值。

介面存留機制

乙太網路介面

在廣播媒體（例如乙太網路）上，keepalive稍微是唯一的。由於乙太網路上有許多可能的鄰居，因此keepalive並不是設計用來判斷通向線路上任何一個特定鄰居的路徑是否可用。它僅用於檢查本地系統是否具有對乙太網線本身的讀寫訪問許可權。路由器生成一個乙太網資料包，其本身作為源和目的MAC地址，並且生成一個特殊的乙太網型別代碼0x9000。乙太網硬體將此資料包傳送到乙太網線，然後立即再次收到此資料包。這將檢查乙太網介面卡上的傳送和接收硬體以及線路的基本完整性。

串列介面

序列介面可以有不同型別的封裝，且每種封裝型別都會決定要使用的keepalive型別。

在介面組態模式中輸入 keepalive指令，設定路由器將ECHOREQ封包傳送到對等點的頻率：

- 若要將系統還原到預設的keepalive間隔10秒，請輸入帶有no關鍵字的keepalive命令。

- 若要停用keepalive，請輸入keepalive disable 指令。

附註：其 keepalive 命令適用於使用高級資料鏈路控制(HDLC)或PPP封裝的串列介面。它不適用於使用幀中繼封裝的串列介面。

附註：對於PPP和HDLC封裝型別，keepalive為0會禁用keepalive，並在show running-config命令輸出中報告為keepalive disable。

HDLC Keepalive

另一個眾所周知的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包含三個片段以確定其是否有效：

- 「myseq」是我們自己的遞增編號。

- 「mineseen」，實際上是來自另一方的確認（遞增），表示他們期望從我們這裡得到此編號。

- 「您看見」，即我們對對方的承認。

附註：在Router 2上，myseq和mineseen欄位中的值差超過三時，線路會關閉，介面會重設。

由於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

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包含三個部分：

- ID號 — 用於標識對等體響應的ECHOREQ。

- Keepalive型別 — ECHOREQ是由始發裝置傳送的keepalive，ECHOREP是由對等裝置傳送的響應。

- 幻數 — 通知包括伺服器和遠端客戶端的幻數。對等體驗證LCP回應要求資料包中的幻數，並傳輸包含路由器協商的幻數的LCP回應要求資料包的相應LCP回應要求資料包。

對於PPP封裝，五個忽略的keepalive會導致介面關閉

GRE通道介面

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運作方式。

Crypto Keepalive

IKE 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]。

NAT Keepalive

在某個VPN對等體位於網路地址轉換(NAT)後面的情況下，會使用NAT遍歷進行加密。但是，在空閒期間，上游裝置上的NAT條目可能會超時。當啟動隧道且NAT不是雙向時，這會導致問題。啟用NAT keepalive是為了在兩個對等體之間的連線期間保持動態NAT對映處於活動狀態。NAT keepalive是未加密負載為一個位元組的UDP封包。雖然目前的DPD實作與NAT keepalive類似，但有一點不同 — 如果IPsec實體沒有在指定的時間週期傳送或接收資料包，DPD用於檢測對等體狀態，而傳送NAT keepalive時使用。有效範圍為5到3600秒。

提示：如果啟用NAT keepalive(通過crypto isamkp nat keepalive 命令)，則使用者應確保空閒值短於NAT對映過期時間20秒。

有關此功能的詳細資訊，請參見IPsec NAT Transparency。