思科CCNP网络工程师 CCIE考试常见问题GRE虚拟专用网络详解IPSec虚拟专用网络用于在两个端点之间提供安全的IP通信,但只能加密并传播单播数据,无法加密和传输语音、视频、动态路由协议信息等组播数据流量。通用路由封装协议GRE提供了将一种协议的报文封装在另一种协议报文中的机制,是一种隧道封装技术。GRE可以封装组播数据,并可以和IPSec结合使用,从而保证语音、视频等组播业务的安全。
GRE可以用来对某些网络层协议如IPX的报文进行封装,使这些被封装的报文能够在另一网络层协议中传输。GRE是虚拟专用网络的第三层隧道协议,即在协议层之间采用隧道技术。
GRE本身并不支持加密,因而通过GRE隧道传输的流量是不加密的。将IPSec技术与GRE相结合,可以先建立GRE隧道对报文进行GRE封装,然后再建立IPSec隧道对报文进行加密,以保证报文传输的完整性和私密性。
GRE封装报文时,封装前的报文称为净荷,封装前的报文协议称为乘客协议,然后GRE会封装GRE头部,GRE成为封装协议,也叫运载协议,最后负责对封装后的报文进行转发的协议称为传输协议。
GRE封装和解封装报文的过程如下:
[if !supportLists]① [endif]设备从连接私网的接口接收到报文后,检查报文头中的目的IP地址字段,在路由表查找出接口,如果发现出接口是隧道接口,则将报文发送给隧道模块进行处理。
[if !supportLists]② [endif]隧道模块接收到报文后首先根据乘客协议的类型和当前GRE隧道配置的校验和参数,对报文进行GRE封装,即添加GRE报文头。
[if !supportLists]③ [endif]设备给报文添加传输协议报文头,即IP报文头。该P报文头的源地址就是隧道源地址,目的地址就是隧道目的地址。
[if !supportLists]④ [endif]设备根据新添加的IP报文头目的地址,在路由表中查找相应的出接口,并发送报文。之后,封装后的报文将在公网中传输。
[if !supportLists]⑤ [endif]接收端设备从连接公网的接口收到报文后,首先分析IP报文头,如果发现协议类型字段的值为47,表示协议为GRE,于是出接口将报文交给GRE模块处理。
GRE的Keepalive检测机制: Keepalive检测功能用于检测隧道链路是否处于Keepalive状态,即检测隧道对端是否可达。如果不可达,隧道连接就会及时关闭,避免形成数据黑洞。打开Keepalive检测功能后, GRE隧道本端会定期向对端发送Keepalive探测报文。若对端可达,则本端会收到对端的回应报文;若对端不可达,则收不到对端的回应报文。思科CCNP网络工程师 CCIE考试常见问题GRE虚拟专用网络详解
在打开keepalive检测功能之后,GRE隧道会创建一个计数器,并且周期性的发送keepalive探测报文。如果源端在计数器数值达到预先设置的值之前收到回复报文,则表明对端可达,否则则为不可达。如果不可达,那么源端的隧道连接会被关闭。
GRE的安全选项:
为了提高GRE隧道的安全性,GRE还支持由用户选择设置Tunnel接口的识别关键字或称密钥,和对隧道封装的报文进行端到端校验。
Key验证是指对隧道接口进行校验,这种安全机制可以防止错误接收到来自其他设备的报文。若GRE报文头中的Key标识位置1,则收发双方将进行通道识别关键字的验证,只有Tunnel两端设置的识别关键字完全一致时才能通过验证,否则将报文丢弃。
若GRE报文头中的Checksum标识位置1,则校验和有效。发送方将根据GRE头及Payload信息计算校验和,并将包含校验和的报文发送给对端。接收方对接收到的报文计算校验和,并与报文中的校验和比较,如果一致则对报文进一步处理,否则丢弃。思科CCNP网络工程师 CCIE考试常见问题GRE虚拟专用网络详解