让我们探索每种协议并讨论每种隧道方法的最佳用例。
GRE由 RFC(Request for Comments)2784 定义并由 RFC 2890 更新,创建一个未加密的隧道,该隧道在另一个任意网络层协议上封装任意协议。
它可以封装任何使用有效 Ethertype的第 3 层协议,使其能够传输各种协议,包括 IP 多播数据包。GRE 最好在受信任的网络路径上使用,因为数据包未加密,但如果需要加密,它可以与 IPsec 隧道结合使用。
GRE 标头被添加到正在转发的数据包中,外部和内部报头通常是 IP 报头,但也可能是其他第 3 层协议。
GRE 标头的长度可以在 4 字节到 16 字节之间,具体取决于启用的选项,默认为 4 字节。在 IP 上使用时,最小的额外开销是 24 字节——20 字节的 IP 外部报头和 4 字节的 GRE 报头。
IP in IP 是一种类似的协议,仅在 IP 网络上传输 IP 数据包并添加 20 个字节的封装 IP 标头。
IPsec总结在 RFC 6071 中,是一套协议,可在 IP 网络上创建加密隧道。它的加密和身份验证机制可防止窃听和数据修改,这解释了虚拟专用网络( VPN ) 一词。
IPsec 隧道经常用于在组织的分支机构或移动用户与家庭办公室或数据中心之间提供安全的数据路径,VPN 隧道终端可以是分支机构或家庭设备的网络网关。
IPsec 封装头大小取决于模式:它通常为 50 字节到 57 字节,具体取决于创建 8 字节的倍数的数据包所需的填充。
GRE 和 IPsec 协议具有一些相似的特征,包括:
GRE 隧道和 IPsec 隧道均显示为单个虚拟跃点,即使它可能遍历隧道端点之间的许多链路。
两种协议的附加标头都会增加数据包大小,这可能会导致数据包碎片化,从而降低网络性能。现代操作系统使用TCP 路径最大传输单元发现(PMTUD) 来自动确定最大的数据包。但是,PMTUD 不适用于用户数据报协议。
另一种方法是手动配置网络上的MTU,以便 IP 分段发生在隧道之外。
IT 团队可以通过在 IPsec 隧道上配置 GRE 隧道来安全地传输非 IP 或多播数据包,当两种协议结合使用时,开销会增加。
IT 团队在需要安全 IP 隧道时应使用 IPsec,当他们需要没有隐私的隧道以及需要隧道多个协议或多播时,他们应该使用 GRE。
当团队需要 GRE 的多协议功能与 IPsec 的数据保护相结合时,他们可以在 IPsec 之上结合 GRE。
最后,请记住使用隧道时的 MTU 问题。