通用路由封裝(通用路由封裝協議的應用有哪些)

Generic Routing Encapsulation (GRE)
通用路由封裝 (GRE)
本備忘錄的狀態
本備忘錄為 Internet 社區提供信息。本備忘錄未指定任何類型的 Internet 標準。本備忘錄的分發不受限制。
梗概
本文檔規定了一種協議,用于在另一個任意網絡層協議上執行任意網絡層協議的封裝。
介紹
目前存在許多不同的提案 [RFC 1234, RFC 1226] 用于將一種協議封裝在另一種協議上。其他類型的封裝 [RFC 1241、SDRP、RFC 1479] 已被提議用于在 IP 上傳輸 IP 以用于策略目的。這份備忘錄描述了一個與上述提議非常相似但更通用的協議。為了更通用,許多協議特定的細微差別被忽略了。結果是該提議可能不太適合已描述特定“X over Y”封裝的情況。該協議試圖提供一種簡單的通用機制,將封裝問題從當前的 O(n^2) 問題減少到更易于管理的狀態。該提議還試圖提供一種用于基于策略的路由的輕量級封裝。本備忘錄明確沒有解決何時應該封裝數據包的問題。本備忘錄承認,但沒有解決相互封裝的問題 [RFC 1326]。
在最常見的情況下,系統有一個需要封裝和轉發的數據包。我們將其稱為有效載荷數據包。有效載荷首先封裝在一個 GRE 數據包中,該數據包可能還包括一條路由。然后可以將生成的 GRE 數據包封裝在其他協議中,然后轉發。我們將這個外部協議稱為轉發協議。稍后討論用于處理該數據包的算法。
整體報文
整個封裝的數據包將具有以下形式:
報文頭
GRE 數據包報文頭的格式為:
標志和版本(2 個八位字節)
GRE 標志編碼在前兩個八位字節中。第 0 位是最高有效位,第 15 位是最低有效位,第 13 到 15 位保留用于版本字段,第 5 到第 12 位保留供將來使用,并且必須作為零傳輸。
校驗和存在(第 0 位)
如果校驗和存在位設置為 1,則校驗和字段存在并包含有效信息。
如果設置了校驗和存在位或路由存在位,則校驗和和偏移字段都存在于 GRE 數據包中。
路由存在(第 1 位)
如果路由存在位設置為 1,則表示偏移和路由字段存在并包含有效信息。
如果設置了校驗和存在位或路由存在位,則校驗和和偏移字段都存在于 GRE 數據包中。
密鑰存在(第 2 位)
如果密鑰存在位設置為 1,則表示密鑰字段存在于 GRE 標頭中。否則,密鑰字段不存在于 GRE 標頭中。
序列號存在(第 3 位)
如果序列號存在位設置為 1,則表示存在序列號字段。否則,GRE 報頭中不存在序列號字段。
嚴格源路由(第 4 位)
嚴格源路由位的含義在其他文檔中有定義。如果所有路由信息都由嚴格源路由組成,則建議僅將此位設置為 1。
遞歸控制(第 5-7 位)
遞歸控制包含一個三位無符號整數,其中包含允許的附加封裝的數量。這應該默認為零。
版本號(第 13-15 位)
版本號字段必須包含值 0,其他值超出了本文檔的范圍。
協議類型(2 個八位字節)
協議類型字段包含有效載荷數據包的協議類型。通常,該值將是數據包的以太網協議類型字段。下面列出了當前定義的協議類型。其他值可能會在其他文檔中定義。
偏移量(2 個八位字節)
偏移字段指示從路由字段的開始到要檢查的活動源路由條目的第一個八位字節的八位字節偏移量。如果路由存在或校驗和存在位設置為 1,則該字段存在,并且僅當路由存在位設置為 1 時才包含有效信息。
校驗和(2 個八位字節)
校驗和字段包含 GRE 標頭和有效負載數據包的 IP(一個的補碼)校驗和。如果路由存在或校驗和存在位設置為 1,則該字段存在,并且僅當校驗和存在位設置為 1 時才包含有效信息。
密鑰(4 個八位字節)
Key 字段包含一個由封裝器插入的四個八位字節數。接收方可以使用它來驗證數據包的來源。確定真實性的技術超出了本文檔的范圍。 Key 字段僅在密鑰存在字段設置為 1 時才存在。
序列號(4 個八位字節)
序列號字段包含一個由封裝器插入的無符號 32 位整數,接收器可以使用它來確定數據包從封裝器傳輸到接收器的順序。生成序列號的確切算法及其接收的語義超出了本文檔的范圍。
路由(可變長度)
路由字段是可選的,只有在路由存在位設置為 1 時才存在。
路由字段是源路由條目 (Source Route Entries,SRE) 的列表。 每個 SRE 都具有以下形式:
路由字段以包含類型為 0x0000 且長度為 0 的地址族的“NULL”SRE 終止。
地址族(2 個八位字節)
地址族字段包含兩個八位字節值,指示路由信息字段的語法和語義。此字段的值以及路由信息的相應語法和語義在其他文檔中定義。
SRE 偏移量(1 個八位字節)
SRE偏移量字段指示從路由信息字段的開始到要檢查的源路由條目中活動條目的第一個八位字節的八位字節偏移量。
SRE 長度(1 個八位字節)
SRE 長度字段包含 SRE 中的八位字節數。如果 SRE 長度為 0,則表示這是路由字段中的最后一個 SRE。
路由信息(可變長度)
路由信息字段包含可用于路由該數據包的數據。該字段的確切語義在其他文檔中定義。
GRE報文轉發
通常,轉發交付層數據包的系統不會以任何方式將 GRE 數據包與其他數據包區分開來。但是,系統可能會接收到 GRE 數據包。在這種情況下,系統應該使用一些特定于交付的方法來確定這是一個 GRE 數據包。一旦確定,可以檢查密鑰、序列號和校驗和字段,如果它們包含由相應標志指示的有效信息。如果路由存在位設置為 1,則應檢查地址族字段以確定 SRE 長度、SRE 偏移和路由信息字段的語義和使用。處理每個地址族的 SRE 的確切語義在其他文檔中定義。
一旦所有的 SRE 都被處理,那么源路由就完成了,GRE 頭應該被移除,有效載荷的 TTL 必須遞減(如果存在)并且有效載荷數據包應該作為一個普通數據包轉發。確切的轉發方法取決于協議類型字段。
當前協議類型列表
以下是當前為 GRE 分配的協議類型,未來的協議類型必須取自 DIX 以太網編碼。 由于歷史原因,一些協議使用了許多其他值。 必須使用下表的值來標識以下協議:
有關這些值的完整列表,請參閱 IANA 以太類型列表。
URL = ftp://ftp.isi.edu/in-notes/iana/assignments/ethernet-numbers.
參考信息
RFC 1479 Steenstrup, M. "Inter-Domain Policy Routing Protocol Specification: Version 1", RFC1479, BBN Systems and Technologies, July 1993. RFC 1226 Kantor, B. "Internet Protocol Encapsulation of AX.25 Frames", RFC 1226, University of California, San Diego, May 1991. RFC 1234 Provan, D. "Tunneling IPX Traffic through IP Networks", RFC 1234, Novell, Inc., June 1991. RFC 1241 Woodburn, R., and D. Mills, "Scheme for an Internet Encapsulation Protocol: Version 1", RFC 1241, SAIC, University of Delaware, July 1991. RFC 1326 Tsuchiya, P., "Mutual Encapsulation Considered Dangerous", RFC 1326, Bellcore, May 1992. SDRP Estrin, D., Li, T., and Y. Rekhter, "Source Demand Routing Protocol Specification (Version 1)", Work in Progress. RFC 1702 Hanks, S., Li, T., Farinacci, D., and P. Traina, "Generic Routing Encapsulation over IPv4 networks", RFC 1702, NetSmiths, Ltd., cisco Systems, October 1994.
安全注意事項
本備忘錄不討論安全問題。