GRE协议介绍
项目背景
IPv6的(de)(de)(de)(de)部(bu)署大致要经历一个(ge)渐进的(de)(de)(de)(de)过(guo)程,在初始阶段(duan),IPv4的(de)(de)(de)(de)网(wang)(wang)络(luo)海洋中会(hui)出现(xian)(xian)若干(gan)局部(bu)零(ling)散的(de)(de)(de)(de)IPv6孤(gu)(gu)岛,为了(le)保持通信,这些孤(gu)(gu)岛通过(guo)跨(kua)越IPv4的(de)(de)(de)(de)隧(sui)道(dao)彼此连接;随着IPv6规模的(de)(de)(de)(de)应用,原来的(de)(de)(de)(de)孤(gu)(gu)岛逐渐聚合成为了(le)骨(gu)干(gan)的(de)(de)(de)(de)IPv6 Internet网(wang)(wang)络(luo),形成于IPv4骨(gu)干(gan)网(wang)(wang)并存的(de)(de)(de)(de)局面,在IPv6骨(gu)干(gan)上可以(yi)引(yin)入了(le)大量(liang)的(de)(de)(de)(de)新(xin)业务,同时可以(yi)充(chong)分发挥IPv6的(de)(de)(de)(de)诸多优势。为了(le)实(shi)现(xian)(xian)IPv6和IPv4网(wang)(wang)络(luo)资源的(de)(de)(de)(de)互访,还需(xu)要转换服(fu)务器以(yi)实(shi)现(xian)(xian)v6和v4的(de)(de)(de)(de)互通;最后,IPv4骨(gu)干(gan)网(wang)(wang)逐步萎(wei)缩成局部(bu)的(de)(de)(de)(de)孤(gu)(gu)岛,通过(guo)隧(sui)道(dao)连接,IPv6占据了(le)主导地位,具备全球范(fan)围的(de)(de)(de)(de)连通性(xing)。
IPv6提供很(hen)多过(guo)渡技术来(lai)实现上述这样(yang)一(yi)个演进过(guo)程(cheng)。这些(xie)过(guo)渡技术围(wei)绕(rao)两类问题解决(jue):
IPv6孤岛(dao)互(hu)通(tong)技术:实现IPv6网络(luo)和IPv6网络(luo)的互(hu)通(tong)
IPv6和IPv4互(hu)通技术:实现(xian)两个不同(tong)网络之间互(hu)相访问资源
目前,解(jie)决上述问题的基本过(guo)渡(du)技术有两种:双栈(zhan)和隧道。
双(shuang)栈(zhan):即(ji)设(she)备(bei)升级(ji)到IPv6的同(tong)时保留IPv4支持,可以同(tong)时访问IPv6和IPv4设(she)备(bei),包(bao)含(han)双(shuang)协议栈(zhan)支持,应用程序依(yi)靠DNS地址解析返回的地址类型,来决定使用何(he)种协议栈(zhan)。
隧(sui)道(dao):通过在一(yi)种(zhong)协议(yi)中承载另一(yi)种(zhong)协议(yi),实(shi)现(xian)跨越(yue)不同域(yu)的互通,具体可以(yi)是IPv6-in-IPv4,IPv6-in-MPLS,IPv4-in-IPv6等隧(sui)道(dao)类型。
GRE隧道(VPN)
GRE与IP in IP、IPX over IP等封装形式很相似,但(dan)比他们(men)更通用。在GRE的(de)(de)处理中,很多协(xie)议(yi)的(de)(de)席位(wei)差异都被忽(hu)略,这使得GRE不(bu)限于某个特(te)定的(de)(de)“X over Y”应用,而是一种(zhong)最基本(ben)的(de)(de)封装形式。
在(zai)最简单的(de)(de)(de)情(qing)况下,路由器(qi)接(jie)收到一个需要(yao)封(feng)装和路由的(de)(de)(de)原始数(shu)据报(bao)文(wen)(Payload),这个报(bao)文(wen)首先(xian)被(bei)GRE封(feng)装而(er)成GRE报(bao)文(wen),接(jie)着被(bei)封(feng)装在(zai)IP协议中(zhong),然后完全由IP层(ceng)负(fu)(fu)责此报(bao)文(wen)的(de)(de)(de)转发。原始报(bao)文(wen)的(de)(de)(de)协议被(bei)称之为(wei)乘客协议,GRE被(bei)称之为(wei)封(feng)装协议,而(er)负(fu)(fu)责转发的(de)(de)(de)IP协议被(bei)称之为(wei)传(chuan)递(Delivery)协议或传(chuan)输(shu)(Transport)协议。注(zhu)意(yi)到在(zai)以上的(de)(de)(de)流程(cheng)中(zhong)不(bu)用(yong)关心乘客协议的(de)(de)(de)具(ju)体格式或内容,整个被(bei)封(feng)装的(de)(de)(de)报(bao)文(wen)格式:
-------------------------------
| Delivery Header |
| (Transport Protocol) |
-------------------------------
| GRE Header |
| (Encapsulation Protocol |
-------------------------------
| Payload Packet |
| (Passenger Protocol) |
-------------------------------
GRE报头的格式如下(xia):
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从连(lian)接X协议(yi)(yi)的接口接收到X协议(yi)(yi)报文后(hou),首先交由X协议(yi)(yi)处理。
X协议根据报文(wen)头(tou)中(zhong)的目的地址在路由表(biao)(biao)或转(zhuan)发(fa)(fa)表(biao)(biao)中(zhong)查(cha)找出(chu)接口(kou),确定如何(he)转(zhuan)发(fa)(fa)此报文(wen)。如果发(fa)(fa)现出(chu)接口(kou)是GRE Tunnel接口(kou),则(ze)对报文(wen)进行GRE封装,即添加GRE头(tou)。
根(gen)据(ju)骨干网(wang)传输协议为IP,给报文加上IP头。IP头的源地址(zhi)就是(shi)隧(sui)道源地址(zhi),目(mu)的地址(zhi)就是(shi)隧(sui)道目(mu)的地址(zhi)。
根据该IP头的(de)目的(de)地址(即隧道目的(de)地址),在骨干网(wang)路由表中查找相应的(de)出接口(kou)并发送报文。之后,封装(zhuang)后的(de)报文将在该骨干网(wang)中传输。
2、解封装(zhuang)
解封装(zhuang)过(guo)程和封装(zhuang)过(guo)程相反。
Egress PE从GRE Tunnel接口收(shou)到(dao)该(gai)报文,分析IP头(tou)(tou)发(fa)现报文的目的地址(zhi)为本设备,则Egress PE去掉(diao)IP头(tou)(tou)后交(jiao)给GRE协(xie)议处理(li)(li)。GRE协(xie)议剥(bo)掉(diao)GRE报头(tou)(tou),获取X协(xie)议,再交(jiao)由X协(xie)议对此数据报文进(jin)行后续(xu)的转发(fa)处理(li)(li)。
配(pei)置(zhi)
左(zuo)边(bian)为R3,右边(bian)为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
!
配(pei)置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在(zai)同一(yi)网段(duan)
no shutdown
!
配置路(lu)由(you):
ip route 0.0.0.0/0 34.0.0.4 //到公网(wang)默认路由(you)
ip route 24.0.0.0/24 tunnel100 //到(dao)对方私网路由通(tong)过Tunnel 100访问(wen)
!
R4:
配(pei)置(zhi)公网IP:
interface GE0/3/4
ip address 34.0.0.4/24
no shutdown
!
配(pei)置私网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在同一网(wang)段
no shutdown
!
配置(zhi)路由:
ip route 0.0.0.0/0 34.0.0.3 //到公网默认路(lu)由
ip route 13.0.0.0/24 tunnel100 //到对方私网(wang)路由通过Tunnel 100访问(wen)
!
在R4上ping R3的私网地址13.0.0.3,抓包如(ru)下:
GRE报文解析
GRE头各字段解释:
C 校(xiao)验和(he)验证位。1-GRE头插入了校(xiao)验和(he)(Checksum)字段(duan)。0-GRE头不包含校(xiao)验和(he)字段(duan)。
K 关键字(zi)位(wei)。1-GRE头(tou)插入了(le)关键字(zi)(Key)字(zi)段。0-GRE头(tou)不包含关键字(zi)字(zi)段。
Recursion GRE报(bao)文被封(feng)装(zhuang)的层数。一次(ci)GRE封(feng)装(zhuang)后将该字段(duan)(duan)加1。如(ru)果封(feng)装(zhuang)层数大于(yu)3,则丢弃该报(bao)文。该字段(duan)(duan)的作(zuo)用是防止报(bao)文被无(wu)限次(ci)的封(feng)装(zhuang)。RFC1701规(gui)定该字段(duan)(duan)默认值为0。RFC2784规(gui)定当(dang)发送和接受端(duan)该字段(duan)(duan)不一致时(shi)不会引起异常,且接收端(duan)必须忽(hu)略该字段(duan)(duan)。设备实(shi)现时(shi)该字段(duan)(duan)仅在(zai)加封(feng)装(zhuang)报(bao)文时(shi)用作(zuo)标记隧道(dao)嵌套层数,GRE解封(feng)装(zhuang)报(bao)文时(shi)不感(gan)知(zhi)该字段(duan)(duan),不会影响报(bao)文的处理(li)。
Flags 预(yu)留字段。当前必须置为(wei)0。
Version 版本字段。必须置为0。
Protocol 标(biao)识(shi)乘客(ke)(ke)协(xie)议(yi)的协(xie)议(yi)类型(xing)。常见的乘客(ke)(ke)协(xie)议(yi)为IPv4协(xie)议(yi),协(xie)议(yi)代码为0800。
Checksum 对GRE头及其负载的校验和字段(duan)。
Key 关键字(zi)字(zi)段,隧道接收端用(yong)于对收到的报文进行(xing)验(yan)证。
目前(qian)实现的GRE头不包(bao)含(han)源路(lu)由(you)字段,所以(yi)Bit 1、Bit 3和Bit 4都置为0。
GRE安全机(ji)制
GRE本身提供(gong)两种基本的安全机(ji)制:校验和(he)验证,识(shi)别关键字(zi)。
1、校验和验证
校验和验证是指对封装的报文进行端到端校验。
若(ruo)GRE报(bao)(bao)文(wen)(wen)头中的(de)C位标识位置1,则(ze)(ze)校(xiao)(xiao)验(yan)(yan)(yan)和(he)有效。发送方将根据(ju)GRE头及(ji)Payload信息计(ji)算校(xiao)(xiao)验(yan)(yan)(yan)和(he),并将包(bao)含校(xiao)(xiao)验(yan)(yan)(yan)和(he)的(de)报(bao)(bao)文(wen)(wen)发送给对(dui)端。接(jie)收方对(dui)接(jie)收到的(de)报(bao)(bao)文(wen)(wen)计(ji)算校(xiao)(xiao)验(yan)(yan)(yan)和(he),并与报(bao)(bao)文(wen)(wen)中的(de)校(xiao)(xiao)验(yan)(yan)(yan)和(he)比较,如果一致(zhi)则(ze)(ze)对(dui)报(bao)(bao)文(wen)(wen)进一步处理,否(fou)则(ze)(ze)丢弃。
隧道两端(duan)(duan)可以根(gen)据实际(ji)应用的(de)需要(yao)决定配置(zhi)(zhi)校(xiao)(xiao)验(yan)和或(huo)禁止校(xiao)(xiao)验(yan)和。如果本(ben)端(duan)(duan)配置(zhi)(zhi)了校(xiao)(xiao)验(yan)和而(er)对(dui)端(duan)(duan)没(mei)有配置(zhi)(zhi),则(ze)本(ben)端(duan)(duan)将不会(hui)对(dui)接收到的(de)报文(wen)(wen)进行校(xiao)(xiao)验(yan)和检(jian)查,但对(dui)发(fa)送的(de)报文(wen)(wen)计(ji)算校(xiao)(xiao)验(yan)和;相反,如果本(ben)端(duan)(duan)没(mei)有配置(zhi)(zhi)校(xiao)(xiao)验(yan)和而(er)对(dui)端(duan)(duan)已(yi)配置(zhi)(zhi),则(ze)本(ben)端(duan)(duan)将对(dui)从对(dui)端(duan)(duan)发(fa)来的(de)报文(wen)(wen)进行校(xiao)(xiao)验(yan)和检(jian)查,但对(dui)发(fa)送的(de)报文(wen)(wen)不计(ji)算校(xiao)(xiao)验(yan)和。
2、识别关键字
识别(bie)关键字(Key)验证是(shi)指对Tunnel接口进行校验。通过这(zhei)种(zhong)弱安全机制,可以(yi)防止错误识别(bie)、接收(shou)其它地方来的报文。
RFC1701中(zhong)规定:若GRE报(bao)文头中(zhong)的K位为1,则在GRE头中(zhong)插入一个四字(zi)节长关键(jian)字(zi)字(zi)段,收发(fa)双方将进行识(shi)别关键(jian)字(zi)的验(yan)证。
关键(jian)字(zi)(zi)(zi)的(de)(de)(de)作用(yong)(yong)是标志(zhi)隧道中的(de)(de)(de)流(liu)量,属于同(tong)一流(liu)量的(de)(de)(de)报文(wen)使(shi)用(yong)(yong)相同(tong)的(de)(de)(de)关键(jian)字(zi)(zi)(zi)。在(zai)报文(wen)解封装时(shi),GRE将基于关键(jian)字(zi)(zi)(zi)来识(shi)别属于相同(tong)流(liu)量的(de)(de)(de)数据报文(wen)。只有Tunnel两端设置的(de)(de)(de)识(shi)别关键(jian)字(zi)(zi)(zi)完全一致时(shi)才能(neng)通过验证(zheng),否(fou)则将报文(wen)丢弃(qi)。这里的(de)(de)(de)“完全一致”是指两端都(dou)不设置识(shi)别关键(jian)字(zi)(zi)(zi),或者(zhe)两端都(dou)设置相同(tong)的(de)(de)(de)关键(jian)字(zi)(zi)(zi)。
GRE的Keepalive检测
由于GRE协议(yi)并不(bu)具备检测链路状态的功能,如(ru)果对端接(jie)口不(bu)可(ke)达,隧道并不(bu)能及时关闭该Tunnel连接(jie),这样会(hui)造成源端会(hui)不(bu)断的向(xiang)对端转(zhuan)发数(shu)据(ju),而对端却因(yin)隧道不(bu)通(tong)接(jie)收不(bu)到(dao)报文,由此就(jiu)会(hui)形成数(shu)据(ju)空洞。
GRE的(de)(de)Keepalive检(jian)测功(gong)能(neng)可以检(jian)测隧道状态,即检(jian)测隧道对(dui)端是否可达(da)。如果对(dui)端不(bu)可达(da),隧道连(lian)接(jie)就会及时(shi)关闭(bi),避免因对(dui)端不(bu)可达(da)而造(zao)成(cheng)的(de)(de)数据(ju)丢失,有(you)效防止数据(ju)空(kong)洞,保证数据(ju)传输的(de)(de)可靠性。
Keepalive检(jian)测功能的实现过程如下:
当(dang)GRE隧(sui)道的源端使能Keepalive检测(ce)功能后,就创建一个定时器,周期(qi)地发送Keepalive探(tan)测(ce)报(bao)文(wen),同时通过计(ji)数器进行不可达计(ji)数。每(mei)发送一个探(tan)测(ce)报(bao)文(wen),不可达计(ji)数加1。
对端(duan)每收到(dao)一(yi)个探测报文,就给源端(duan)发送一(yi)个回应报文。
如(ru)果源端(duan)(duan)(duan)的计(ji)数器值(zhi)未达到(dao)预(yu)(yu)先设(she)置的值(zhi)就收到(dao)回应报文(wen)(wen),就表明对端(duan)(duan)(duan)可达。如(ru)果源端(duan)(duan)(duan)的计(ji)数器值(zhi)到(dao)达预(yu)(yu)先设(she)置的值(zhi)——重试次数(Retry Times)时,还没收到(dao)回送报文(wen)(wen),就认为对端(duan)(duan)(duan)不可达。此时,源端(duan)(duan)(duan)将(jiang)关闭隧(sui)道(dao)连接。但是源端(duan)(duan)(duan)口(kou)仍会(hui)继续发送Keepalive报文(wen)(wen),若(ruo)对端(duan)(duan)(duan)Up,则源端(duan)(duan)(duan)口(kou)也会(hui)Up,建立隧(sui)道(dao)链接。
对(dui)于设备实现的GRE Keepalive检测功(gong)能(neng)(neng),只要(yao)在隧(sui)道一(yi)端(duan)(duan)配(pei)置Keepalive,该(gai)端(duan)(duan)就(jiu)具备Keepalive功(gong)能(neng)(neng),而(er)不(bu)要(yao)求隧(sui)道对(dui)端(duan)(duan)也具备该(gai)功(gong)能(neng)(neng)。隧(sui)道对(dui)端(duan)(duan)收到(dao)报(bao)(bao)文(wen)(wen),如果是(shi)Keepalive探测报(bao)(bao)文(wen)(wen),无(wu)论是(shi)否配(pei)置Keepalive,都会给(ji)源端(duan)(duan)发送一(yi)个回(hui)应报(bao)(bao)文(wen)(wen)。
GRE具有如下的优点:
多协议的本地网(wang)可(ke)以(yi)通过单(dan)一协议的骨干网(wang)实现传输;
将(jiang)一些不能(neng)连(lian)续(xu)的子网连(lian)接起来(lai),用于组建VPN;
扩大了(le)网(wang)络的(de)工作范(fan)围,包(bao)括那些路由网(wang)管有限的(de)协议。如IPX包(bao)最多可(ke)以转发16次(即(ji)经过16个(ge)路由器),而在一(yi)个(ge)Tunnel连(lian)接中看(kan)上去只经过一(yi)个(ge)路由器。
由于GRE是将一(yi)(yi)(yi)(yi)(yi)(yi)(yi)个(ge)数(shu)据包(bao)(bao)封(feng)装到另(ling)一(yi)(yi)(yi)(yi)(yi)(yi)(yi)个(ge)数(shu)据包(bao)(bao)中,因此可能会遇到GRE的(de)(de)数(shu)据报大(da)于网络接(jie)口(kou)(kou)(kou)所设(she)定的(de)(de)数(shu)据包(bao)(bao)最(zui)大(da)尺寸的(de)(de)情况。解决(jue)这(zhei)(zhei)种(zhong)问题(ti)的(de)(de)方法(fa)是在(zai)隧(sui)(sui)道(dao)(dao)接(jie)口(kou)(kou)(kou)上配(pei)置ip tcp adjust-mss 1436。另(ling)外,虽然(ran)GRE并不支持(chi)(chi)加密(mi),但(dan)是可以(yi)通过Tunnel key命令在(zai)隧(sui)(sui)道(dao)(dao)的(de)(de)两(liang)头各设(she)置一(yi)(yi)(yi)(yi)(yi)(yi)(yi)个(ge)密(mi)钥。这(zhei)(zhei)个(ge)密(mi)钥其实就是一(yi)(yi)(yi)(yi)(yi)(yi)(yi)个(ge)明文(wen)的(de)(de)密(mi)码。由于GRE隧(sui)(sui)道(dao)(dao)没(mei)有状态控制,可能隧(sui)(sui)道(dao)(dao)的(de)(de)一(yi)(yi)(yi)(yi)(yi)(yi)(yi)端(duan)(duan)已经关(guan)闭,而另(ling)一(yi)(yi)(yi)(yi)(yi)(yi)(yi)端(duan)(duan)仍(reng)然(ran)开启(qi)。这(zhei)(zhei)一(yi)(yi)(yi)(yi)(yi)(yi)(yi)问题(ti)的(de)(de)解决(jue)方案就是在(zai)隧(sui)(sui)道(dao)(dao)两(liang)端(duan)(duan)开启(qi)keepalive数(shu)据包(bao)(bao),它可以(yi)让隧(sui)(sui)道(dao)(dao)一(yi)(yi)(yi)(yi)(yi)(yi)(yi)端(duan)(duan)定时向另(ling)一(yi)(yi)(yi)(yi)(yi)(yi)(yi)端(duan)(duan)发送keepalive数(shu)据,确认端(duan)(duan)口(kou)(kou)(kou)保持(chi)(chi)开启(qi)状态。如果隧(sui)(sui)道(dao)(dao)的(de)(de)某一(yi)(yi)(yi)(yi)(yi)(yi)(yi)端(duan)(duan)没(mei)有按(an)时收到keepalive数(shu)据,那么这(zhei)(zhei)一(yi)(yi)(yi)(yi)(yi)(yi)(yi)侧的(de)(de)隧(sui)(sui)道(dao)(dao)端(duan)(duan)口(kou)(kou)(kou)也会关(guan)闭。
IPSec(VPN)
IPSec(IP Security)是(shi)一组开放协议(yi)的(de)(de)总(zong)称,特(te)定的(de)(de)通(tong)信方之间的(de)(de)IP层通(tong)过(guo)加密与数(shu)据源验(yan)证,以(yi)保证数(shu)据包在Internet网上传输时的(de)(de)私有性(xing)、完整性(xing)和真实性(xing)。IPSec通(tong)过(guo)AH(Authentication Header)和ESP(Encapsulating Security Payload)这两个(ge)安(an)全(quan)协议(yi)来实现。
AH在IP包中(zhong)的位置(隧道方式):
------------------- ------------------------------
| IP | TCP | Data | ----------> | IP2 | AH | IP | TCP | Data |
------------------- ------------------------------
1
2
3
ESP将(jiang)需要保(bao)护的用户数(shu)据进行加(jia)密后(hou)再封(feng)装到IP包中(zhong),ESP可(ke)以(yi)保(bao)证数(shu)据的完整性(xing)、真实性(xing)和(he)私有(you)性(xing)。
ESP头(tou)在IP包中的(de)位置(zhi)(隧道方式):
------------------- ------------------------------------------------
| IP | TCP | Data | ----------> | IP2 | ESP | IP | TCP | Data | Trailer | Auth |
------------------- ------------------------------------------------
###IPv6 over IPv4隧道
在IPv4网(wang)络(luo)(luo)(luo)(luo)向IPv6网(wang)络(luo)(luo)(luo)(luo)过(guo)渡的(de)初期,IPv4网(wang)络(luo)(luo)(luo)(luo)已被(bei)大量部署,而IPv6网(wang)络(luo)(luo)(luo)(luo)只是散(san)布在世界各地的(de)一些孤岛(dao)。利用隧(sui)(sui)(sui)道(dao)(dao)技(ji)术可(ke)以在IPv4网(wang)络(luo)(luo)(luo)(luo)上创建隧(sui)(sui)(sui)道(dao)(dao),从而实现(xian)IPv6孤岛(dao)之间的(de)互(hu)连。在IPv4网(wang)络(luo)(luo)(luo)(luo)上用于连接(jie)IPv6孤岛(dao)的(de)隧(sui)(sui)(sui)道(dao)(dao)成为(wei)IPv6 over IPv4隧(sui)(sui)(sui)道(dao)(dao)。为(wei)了(le)实现(xian)IPv6 over IPv4隧(sui)(sui)(sui)道(dao)(dao),需(xu)要在IPv4孤岛(dao)的(de)隧(sui)(sui)(sui)道(dao)(dao)称为(wei)IPv6 over IPv4隧(sui)(sui)(sui)道(dao)(dao)。为(wei)了(le)实现(xian)IPv6 over IPv4隧(sui)(sui)(sui)道(dao)(dao),需(xu)要在IPv4网(wang)络(luo)(luo)(luo)(luo)与IPv6网(wang)络(luo)(luo)(luo)(luo)交界的(de)边(bian)界路由设备商(shang)启动IPv4/IPv6双协议栈。
IPv6 over IPv4隧道技术的原理:
边界路由设备启动IPv4/IPv6双协议(yi)栈,并配(pei)置(zhi)IPv6 over IPv4隧道。
边界(jie)路由设备在收(shou)(shou)到(dao)从(cong)IPv6网络侧(ce)发来的(de)(de)报(bao)文后,如果报(bao)文的(de)(de)目(mu)的(de)(de)地址不(bu)是(shi)自身且下一跳出接口为Tunnel接口,就要(yao)把收(shou)(shou)到(dao)的(de)(de)IPv6报(bao)文作为负载(zai),加上Ipv4报(bao)文头(tou),封装(zhuang)成(cheng)IPv4报(bao)文。
在IPv4网络中(zhong),封装后的(de)报文被传(chuan)递到对端的(de)边界路由设备。
对端(duan)边界路由设备对报文解封装,去掉IPv4报文头(tou),然(ran)后将封装后的(de)IPv6报文发送到对端(duan)的(de)IPv6网(wang)络中。
其(qi)他隧道(dao)原(yuan)理类似。
IPv4 over IPv6隧道
在IPv4 Internet向IPv6 Internet过(guo)渡后(hou)(hou)期,IPv6网(wang)络被大量部署后(hou)(hou),而IPv4网(wang)络只是散布在世界(jie)各(ge)地的一(yi)些孤岛。利用隧(sui)道技术(shu)可以在IPv6网(wang)络上创建隧(sui)道,从而实现(xian)IPv4孤岛的互联,IPv4孤岛能通过(guo)IPv6公(gong)网(wang)访问(wen)其他IPv4网(wang)络。