「GRE」- 基本工作原理

数据转发

GRE 隧道是三层隧道,主要承载 IPv4/IPv6 报文。GRE 通过封装外层 IP 头部,使得数据可在公网上传递

存活检测

由于 GRE 协议并不具备检测链路状态的功能,如果对端接口不可达,隧道并不能及时关闭该 Tunnel 连接,这样会造成源端会不断的向对端转发数据,而对端却因隧道不通接收不到报文,由此就会形成流量中断;

GRE 的 Keepalive 检测功能可以检测隧道状态,即检测隧道对端是否可达;

Keepalive 超时时间=发送周期(默认 5 s)*重试次数(默认 3 次)

Keepalive 检测功能的实现过程如下:

1)当 GRE 隧道的源端使能 Keepalive 检测功能后,就创建一个定时器,周期地发送 Keepalive 探测报文,同时通过计数器进行不可达计数。每发送一个探测报文,不可达计数加 1;

2)对端每收到一个探测报文,就给源端发送一个回应报文。如果源端的计数器值未达到预先设置的值就收到回应报文,就表明对端可达;

3)如果源端的计数器值到达预先设置的值——重试次数(Retry Times)时,还没收到回送报文,就认为对端不可达。此时,源端将关闭隧道连接。但是源端口仍会继续发送 Keepalive 报文,若对端 Up,则源端口也会 Up,建立隧道链接;