基于IVI过渡环境下的组播技术研究

时间:2022-10-29 06:19:29

基于IVI过渡环境下的组播技术研究

摘 要:IPv6的时代正式来临,然而目前很多的网络应用和基础设施还是基于IPv4,使得IPv6的还没有真正的全面推广和部署,因此必须研究其过渡技术。IVI是一种IPv4向IPv6过渡的技术,本文主要介绍了IVI的过渡环境下组播过渡技术研究,再利用NS2网络模拟器实现IPv4组播和IPv6组播之间的通信。

【关键词】IPv4 IPv6 组播 IVI NS2

随着IPv4地址于2011年耗尽,IPv6时代正式来临,IPv6解决了目前IPv4无法解决的问题。但是,目前存在大量的IPv4应用与服务,IPv6不可能一夜之间能够替代IPv4,所以研究IPv4/IPv6过渡是最经济也最可行的方法。组播技术有很多优势,IVI技术作为一门较新的过渡技术,IVI过渡环境下组播技术的研究成为过渡技术新的研究方向。

1 组播过渡技术

1.1 双栈技术

其原理是将组播源配成双栈,同时向IPv4及IPv6组发送数据,使得运行不同协议栈的主机都能够收到组播报文。

1.2 组播协议转换技术

其原理是在使用一种IP协议的源和使用另外一种IP协议的宿之间路径上放置一个或者多个转换设备,实现他们之间的通信。

1.3 其他组播过渡技术

6over4

在IPv6组播中,将IPv4组播作为其底层载体,将IPv6组播目的地址映射到私有组播域239.0.0.0/8。

ALM

ALM,在应用层实现组播功能,它实际上是一种叠加于单播网络的逻辑网。

NAT-PT+ALG

NAT-PT+ALG是在现有NAT-PT技术的基础上加入组播应用层网关(ALG)以满足组播需求。

隧道技术

它是一种将一种协议的组播报文封装在另一种协议报文中,从而实现组播的跨网传输。

2 IVI技术

2.1 IVI简介

IVI技术是一种基于路由前缀的无状态IPv4/IPv6翻译技术。其原理是将IPv6地址和IPv4地址分别选择其中一部分,选取的这部分IPv4的地址,不再为IPv4所用,而是用来进行地址的一一映射,能够同时支持IPv4和IPv6发起的通信,随着过渡的不断深化,IPv4地址不断扩大到所有IPv4地址的时候,过渡完成。

IVI可以实现IPv4地址的复用和IPv6到IPv4单向通信,在IVI技术中,网关不需要通过DNS服务器查找IPv4与IPv6之间的对应关系,从而大大减少网关的负担和提高了网关的效率。

2.2 IVI组播地址格式

IVI组播地址的映射规则是在IPv6地址中插入IPv4地址,IPv6具有特定的前缀96位,也就是将IPv4地址加入后32位,而且IPv4组播地址也是有限制的,只能是232.0.0.0/8-232.255.255.255/8。

2.3 IVI DNS

IVI DNS,即IVI域名服务器,是对IPv4和IPv6网络的DNS服务器,能够把A记录翻译成AAAA记录,当IVI6主机的发出AAAA请求时,IVI DNS就会查找相应的A记录,并按照IVI映射规则自动翻译成AAAA记录,返回给IVI6主机[3]。

3 IVI组播转换网关模型

3.1 IVI-MTG

IVI-MTG模型,其MTG部署在IPv6网络与IPv4网络的边界,这种模型将IPv4和IPv6一视同仁。要实现IPv4与IPv6组播之间实现互访,网关所做的工作就是能够将IPv6主机加入组播源位于IPv4网络的组播组,反之,IPv4主机也能够加入组播源位于IPv6的组播组,另外该网关是双栈的。

3.2 IVI-MTG模型结构

IVI_MTG模型结构主要由IPv6组播(MP6)、IPv4组播(MP4)、IVI组播协议转换器(IMT)、IVI地址映射器(IAM)、简单网络管理协议接口(SNMP)、管理信息库(MIB)。

MP6

MP6被当作IPv6接收结点加入到IPv4组播组当中,负责接收来自IPv6组播组发出的组播报文,然后将该报文转送到组播协议转换器中进行处理。

MP4

MP4被当作IPv6接收结点的加入IPv4组播组,负责接收从IPv4组播组发出的报文,然后将该报文发送给组播协议转换器进行处理。

IMT

它的作用就是用来将IPv4与IPv6组播报文之间进行转换。除了进行报文头转换之外,有时还需要对报文分片转发。

IAM

它提供IPv4、IPv6地址池以及一个地址映射表。

SNMP接口

SNMP接口分为内部和外部接口。

MTG管理信息库

MIB提供MTG运行需要的环境配置并记录MTG当前的运行状态。

4 NS2简介

4.1 NS2

NS2,是一个由C++语言编写,以Otcl解释器为前台,是一种面向对象网络模拟器。该模拟器支持C++中类的层次结构(编译层次),和Otcl解释器中的相似层次结构(解释层次)。NS2通过Tclcl把这两种语言的类和对象联系起来。我们把Otcl类称为解释类,把与之对应的C++类称为编译类,并称他们为映像类,他们的对象称为映像对象。

4.2 Otcl类的介绍

TclObject类:在NS2中TclObject类是大多数编译层次和解释层次的基类。

Tcl类:Tcl类封装的是Otcl解释器真正的实例,并提供与解释器访问及通信的方法。

TclClass类:从该类派生出来的派生类提供两种功能,一是构将与编译类层次镜像的解释类层次,另外则是提供实例化新TclObject的方法。

4.3 NS2仿真过程

NS2中需要将具体的协议在模拟环境下进行实现,实现新协议的步骤具体如下[4]:

(1) 定义或继承C++协议类;

(2) 编写新类的成员函数和协议算法;

(3) 定义TCL相关的类和变量;

(4) 把C++代码绑定到TCL;

(5) 修改makefile文件,重新编译ns.exe文件。

5 IVI组播转换网关的NS2实现

5.1 Tcl仿真脚本编写

Simulator

模拟器提供了一套用做模拟配置和选择用于驱动模拟时间调度器接口的类型。

节点

节点(node)是网络拓扑重要的组成部分。

链路

即创建节点之间的连接,通过simplex-link{}实现。

创建跟踪对象

5.2 事件调度器

Simulator是一个事件驱动模拟器。NS中有四种可用的调度器,默认的是时间队列调度器。

5.3 路由模块

路由模块的设计时,需要实现3个功能模块:

邻居交换路由包和路由。

路由逻辑,它利用路由收集来的信息,执行实际的路由计算。

节点中的分类器。他们用来计算路由表,从而执行包的传递。

5.4 分组报头

分组报头,分组是对象之间传递的基本单元,由分组报头和数据组成。在非实际的网络中,其实携带数据是没有实际意义的,无论某个分组是否被使用都会被初始化。添加新的分组头,需要经过几个步骤:

在C++中创建一个结构体,命名多采取hdr_ newhdr,定义offset_(偏移量)字段和访问它的方法。

定义所需要访问的其他字段的成员函数。

创建一个static类来完成Otcl连接,在它的构造函数中进行bind_offset()。

激活新的分组头。

5.5 IVI-MTG工作流程

下面以一个例子来说明IVI-MTG工作流程,如图5所示:

具体过程:PC1发出IPv4组播报文,经过R1转发数据,当PC2收到该数据,PC2判断是否接收该数据,PC2因为是组播组成员,所以它接收该组播报文。当报文到达IVI-MTG,由MP4负责将其转发给IMT,IMT对报头进行转换,将源地址转换为MTG的IPv6地址:FF3E:0:0:0:0:0:F000:0002,目的地址转化为R2的IPv6地址:FF3E::F002:0100,组播报文到达R2之后,由它将报文转发给PC3和PC4。当PC3、PC4收到组播报文,发起MLD成员报告,经过R2,传到IVI_MTG,MP6将其转发给IMT,IMT将MLD报文转化成IGMPv2成员报文,通过MP4发送成员报告关系,从而PC3、PC4正式加入IPv4组播组。

参考文献

[1] 包丛笑,李星.CNGI-CERNET2主干网IVI试商用配置文档(v0.5)[J].中国教育网络,2009(5).

[2] 杨云江,高鸿峰.IPv6技术与应用[M].北京:清华大学出版社,2010(2).

[3] 刘姜.C校园网IPv4向IPv6升级互通网关设计[J].辽东学院学报(自然科学版),2011,3(1).

作者单位

1. 贵州大学计算机科学与信息学院 贵州省贵阳市 550025

2. 贵州大学计算机网络与信息化管理中心 贵州省贵阳市 550025

上一篇:关于提升宽带用户网络质量满意度的策略探析 下一篇:基于物联网技术的宠物管理系统设计