Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5945053
  • 博文数量: 680
  • 博客积分: 10821
  • 博客等级: 上将
  • 技术积分: 11839
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-02 10:41
个人简介

大数据、ML、AI、云计算openstack、Linux、SpringCloud。

文章分类

全部博文(680)

分类: 云计算

2015-02-22 13:18:21

通用路由封装(GRE)定义了在任意一种网络层协议上封装任意一个其它网络层协议的协议。

在大多数常规情况下,系统拥有一个有效载荷(或负载)包,需要将它封装并发送至某个目的地。首先将有效载荷封装在一个 GRE 包中,然后将此 GRE 包封装在其它某协议中并进行转发。此外发协议即为发送协议。当 IPv4 被作为 GRE 有效载荷传输时,协议类型字段必须被设置为 0x800。当一个隧道终点拆封此含有 IPv4 包作为有效载荷的 GRE 包时,IPv4 包头中的目的地址必须用来转发包,并且需要减少有效载荷包的 TTL。值得注意的是,在转发这样一个包时,如果有效载荷包的目的地址就是包的封装器(也就是隧道另一端),就会出现回路现象。在此情形下,必须丢弃该 包。当 GRE 包被封装在 IPv4 中时,需要使用 IPv4 协议 47。

GRE 下的网络安全与常规的 IPv4 网络安全是较为相似的,GRE 下的路由采用 IPv4 原本使用的路由,但路由过滤保持不变 。包过滤要求防火墙检查 GRE 包,或者在 GRE 隧道终点完成过滤过程。在那些这被看作是安全问题的环境下,可以在防火墙上终止隧道。

协议结构

1

13

16

32 bit

C

Reserved 0 & 1

Ver

Protocol Type

Checksum (optional)

Reserved

· C ― 当前校验和。 

· Reserved 0 & 1 ― 预留以备后用。 

· Ver ― 版本号,当前为0。 

· Protocol Type ― 包括有效载荷数据包的协议类型。 

· Checksum ― 包括 GRE 头和有效负载数据包中所有16位字的 IP 校验和总数 

GRE的原理是将3层报文封装到IP报文里,送到tunnel对端后在解开的技术。你可以把tunnel想象成一个DDN专线,tunnel口 上配置的ip地址就相当于连接DDN专线的串口的IP地址。这个地址一般是内部的IP,Internet上是不认的(假设tunnel通过 Internet来建)。
而tunnel source和tunnel destination地址是Internet上可以路由的IP地址,用于建立tunnel,并不是tunnel口的IP。

以你的例子为例,假设本端路由器
eth0:10.1.1.1/24(连接内部局域网)
tunnel0:10.2.1.1/30(192.15.135.81----192.15.135.80)
serial0:192.15.135.81/24(连 接Internet)
ip route 10.3.1.0 255.255.255.0 10.2.1.2
对端路由器
eth0:10.3.1.1/24(连 接内部局域网)
tunnel0:10.2.1.2/30(192.15.135.80----192.15.135.81)
serial0:192.15.135.80/24(连 接Internet)
ip route 10.1.1.0 255.255.255.0 10.2.1.1

本端局域网里的主机10.1.1.2发一个报文给10.3.1.2:报文为{SA:10.1.12,DA:10.3.1.2}
首先该报 文会发给PC网关,即“本端路由器”,路由器根据目的地址路由,发现需要从tunnel0口发出,做GRE封装后,报文为 {SA:192.15.135.81,DA:192.15.135.80,{原来报文}},然后实际上从Serial0口发出,经过Internet上的 N个路由器后到达“对端路由器”,路由器解开GRE封装恢复原来报文,再从eth0口发出去。

阅读(7456) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~