首页 新闻 工控搜 论坛 厂商论坛 产品 方案 厂商 人才 文摘 下载 展览
中华工控网首页
  P L C | 变频器与传动 | 传感器 | 现场检测仪表 | 工控软件 | 人机界面 | 运动控制
  D C S | 工业以太网 | 现场总线 | 显示调节仪表 | 数据采集 | 数传测控 | 工业安全
  电 源 | 嵌入式系统 | PC based | 机柜箱体壳体 | 低压电器 | 机器视觉
收藏本文     查看收藏

项目背景

IPv6的部署大致要经历一个渐进的过程,在初始阶段,IPv4的网络海洋中会出现若干局部零散的IPv6孤岛,为了保持通信,这些孤岛通过跨越IPv4的隧道彼此连接;随着IPv6规模的应用,原来的孤岛逐渐聚合成为了骨干的IPv6 Internet网络,形成于IPv4骨干网并存的局面,在IPv6骨干上可以引入了大量的新业务,同时可以充分发挥IPv6的诸多优势。为了实现IPv6和IPv4网络资源的互访,还需要转换服务器以实现v6和v4的互通;最后,IPv4骨干网逐步萎缩成局部的孤岛,通过隧道连接,IPv6占据了主导地位,具备全球范围的连通性。

IPv6提供很多过渡技术来实现上述这样一个演进过程。这些过渡技术围绕两类问题解决:
IPv6孤岛互通技术:实现IPv6网络和IPv6网络的互通
IPv6和IPv4互通技术:实现两个不同网络之间互相访问资源

目前,解决上述问题的基本过渡技术有两种:双栈和隧道。

双栈:即设备升级到IPv6的同时保留IPv4支持,可以同时访问IPv6和IPv4设备,包含双协议栈支持,应用程序依靠DNS地址解析返回的地址类型,来决定使用何种协议栈。
隧道:通过在一种协议中承载另一种协议,实现跨越不同域的互通,具体可以是IPv6-in-IPv4,IPv6-in-MPLS,IPv4-in-IPv6等隧道类型。


GRE隧道(VPN)

GRE与IP in IP、IPX over IP等封装形式很相似,但比他们更通用。在GRE的处理中,很多协议的席位差异都被忽略,这使得GRE不限于某个特定的“X over Y”应用,而是一种最基本的封装形式。

在最简单的情况下,路由器接收到一个需要封装和路由的原始数据报文(Payload),这个报文首先被GRE封装而成GRE报文,接着被封装在IP协议中,然后完全由IP层负责此报文的转发。原始报文的协议被称之为乘客协议,GRE被称之为封装协议,而负责转发的IP协议被称之为传递(Delivery)协议或传输(Transport)协议。注意到在以上的流程中不用关心乘客协议的具体格式或内容,整个被封装的报文格式:

      -------------------------------
      |   Delivery Header           |
      |   (Transport Protocol)      |
      -------------------------------
      |  GRE Header                 |
      |  (Encapsulation Protocol    |
      -------------------------------
      |  Payload Packet             |
      |  (Passenger Protocol)       |
      -------------------------------

GRE报头的格式如下:

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |C|R|K|S|s|Recur|  Flags  | Ver |         Protocol Type         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |      Checksum (optional)      |       Offset (optional)       |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                         Key (optional)                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                    Sequence Number (optional)                 |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                    Routing (optional)                         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

GRE隧道原理:

1、封装
Ingress PE从连接X协议的接口接收到X协议报文后,首先交由X协议处理。
X协议根据报文头中的目的地址在路由表或转发表中查找出接口,确定如何转发此报文。如果发现出接口是GRE Tunnel接口,则对报文进行GRE封装,即添加GRE头。
根据骨干网传输协议为IP,给报文加上IP头。IP头的源地址就是隧道源地址,目的地址就是隧道目的地址。

根据该IP头的目的地址(即隧道目的地址),在骨干网路由表中查找相应的出接口并发送报文。之后,封装后的报文将在该骨干网中传输。

2、解封装
解封装过程和封装过程相反。
Egress PE从GRE Tunnel接口收到该报文,分析IP头发现报文的目的地址为本设备,则Egress PE去掉IP头后交给GRE协议处理。GRE协议剥掉GRE报头,获取X协议,再交由X协议对此数据报文进行后续的转发处理。

配置

左边为R3,右边为R4
R3:
配置公网IP:
interface GE0/3/4
 ip address 34.0.0.3/24
 no shutdown
!
配置私网IP:
interface GE0/1/3
 ip address 13.0.0.3/24
 no shutdown
!
配置GRE Tunnel:
interface tunnel100
 tunnel mode gre
 tunnel source 34.0.0.3
 tunnel destination 34.0.0.4
 ip address 192.168.100.3/24 //和对方Tunnel IP在同一网段
 no shutdown
!
配置路由:
ip route 0.0.0.0/0 34.0.0.4 //到公网默认路由
ip route 24.0.0.0/24 tunnel100 //到对方私网路由通过Tunnel 100访问
!


R4:
配置公网IP:
interface GE0/3/4
 ip address 34.0.0.4/24
 no shutdown
!
配置私网IP:
interface GE0/2/4
 ip address 24.0.0.4/24
 no shutdown
!
配置GRE Tunnel:
interface tunnel100
 tunnel mode gre
 tunnel source 34.0.0.4
 tunnel destination 34.0.0.3
 ip address 192.168.100.4/24 //和对方Tunnel IP在同一网段
 no shutdown
!
配置路由:
ip route 0.0.0.0/0 34.0.0.3 //到公网默认路由
ip route 13.0.0.0/24 tunnel100 //到对方私网路由通过Tunnel 100访问
!

在R4上ping R3的私网地址13.0.0.3,抓包如下:




GRE报文解析
 


GRE头各字段解释:

C 校验和验证位。1-GRE头插入了校验和(Checksum)字段。0-GRE头不包含校验和字段。
K 关键字位。1-GRE头插入了关键字(Key)字段。0-GRE头不包含关键字字段。
Recursion GRE报文被封装的层数。一次GRE封装后将该字段加1。如果封装层数大于3,则丢弃该报文。该字段的作用是防止报文被无限次的封装。RFC1701规定该字段默认值为0。RFC2784规定当发送和接受端该字段不一致时不会引起异常,且接收端必须忽略该字段。设备实现时该字段仅在加封装报文时用作标记隧道嵌套层数,GRE解封装报文时不感知该字段,不会影响报文的处理。
Flags 预留字段。当前必须置为0。
Version 版本字段。必须置为0。
Protocol 标识乘客协议的协议类型。常见的乘客协议为IPv4协议,协议代码为0800。
Checksum 对GRE头及其负载的校验和字段。
Key 关键字字段,隧道接收端用于对收到的报文进行验证。
目前实现的GRE头不包含源路由字段,所以Bit 1、Bit 3和Bit 4都置为0。
GRE安全机制

GRE本身提供两种基本的安全机制:校验和验证,识别关键字。

1、校验和验证
校验和验证是指对封装的报文进行端到端校验。
若GRE报文头中的C位标识位置1,则校验和有效。发送方将根据GRE头及Payload信息计算校验和,并将包含校验和的报文发送给对端。接收方对接收到的报文计算校验和,并与报文中的校验和比较,如果一致则对报文进一步处理,否则丢弃。

隧道两端可以根据实际应用的需要决定配置校验和或禁止校验和。如果本端配置了校验和而对端没有配置,则本端将不会对接收到的报文进行校验和检查,但对发送的报文计算校验和;相反,如果本端没有配置校验和而对端已配置,则本端将对从对端发来的报文进行校验和检查,但对发送的报文不计算校验和。

2、识别关键字
识别关键字(Key)验证是指对Tunnel接口进行校验。通过这种弱安全机制,可以防止错误识别、接收其它地方来的报文。
RFC1701中规定:若GRE报文头中的K位为1,则在GRE头中插入一个四字节长关键字字段,收发双方将进行识别关键字的验证。
关键字的作用是标志隧道中的流量,属于同一流量的报文使用相同的关键字。在报文解封装时,GRE将基于关键字来识别属于相同流量的数据报文。只有Tunnel两端设置的识别关键字完全一致时才能通过验证,否则将报文丢弃。这里的“完全一致”是指两端都不设置识别关键字,或者两端都设置相同的关键字。
 

GRE的Keepalive检测

由于GRE协议并不具备检测链路状态的功能,如果对端接口不可达,隧道并不能及时关闭该Tunnel连接,这样会造成源端会不断的向对端转发数据,而对端却因隧道不通接收不到报文,由此就会形成数据空洞。
GRE的Keepalive检测功能可以检测隧道状态,即检测隧道对端是否可达。如果对端不可达,隧道连接就会及时关闭,避免因对端不可达而造成的数据丢失,有效防止数据空洞,保证数据传输的可靠性。
Keepalive检测功能的实现过程如下:
当GRE隧道的源端使能Keepalive检测功能后,就创建一个定时器,周期地发送Keepalive探测报文,同时通过计数器进行不可达计数。每发送一个探测报文,不可达计数加1。
对端每收到一个探测报文,就给源端发送一个回应报文。
如果源端的计数器值未达到预先设置的值就收到回应报文,就表明对端可达。如果源端的计数器值到达预先设置的值——重试次数(Retry Times)时,还没收到回送报文,就认为对端不可达。此时,源端将关闭隧道连接。但是源端口仍会继续发送Keepalive报文,若对端Up,则源端口也会Up,建立隧道链接。
对于设备实现的GRE Keepalive检测功能,只要在隧道一端配置Keepalive,该端就具备Keepalive功能,而不要求隧道对端也具备该功能。隧道对端收到报文,如果是Keepalive探测报文,无论是否配置Keepalive,都会给源端发送一个回应报文。

GRE具有如下的优点:

多协议的本地网可以通过单一协议的骨干网实现传输;
将一些不能连续的子网连接起来,用于组建VPN;
扩大了网络的工作范围,包括那些路由网管有限的协议。如IPX包最多可以转发16次(即经过16个路由器),而在一个Tunnel连接中看上去只经过一个路由器。
由于GRE是将一个数据包封装到另一个数据包中,因此可能会遇到GRE的数据报大于网络接口所设定的数据包最大尺寸的情况。解决这种问题的方法是在隧道接口上配置ip tcp adjust-mss 1436。另外,虽然GRE并不支持加密,但是可以通过Tunnel key命令在隧道的两头各设置一个密钥。这个密钥其实就是一个明文的密码。由于GRE隧道没有状态控制,可能隧道的一端已经关闭,而另一端仍然开启。这一问题的解决方案就是在隧道两端开启keepalive数据包,它可以让隧道一端定时向另一端发送keepalive数据,确认端口保持开启状态。如果隧道的某一端没有按时收到keepalive数据,那么这一侧的隧道端口也会关闭。

IPSec(VPN)

IPSec(IP Security)是一组开放协议的总称,特定的通信方之间的IP层通过加密与数据源验证,以保证数据包在Internet网上传输时的私有性、完整性和真实性。IPSec通过AH(Authentication Header)和ESP(Encapsulating Security Payload)这两个安全协议来实现。


AH在IP包中的位置(隧道方式):
    -------------------                ------------------------------
    | IP | TCP | Data |  ---------->   | IP2 | AH | IP | TCP | Data |  
    -------------------                ------------------------------
1
2
3

ESP将需要保护的用户数据进行加密后再封装到IP包中,ESP可以保证数据的完整性、真实性和私有性。

ESP头在IP包中的位置(隧道方式):


    -------------------                ------------------------------------------------
    | IP | TCP | Data |  ---------->   | IP2 | ESP | IP | TCP | Data | Trailer | Auth |
    -------------------                ------------------------------------------------
 

###IPv6 over IPv4隧道

在IPv4网络向IPv6网络过渡的初期,IPv4网络已被大量部署,而IPv6网络只是散布在世界各地的一些孤岛。利用隧道技术可以在IPv4网络上创建隧道,从而实现IPv6孤岛之间的互连。在IPv4网络上用于连接IPv6孤岛的隧道成为IPv6 over IPv4隧道。为了实现IPv6 over IPv4隧道,需要在IPv4孤岛的隧道称为IPv6 over IPv4隧道。为了实现IPv6 over IPv4隧道,需要在IPv4网络与IPv6网络交界的边界路由设备商启动IPv4/IPv6双协议栈。

IPv6 over IPv4隧道技术的原理:

边界路由设备启动IPv4/IPv6双协议栈,并配置IPv6 over IPv4隧道。
边界路由设备在收到从IPv6网络侧发来的报文后,如果报文的目的地址不是自身且下一跳出接口为Tunnel接口,就要把收到的IPv6报文作为负载,加上Ipv4报文头,封装成IPv4报文。
在IPv4网络中,封装后的报文被传递到对端的边界路由设备。

对端边界路由设备对报文解封装,去掉IPv4报文头,然后将封装后的IPv6报文发送到对端的IPv6网络中。

其他隧道原理类似。

IPv4 over IPv6隧道


在IPv4 Internet向IPv6 Internet过渡后期,IPv6网络被大量部署后,而IPv4网络只是散布在世界各地的一些孤岛。利用隧道技术可以在IPv6网络上创建隧道,从而实现IPv4孤岛的互联,IPv4孤岛能通过IPv6公网访问其他IPv4网络。

http://www.alotcer.com/index.php?c=product&a=type&tid=1


 

状 态: 离线

会员简介

会员代号: qianyy0701
联 系 人: 俞先生
电  话: 0592-6195619
传  真: 0592-6195620
地  址: 厦门市集美区杏北二路146-148号5楼
邮  编: 361000
主  页:
 
该厂商相关技术文摘:
边缘计算对物联网重要性
工业无线路由器IS-IS与OSPF
无线数传终端DTU基础知识和原理
4G全网通工业无线路由器的级联与堆栈
工业网关在各行业的应用
工业级爱陆通4G路由器的功能与分类
使用爱陆通工业级5G路由器注意事项
5G/4G DTU四大核心功能
爱陆通5G工业级路由器的特点
Modbus网关通信协议介绍
RS485、RS232通信模块的主要作用
MQTT协议和Modbus协议的区别
更多文摘...
立即发送询问信息在线联系该技术文摘厂商:
用户名: 密码: 免费注册为中华工控网会员
请留下您的有效联系方式,以方便我们及时与您联络

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 不良信息举报
工控网客服热线:0755-86369299
版权所有 中华工控网 Copyright©2022 Gkong.com, All Rights Reserved