CN100372347C - 扩展边界网关协议的4over6隧道封装及解封装方法 - Google Patents

扩展边界网关协议的4over6隧道封装及解封装方法 Download PDF

Info

Publication number
CN100372347C
CN100372347C CNB2006101144231A CN200610114423A CN100372347C CN 100372347 C CN100372347 C CN 100372347C CN B2006101144231 A CNB2006101144231 A CN B2006101144231A CN 200610114423 A CN200610114423 A CN 200610114423A CN 100372347 C CN100372347 C CN 100372347C
Authority
CN
China
Prior art keywords
ipv4
ipv6
address
router
encapsulating sheet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2006101144231A
Other languages
English (en)
Other versions
CN1949776A (zh
Inventor
崔勇
吴建平
周云涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CNB2006101144231A priority Critical patent/CN100372347C/zh
Publication of CN1949776A publication Critical patent/CN1949776A/zh
Application granted granted Critical
Publication of CN100372347C publication Critical patent/CN100372347C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明属于IPv4与IPv6网络互联方法,其特征在于通过在4over6双栈路由器之间建立I-BGP的peer关系,并且路由器之间使用BGP-MP协议互相传递各自连接的IPv4孤立网络的路由可达信息,完成隧道的自动配置;其中数据平面的处理包括对IPv4分组的封装操作和对IPv6分组的解封装操作。由于使用了自动建立隧道的机制,路由器需要保存IPv4网络地址与IPv6地址的对应关系,该对应关系存放在封装表结构中,并通过BGP-MP协议来更新,从而实现自动的IPv4 over IPv6配置。它配置简单、适用性广,能够运用在复杂拓扑结构下的IPv4和IPv6网络互联。

Description

扩展边界网关协议的4over6隧道封装及解封装方法
技术领域
使用BGP-MP扩展的4over6隧道中的封装及解封装方法属于互联网技术领域,尤其涉及IPv4与IPv6网络互联的隧道技术。
背景技术
由于IPv4地址空间严重不足,基于IPv6的下一代互联网将得到迅速发展。然而,由于IPv4互联网已具有相当规模和广泛的应用程序,因此IPv4网络必然在今后长期存在,形成与下一代IPv6网络逐步融合的过程。随着IPv6骨干网络建立,需要引入一种新技术将IPv4终端用户通过快速高效的IPv6骨干网络连接起来以提高网络的服务质量。此外,随着IPv4网络的逐步废弃,将产生IPv4网络不连通的过渡阶段,在此阶段中IPv6网络作为连通多个IPv4网络的桥梁,需要基于此实现不同IPv4网络之间的通信。
IPv6和IPv4网络的地址结构截然不同,IPv6和IPv4网络的互联技术成为互联网发展的一个重要难题。虽然目前已出现了不少IPv6和IPv4网络的互联技术,如RFC2893、RFC2529、RFC3056、RFC3053和一些IETF draft,然而这些技术集中在IPv6 over IPv4技术上。也就是说,孤立的IPv6网络之间如何通过IPv4主干网互相连接。上述技术定义了在这种网络拓扑结构下,如何通过建立在IPv6上的隧道实现IPv4网络之间的交互。
随着IPv6网络的发展以及今后IPv4网络的逐步废弃,IPv6将成为网络互联的核心,因而有可能出现IPv4网络之间通过IPv4协议不再连通的情况。此外,对于IPv6网络提供了高速高质量分组传输的情况来说,IPv4网络之间采用基于IPv6骨干网络的传输通信也是一种可能的高质量传输方式。因此,有必要考虑如何通过建立IPv4 over IPv6的隧道实现IPv4网络之间的交互。虽然目前有IPv4 over IPv6的相关技术(比如6to4),但是这些技术使用了特殊的IPv6地址,无法对网络的变化做出自动的配置,因此应用范围受到了限制。
本发明提出了一种在IPv6网络上实现IPv4网络互联的自动隧道建立方法,简称4over6。通过在4over6双栈路由器之间建立I-BGP的peer关系,并且路由器之间使用BGP-MP协议互相传递各自连接的IPv4孤立网络的路由可达信息,完成隧道的自动配置。其中数据平面的处理包括对IPv4分组的封装操作和对IPv6分组的解封装操作。由于使用了自动建立隧道的机制,路由器需要保存IPv4网络地址与IPv6地址的对应关系,该对应关系存放在封装表结构中,并通过BGP-MP协议来更新。
发明内容
本发明的目的在于设计使用BGP-MP扩展的4over6隧道中的双栈路由器在封装报文时所需要查询的封装表,包括封装表的数据结构以及查询、维护的算法。
本发明所提出的方法的特征在于:对IPv4分组进行封装操作,对IPv6分组进行解封装操作;封装时使用的IPv6目的地址通过查询封装表得到;封装表储存了IPv4网络地址(包括前缀长度)与IPv6地址对应关系;封装表提供了更新记录的接口,可用于对记录的删除、添加和更新操作;封装表提供了查询记录的接口,可根据某个给定的IPv4主机地址查询与之匹配的IPv4网络地址,从而返回对应的IPv6地址用作封装操作,在查询的时候使用了按照网络前缀从大到小的顺序进行匹配;封装表使用了便于快速、有效搜索网络地址的数据结构。该方法依次含有以下步骤:
步骤(1)在各个4over6双栈路由器中通过一个扩展的边界网关协议BGP-MP模块确定基于边界网关协议的点对点关系,每个路由器都通过扩展的边界网关协议BGP-MP把路由信息发送给其余的路由器,其中包括发送方路由器的IPv4网络地址及自身虚接口IPv6地址,接收方路由器在收到BGP-MP消息后在本地路由表中加入IPv4地址对应的项,并且在封装表中加入BGP-MP消息中IPv4网络地址和IPv6虚接口地址的对应关系;
在所述封装表中还应该具有以下接口:
更新记录接口,用于对接收方4over6封装表的记录的更新和删除操作;
查询记录接口,用于根据收到的IPv4主机地址查询封装表中对应的IPv4网络地址,并把相应的IPv6地址返回给本地虚接口以便该虚接口使用此IPv6地址对IPv4分组进行封装;
步骤(2)当4over6双栈路由器在收到IPv4分组的时候,依次完成以下步骤:
步骤(2.1)根据该IPv4分组的目的地址查询本地转发表,将分组交给本地虚接口处理;
步骤(2.2)该虚接口根据IPv4目的地址调用封装表的查询接口;
步骤(2.3)封装表接收到查询请求后,按照前缀从大倒小的顺序查找封装表,直到找到匹配的IPv4网络地址,然后将对应的IPv6地址返回给虚接口;
步骤(2.4)虚接口使用查询到的IPv6地址对IPv4分组进行封装,形成IPv6隧道包;
步骤(2.5)双栈路由器将封装好的IPv6分组通过查询本地IPv6转发表后发送出去;
步骤(3)当4over6双栈路由器接收到IPv6分组后依次执行以下步骤:
步骤(3.1)判断该IPv6分组的”下一协议号”域是否是IPv4类型,如果是的话则执行下面的步骤:
步骤(3.2)将该IPv6分组的IPv6头去掉,还原载荷中的相应IPv4分组;
步骤(3.3)路由器通过查找本地IPv4转发表将还原出来的IPv4分组发送出去;
步骤(4)当4over6双栈路由器接收到BGP-MP消息,需要更新4over6路由信息时,依次执行以下步骤:
步骤(4.1)调用封装表的更新接口,传入待更新的IPv4网络地址和IPv6地址;
步骤(4.2)在封装表中顺序查找与传入的IPv4网络地址相同的项,如果找到则用传入的IPv6地址更新该项中的IPv6地址;
步骤(4.3)如果没有找到,则在封装表中插入一项,其IPv4网络地址和IPv6地址就使用传入的地址;
步骤(5)当4over6路由器收到路由不可达的BGP-MP消息时,需要删除路由器中的路由信息以及调用封装表模块执行以下步骤:
步骤(5.1)调用封装表的删除接口,传入待删除的IPv4网络地址;
步骤(5.2)在封装表中顺序查找IPv4网络地址与传入的地址相同的项,如果找到,则将该项删除。
本发明目前已运用在清华大学所研制的4over6服务器中,在全国各地已部署了8个节点,实现了IPv6网络上的IPv4网络互通。
附图说明
图1.封装表数据结构示意图;
图2.4over6系统拓扑示意图;
图3.4over6系统封装解封装流程图。
具体实施方式
在4over6系统中,最基本的组成是两个孤立IPv4网络和一个IPv6主干网,其中主干网与两个IPv4网络之间分别用一台4over6路由器连接起来。这种连接方式可以用图2来表示。
以图2所示的拓扑为例,从分组转发的角度来看,当网络A中的IPv4分组想要到达网络B的时候,必然需要经过4over6路由器A的封装和4over6路由器B的解封装过程。由于封装表中存放着IPv4网络地址与IPv6地址的对应关系,A在对IPv4分组进行封装的时候通过查找封装表可以得知其目的IPv4地址(网络B)所对应的PE路由器IPv6地址(4over6路由器B的IPv6地址),然后用此地址进行封装即可。
从路由控制的角度来看,4over6路由器之间建立了BGP的peer关系,每个路由器都通过MP-BGP扩展的消息将路由信息发送给其余的路由器。在图2的拓扑中,路由器B将网络B的网络地址以及路由器B自身的虚接口IPv6地址通过MP-BGP消息发送给路由器A,A收到消息后在本地的路由表中加入相应的项,同时在封装表中加入网络B的网络地址与路由器B的虚接口IPv6地址的对应关系;同时路由器A也向B通过MP-BGP发送网络A的地址信息,当双方的路由表和封装表都建立完毕之后,就可以进行正常的4over6通信(即封装一解封装)过程了。
图1描述了封装表数据结构的设计。如图所示,整个封装表使用一个Zones数组(大小为33)记录指向不同前缀长度的IPv4网络地址的Hash表的指针,每一个hash表中所记录的所有项的IPv4目的地址都具有相同的前缀长度。在hash表的每一项中,记录了IPv4网络地址和对应的下一跳双栈4over6路由器IPv6虚接口地址。
对封装表所提供的三个操作(更新、删除和查询)接口的执行流程则描述如下:
更新记录的接口如下:
void ect_update(struct in_addr dst_addr,unsigned int dst_mask,struct in6_addr vif_addr);
参数:
dst_addr要更新的目的IPv4网络地址
dst_mask该网络地址的前缀长度
vif_addr该目的网络地址对应的双栈4over6路由器的IPv6虚接口地址
返回值:
封装表更新操作的具体步骤为:
1.计算dst_addr的hash值
2.对mask对应的hash表的相应位置:
a)锁定该位置
b)若找到和dst_addr相同的表项
i.更新该项的地址域值(即改写该表项的IPv6地址为vif_addr)
c)若没有找到相同的表项
i.将dst_addr和vif_addr加入hash表的对应位置
d)对该位置解除锁定
删除记录的接口如下:
void ect_delete(struct in_addr dst_addr,unsigned int dst_mask);
参数:
dst_addr要删除的目的IPv4网络或主机地址
dst_mask该网络地址的掩码长度(二进制位“1”的个数)
返回值:
执行流程(封装表维护模块接收到消息后的操作):
1.计算dst_addr的hash值
2.对mask对应的hash表的相应位置:
a)锁定该位置
b)若找到和dst_addr相同的表项
i.将表项从hash表中删除
c)对该位置解除锁定
int ect_query(struct_in_addr dst_addr,struct in6_addr*vif_addr);
参数:
dst_addr要查询的目的IPv4地址
vif_addr查询结果通过此参数(指针)返回
返回值:
如果函数查询成功(即找到了对应的IPv6地址),返回0,否则返回-1。
执行流程:
1.对目的地址dst_addr计算hash值
2.对于zones中的每一个hash表,作如下操作(按照掩码长度从大到小的顺序):
a)锁定hash表中该dst_addr的hash值对应的位置
b)在此位置的链表中查找目的地址为dst_addr的表项
c)解除对该位置的锁定
d)若找到,返回结果
e)若未找到,继续搜索下一个hash表

Claims (1)

1.扩展边界网关协议的4over6隧道封装及解封装方法,其特征在于,该方法一次含有以下步骤:
步骤(1)在各个4over6双栈路由器中通过一个扩展的边界网关协议BGP-MP模块确定基于边界网关协议的点对点关系,每个路由器都通过扩展的边界网关协议BGP-MP把路由信息发送给其余的路由器,其中包括发送方路由器的IPv4网络地址及自身虚接口IPv6地址,接收方路由器在收到BGP-MP消息后在本地路由表中加入IPv4地址对应的项,并且在封装表中加入BGP-MP消息中IPv4网络地址和IPv6虚接口地址的对应关系;
在所述封装表中还应该具有以下接口:
更新记录接口,用于对接收方4over6封装表的记录的更新和删除操作;
查询记录接口,用于根据收到的IPv4主机地址查询封装表中对应的IPv4网络地址,并把相应的IPv6地址返回给本地虚接口以便该虚接口使用此IPv6地址对IPv4分组进行封装;
步骤(2)当4over6双栈路由器在收到IPv4分组的时候,依次完成以下步骤:
步骤(2.1)根据该IPv4分组的目的地址查询本地转发表,将分组交给本地虚接口处理;
步骤(2.2)该虚接口根据IPv4目的地址调用封装表的查询接口;
步骤(2.3)封装表接收到查询请求后,按照前缀从大倒小的顺序查找封装表,直到找到匹配的IPv4网络地址,然后将对应的IPv6地址返回给虚接口;
步骤(2.4)虚接口使用查询到的IPv6地址对IPv4分组进行封装,形成IPv6隧道包;
步骤(2.5)双栈路由器将封装好的IPv6分组通过查询本地IPv6转发表后发送出去;
步骤(3)当4over6双栈路由器接收到IPv6分组后依次执行以下步骤:
步骤(3.1)判断该IPv6分组的”下一协议号”域是否是IPv4类型,如果是的话则执行下面的步骤:
步骤(3.2)将该IPv6分组的IPv6头去掉,还原载荷中的相应IPv4分组;
步骤(3.3)路由器通过查找本地IPv4转发表将还原出来的IPv4分组发送出去;
步骤(4)当4over6双栈路由器接收到BGP-MP消息,需要更新4over6路由信息时,依次执行以下步骤:
步骤(4.1)调用封装表的更新接口,传入待更新的IPv4网络地址和IPv6地址;
步骤(4.2)在封装表中顺序查找与传入的IPv4网络地址相同的项,如果找到则用传入的IPv6地址更新该项中的IPv6地址;
步骤(4.3)如果没有找到,则在封装表中插入一项,其IPv4网络地址和IPv6地址就使用传入的地址;
步骤(5)当4over6路由器收到路由不可达的BGP-MP消息时,需要删除路由器中的路由信息以及调用封装表模块执行以下步骤:
步骤(5.1)调用封装表的删除接口,传入待删除的IPv4网络地址;
步骤(5.2)在封装表中顺序查找IPv4网络地址与传入的地址相同的项,如果找到,则将该项删除。
CNB2006101144231A 2006-11-10 2006-11-10 扩展边界网关协议的4over6隧道封装及解封装方法 Expired - Fee Related CN100372347C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006101144231A CN100372347C (zh) 2006-11-10 2006-11-10 扩展边界网关协议的4over6隧道封装及解封装方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006101144231A CN100372347C (zh) 2006-11-10 2006-11-10 扩展边界网关协议的4over6隧道封装及解封装方法

Publications (2)

Publication Number Publication Date
CN1949776A CN1949776A (zh) 2007-04-18
CN100372347C true CN100372347C (zh) 2008-02-27

Family

ID=38019156

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101144231A Expired - Fee Related CN100372347C (zh) 2006-11-10 2006-11-10 扩展边界网关协议的4over6隧道封装及解封装方法

Country Status (1)

Country Link
CN (1) CN100372347C (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101155115B (zh) * 2007-07-26 2010-09-08 杭州华三通信技术有限公司 一种自动隧道的实现方法及设备
CN101175043B (zh) * 2007-11-21 2011-04-20 中兴通讯股份有限公司 一种支持IPv6终端接入IPv4核心网的系统及方法
CN101340372B (zh) 2008-08-21 2012-09-19 中国移动通信集团公司 号码自动路由方法、更新方法、撤销方法、路由器及设备
CN101686181B (zh) * 2008-09-28 2013-06-05 华为技术有限公司 路由发布、安装方法及网络节点设备
CN101715174B (zh) * 2008-10-08 2012-09-19 中国移动通信集团公司 多媒体消息发送方法、业务中心、wap网关及系统
CN101374096B (zh) * 2008-10-22 2011-05-18 清华大学 一种虚拟并存的互联网体系结构
CN101447935B (zh) * 2008-11-20 2011-12-21 华为技术有限公司 数据包转发方法、系统及设备
CN102377628B (zh) * 2010-08-12 2015-01-07 杭州华三通信技术有限公司 建立DS-Lite隧道的方法和DS-Lite CGN
CN102546362A (zh) * 2010-12-20 2012-07-04 中兴通讯股份有限公司 报文处理方法、系统和用户前端设备
CN102904814B (zh) * 2012-10-19 2015-09-16 福建星网锐捷网络有限公司 数据传输方法、源pe、目的pe和数据传输系统
CN102938736B (zh) * 2012-11-20 2016-06-08 杭州迪普科技有限公司 一种实现IPv4报文穿越IPv6网络的方法和设备
CN103227787B (zh) * 2013-04-09 2017-02-08 清华大学 一种基于ARP代理的4over6隧道自动建立方法
CN103825972B (zh) * 2014-02-21 2016-10-12 清华大学 一种基于ICMPv6的IPv6隧道通信方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1694432A (zh) * 2005-04-30 2005-11-09 浙江大学 支持层次移动管理的移动IPv6路由器
CN1761244A (zh) * 2005-11-11 2006-04-19 清华大学 设置边界网关协议路由选择通知功能的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1694432A (zh) * 2005-04-30 2005-11-09 浙江大学 支持层次移动管理的移动IPv6路由器
CN1761244A (zh) * 2005-11-11 2006-04-19 清华大学 设置边界网关协议路由选择通知功能的方法

Also Published As

Publication number Publication date
CN1949776A (zh) 2007-04-18

Similar Documents

Publication Publication Date Title
CN100372347C (zh) 扩展边界网关协议的4over6隧道封装及解封装方法
CN111682996B (zh) 网络中报文转发的方法、网络节点、网络系统
CN102100041B (zh) 基于由包目的地地址与出站接口构造的路由搜索关键字的包出站发送
CN102075438B (zh) 单播数据帧传输方法及装置
CN102938736B (zh) 一种实现IPv4报文穿越IPv6网络的方法和设备
CN107786437B (zh) 报文转发方法及装置
CN106657637A (zh) 能够在保持手持服务功能集的同时提供数据网络共享服务的手持设备
CN102792651B (zh) 在mac层应用服务路径路由选择的装置
CN105379228A (zh) 实现arp的方法、交换设备及控制设备
CN104683210A (zh) 一种自动建立隧道的方法和装置
CN102438331B (zh) 一种移动终端通过手机上网的方法及系统
CN109936492A (zh) 一种通过隧道传输报文的方法、装置和系统
CN105227466A (zh) 通信处理方法和装置
CN113726907A (zh) 一种路由处理方法、网元设备、装置以及可读存储介质
CN106209637A (zh) 从虚拟可扩展局域网至虚拟局域网的报文转发方法和设备
CN103152265B (zh) 一种spb网络中的报文转发方法和设备
CN110752989A (zh) 一种东西向流量转发方法与装置
CN102387221B (zh) 一种数据转发方法及系统
CN101394342B (zh) 实现组播传输的方法和装置
CN106209554A (zh) 跨虚拟可扩展局域网的报文转发方法和设备
CN104471538A (zh) 一种数据流处理方法、设备和系统
CN113364849B (zh) 一种基于dds的跨广域网双漫游数据传输方法、系统及存储介质
WO2018121443A1 (zh) 报文传输方法及装置
CN103986637A (zh) 一种差错报文处理方法及隧道设备
CN101411160A (zh) 在不同的互联网通信栈实例之间对数据包路由的方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080227

Termination date: 20171110