IPv6与VoIP

n IPv6的由来

IPv6是下一版本的互联网协议,它的提出最初是因为随着互联网的迅速发展,IPv4定义的有限地址空间将被耗尽。为了扩大地址空间,计划通过IPv6重新定义地址空间。不过随着IPv6开始进入设计阶段,设计者们不再单纯的将目标定位在解决地址空间短缺的问题上,提供一个更为高效、更为安全并能更好支持不同业务和移动特性的新路由架构称为IPv6的最终目的。

n IPv6相对于IPv4的优点

1. 更大的地址空间

IPv6最明显的特征是它巨大的地址空间。在IPv4中地址位为32位,即总共的地址大小为4294967296。而在IPv6中,地址位大小为128位,它允许的地址空间为218或340 282 366 920 938 463 463 374 607 431 768 211 456(3.4×1038)个可能的地址。

2. 更高效的路由基础结构

现在基于IPv4的因特网,其路由结构在主干上是平面的,换句话说,现在的因特网主干网上的路由器,其路由表不能反映ISP之间的层次关系。地理上相邻的ISP之间所分配的IP地址空间是不连续的,比如一个从亚洲接入因特网骨干网的ISP所分配的地址空间,可能会与一个从欧洲接入因特网骨干的ISP在地址空间上是连续的。这样的显示造成在骨干网上很难实现路由汇总,并使得因特网骨干网上的路由表变得越来越大,最近的数据显示,骨干网上路由器的路由条目已经超过10万条,如此一来,路由的效率会越来越低下,而骨干路由器也越来越不堪负重。

IPv6从设计之处就考虑到了这个问题,IPv6的地址分配将比IPv4更严格,并且这种分配从一开始就考虑到了ISP之间的层次关系,其效果是:在IPv6的骨干路由上很容易就能够实现路由条目的汇总,在IPv6骨干路由器上的路由条目将大幅减少。因此,IPv6会是一个更高效的路由基础架构。

3. 更好的安全性

在像因特网这样的公共媒体上实现专用通信,需要安全服务保护数据在传输中免遭查看或修改。虽然存在用于为数据包提供安全传输的基于IPv4的标准(即IPSec),但是该标准只是可选的。而在IPv6中,IPSec支持是一个协议要求。该要求为设备、应用程序和服务的网络安全需求提供了基于标准的解决方案,并促进不同的IPv6之间实现互操作性。

4. 移动性

移动IPv6允许IPv6节点成为移动的(任意改变在IPv6网络上的位置),同时仍然保持现有的连接。使用移动IPv6,移动节点始终通过一个永久地址可达。连接是使用分配给移动节点的特定永久地址建立的,不管移动节点改变位置和地址多少次,该连接都得以保持。

5. 更好的服务质量(QoS)

IPv6报头中使用了一个被称为流标签(Flow Lable)的新字段,这个新字段用于定义如何处理和标识流量。同时,在IPv6的包头中,还定义了一个流量类型(Traffic Type)字段,能够用来区分不同的业务流。流类型和流标签的组合能够为IPv6提供强大的QoS。

n IPv6相对IPv4的变化概述

1. 扩展地址

2. 简化的包头

3. 对扩展和选项支持的改进

4.

5. 身份验证和保密

n IPv6基本术语

1. 局域网段

它是IPv6链路的一部分,由单一介质组成,以二层交换设备为边界。

2. 链路

以路由器为边界的一个或多个局域网段。IPv6已经定义了很多链路层技术,包括一些典型的局域网技术(如:以太网、令牌网和FDDI),还包括一些广域网技术(如:点到点协议PPP、帧中继和ATM)。

3. 子网

在IPv6中,使用相同的64位IPv6地址前缀的一个或多个链路被称为子网,这和IPv4中的子网有所不同。子网也被称为网段。一个子网可以被内部子网路由器分为几个部分。内部子网路由器能够为子网中的每个链路提供转发和配置功能。

4. 邻节点

连接到同一链路上的节点。这是一个非常重要的概念,因为IPv6的邻节点发现机制具有解析邻节点链路层地址的功能,并可以检测和监视邻节点是否可以到达。

5. 链路MTU

可以在一个链路上发送的最大传输单元(MTU)。对于一个采用多种链路层技术的链路来说,链路MTU是这个链路上存在的所有链路层技术中最小的链路MTU。

6. 路径MTU(PMTU)

在IPv4的网络中,需要使用特别的设置才能启用PMTU,才会让数据包在经过的路由器上不会有分片和重装的行为发生。而在IPv6网络中,默认情况下就只会在源节点有分片的行为,在目标节点有重装的行为发生。PMTU是从源到目标路劲上所有链路的最小链路MTU。链路MTU是能够在这个链路上发送的最大长度的链路层有效载荷。

n IPv6地址表示

1. IPv6的首选格式

其实,IPv6的128位地址是每16位划分为一段,每段被转换成为一个4位十六进制数,并用冒号隔开。这种表示方法叫冒号十六进制表示法。下面是一个二进制的128位IPv6地址。

0010000000000001000001000001000000000000000000000000000000000001

0000000000000000000000000000000000000000000000000100010111111111

将其划分为每16位一段

0010000000000001 0000010000010000 0000000000000000 0000000000000001

0000000000000000 0000000000000000 0000000000000000 0100010111111111

将每段转换为十六进制数,并用冒号隔开

2001:0410:0000:0001:0000:0000:0000:45ff

这就是RFC2373中定义的首选格式

2. 压缩表示

上面的IPv6地址中有好多0,有的甚至一段中都是0,表示起来比较麻烦,其实可以将不必要的0去掉。对于“不必要的0”,以上面的例子来看,在第二个段中的0410省掉的是开头的0,而不是结尾的0,所以在压缩表示后,这个段为410,这是一个IPv6地址表示中的一个约定;对于一个段中中间的0,如2001,不做省略;对于一个段中全部数字为0的情况,保留一个0。根据这些原则,上述地址可以表示如下形式:

2001:410:0:1:0:0:0:45ff

这仍然比较麻烦,为了更方便书写,RFC2373中规定:当地址中存在一个或多个连续的16比特为0字符时,为了缩短地址长度,可用一个::(爽冒号)表示,但一个IPv6地址中只允许有一个::。要注意的是:使用压缩表示时,不能将一个段内的有效的0也压缩掉。例如:不能把FF02:30:0:0:0:0:0:5压缩表示成FF02:3:5,而应该表示为FF02:30::5。要确定::代表多少位零,可以计算压缩地址中的块数,用8减去此数,然后将结果乘以16。例如,地址FF02::2有两个块(“FF02”块和“2”块),这意味着其他6个16位快(总共96位)已被压缩。

因此上述地址又可以表示为如下形式:

2001:410:0:1::45ff

3. IPv6地址前缀

前缀是地址的一部分,这部分或者是固定的值,或者是路由或子网的标识。作为IFv6子网或路由标识的前缀,其标识方法与IPvv4中用1的个数表示子网掩码的表示方法是相似的,IPv6前缀用“地址/前缀长度”表示法来表示。

例如,23EO:0:A4::/48是一个路由前缀,而23E0:0:A4::/64是一个子网前缀。在IPv6中,用于标识子网的位数总是64,因此,64位前缀用来标识节点所在的单个子网。对于任何少于64位的前缀,要么是一个路由前缀,要么就是包含了部分IPv6地址空间的一个地址范围。根据这个定义,FF0::/8被用于表示一个地址范围,而3FFE:FFFF::/32是一个路由前缀。

n IPv6地址类型

IPv6有三种地址类型

1. 单播

单播地址用于从一个源到单个目标进行通信。一个单接口有一个单播地址标识符。发送给一个单播地址的包传递到由该地址标识的接口上。

2. 组播

组播地址用于标识多个接口。组播地址用于从一个源到多个目标进行通信,数据会传送到多个接口。

3. 任播

任播地址标识多个接口。使用适当的路由拓扑,定址到任播地址的数据包将被传送到单个接口,即该地址标识的接口中最近的一个。“最近的”接口是指最近的路由距离。任播地址用于从一个源到多个目标之一进行通信,数据将传送到单个接口。

IPv6地址总是标识接口,而不标识节点。节点由分配给其接口之一的某个单播地址标识。

RFC3513没有定义任何类型的广播地址,而换用了IPv6组播地址。例如,IPv4的子网和有限的广播地址被保留的IPv6组播地址FF02::1取代。

n IPv6单播地址

以下地址类型都是单播IPv6地址:

? 全局单播地址

? 链路本地地址

? 站点本地地址

? 特殊IPv6地址

? 兼容性地址

1. 全局单播地址

全局单播地址相当于IPv4的公网地址,它们在因特网上的IPv6部分(称为IPv6因特网)是可全局路由和访问的。全局单播地址通俗的说就是IPv6公网地址。

2. 本地单播地址

本地使用的单播地址分为以下两种:

链路本地地址:用于链路上的邻居之间以及邻居发现过程,它定义IPv6子网上的节点与主机和路由器的交互方式。

站点本地地址:用于组织Intranet上的同一站点内不同节点之间的通信。

注意:“Internet Protocol Version 6 (IPv6) Addressing Architecture”(因特网协议版本6(IPv6)编址体系结构)标准的更新版本现已作为因特网草案发布,其中规定禁止使用站点本地地址。这一关于IPv6编址标准的新的因特网草案将淘汰RFC3513。禁止的原因是来源于这样的事实:在IPv6中不存在地址短缺的问题;要避免出现对端到端模型的破坏,这也是IPv4的网络中NAT使用时的最大缺陷。

3. 特殊IPv6单播地址

以下是特殊IPv6地址:

1)未指定地址

未指定地址(0:0:0:0:0:0:0:0或::)表示地址缺失,相当于IPv4的未指定地址0.0.0.0。未指定地址通常作为数据包的源地址,用来验证临时地址唯一性。未指定地址从不分配给接口或用作目标地址。

2)环回地址

环回地址(0:0:0:0:0:0:0:1或::1)标识一个环回接口。使用此地址,一个节点可以向自己发送数据包;此地址相当于IPv4的环回地址127.0.0.1。定址到环回地址的数据包从不在链路上发送,也不会由IPv6路由器转发。

4. 兼容性地址

为了帮助从IPv4向IPv6过渡,定义了以下地址:

1)与IPv4兼容的地址

与IPv4兼容的地址,0:0:0:0:0:0:w.x.y.z或::w.x.y.z(其中的w.x.y.z是公用IPv4地址的点分十进制表示形式),供那些使用IPv6因特网进行通信的IPv6/IPv4节点使用。IPv6/IPv4节点是兼用IPv4和IPv6协议的节点。在IPv6节点要访问IPv4节点的时候,可以使用这种地址作为IPv6节点去访问IPv4节点的目的地址。NAT/PT网关处理时只要把低32位取出来作为IPv4包的目的地址即可。这种IPv6地址构成方法要求每个IPv6节点有一个对应的IPv4地址。

2)IPv4映射地址

IPv4映射地址,0:0:0:0:0:FFFF:w.x.y.z或::FFFF:w.x.y.z,将仅使用IPv4的节点表示为IPv6节点。IPv4映射地址仅用作内部表示形式。IPv4映射地址从不用作IPv6数据包的源或目标地址。Windows Server 2003和Windows XP中IPv6不支持IPv4映射地址。

3)6to4地址

6to4是在RFC3056中描述的隧道技术。使用6to4时,在IPv4网络上发送IPv6通信之前,使用IPv4包头封装IPv6通信。6to4使用的全局地址前缀为2002:WWXX:YYZZ::/48,其中WWXX:YYZZ既是全局地址的“下一级汇聚标识符”(NLA ID)部分,又是指派给站点或主机的公用IPv4地址(w.x.y.x)的用冒号分隔的十六进制表示。6to4主机的6to4完整地址是2002:WWXX:YYZZ:[SLA ID]:[Interface ID]。与IPv4兼容地址不同的是,6to4在公网上运行IPv4协议。

值得注意的是,兼容地址并不只是上面所列举的几种,由于RFC关于兼容地址的定义还在进一步完善的过程中,还会出现更多的地址类型。

n IPv6组播地址

所谓组播,是指一个源节点发送的单个数据包能被特定的组播组的成员节点接受到,关于组播的概念要明确以下几个方面:

? 任何节点都能够作为一个组播组的成员

? 一个源节点可以发送数据包到组播组

? 组播组的所有成员收到发往改组的数据包

? 组播地址在IPv6包中不能用作源地址或出现在任何选路头中

标志(Flags)字段有4个比特,目前只是用了最后一个比特(前3位必须置0),当该位置为0时,表示当前的组播地址是由IANA所分配的一个永久分配的组播地址,例如:

FF00:0:0:0:0:0:0:0

FF01:0:0:0:0:0:0:0

FF02:0:0:0:0:0:0:0

FF03:0:0:0:0:0:0:0

FF04:0:0:0:0:0:0:0

FF05:0:0:0:0:0:0:0

FF06:0:0:0:0:0:0:0

FF07:0:0:0:0:0:0:0

FF08:0:0:0:0:0:0:0

FF09:0:0:0:0:0:0:0

FF0A:0:0:0:0:0:0:0

FF0B:0:0:0:0:0:0:0

FF0C:0:0:0:0:0:0:0

FF0D:0:0:0:0:0:0:0

FF0E:0:0:0:0:0:0:0

FF0F:0:0:0:0:0:0:0

上面列出的是保留的组播地址,且永远不能分配给任何组播组。

当该值为1时,表示当前的组播地址是一个临时组播地址(非永久分配地址)。非永久分配的组播地址仅在给定范围内才有意义。例如,在某个站点有非永久的站点本地组播地址FF15:0:0:0:0:0:0:101标识的组与一个不同站点中使用同一个组标识符的组没有关系,与不同范围内使用同一个组标识符分配非永久地址的组也没有关系。

范围(Scope)用来限制组播数据流在网络中发送的范围。该字段占4比特。RFC2373对该字段定义如下:

? 0:预留

? 1:节点本地范围

? 2:本地链路范围

? 5:本地站点范围

? 8:组织本地范围

? E:全球范围

? F:预留

? 其他的值没有定义

n IPv6任播地址

任播地址是IPv6特有的地址类型,它用来标识一组网络接口(通常属于不同的节点)。路由器会将目标地址是任播地址的数据包发送给距离自己最近的一个网络接口。适合于One-to-One-of-Mary(一对一组中的一个)的通信场合。接收方只需要是一组接口中的一个即可,例如移动用户上网就需要因地理位置的不同,接入离自己最近的一个接收站,这样才可以是移动用户早地理位置上不受太多的限制。

任播地址从单播地址空间中进行分配,使用单播地址的任何格式。仅看地址本身,节点是无法区分任播地址与单播地址的。所以,节点必须明确配置从而指明它是否为一个任播地址。目前,任播地址仅被用作目标地址,且仅分配给路由器。

任播地址的用途之一是标识一组路由器,该组路由器是属于提供因特网服务的一个组织的。这样的地址在IPv6选路头中可用作直接地址,能够使包的传递通过一个特定的汇聚地址系列。其他可能的用途是标识连到一个特定子网的一组路由器。关于任播地址的严格定义仍然还在讨论中,但以下特性是明确的:

? 任播地址不能用作IPv6包的源地址

? 任播地址不能指定给IPv6主机,只能指定给IPv6路由器

n IPv6接口标识符

单播IPv6地址的最后64位是接口标识符,该标识符对于IPv6地址的64位前缀来说是唯一的。IPv6接口标识符有以下几种:

? 由扩展唯一标识符(EUI-64)地址派生而来的64位接口标识符。

? 随机生成的接口标识符,随时间而更改以提供一定的隐蔽性。

? 在全状态地址自动配置(例如,通过动态主机配置协议IPv6版[DHCP6]过程中分配的接口标识符)。

n 用IPv6地址配置RIP协议

clip_p_w_picpath002

具体步骤:

1. 给各路由器配置IPv6地址。首先使用命令“IPv6 unicast-routing”启用路由转发,然后再进入接口配置IPv6地址。如下图所示:

clip_p_w_picpath003clip_p_w_picpath004

2. 其他路由器也一样,先启用路由转发,然后进入接口配置IPv6地址。

3. 因为配置的是IPv6地址,连接路由器的客户端就不用再手动配置IPv6地址,客户端会和路由器进行协商,客户端会自动获取到一个IPv6地址。

1)windows XP不支持IPv6协议,在获取IPv6地址之前,首先得使用命令“ipv6 install”安装。Windows 7及以上版本直接使用命令“ipconfig”查看获取到的IPv6地址。如下图所示:

clip_p_w_picpath005

安装成功之后,使用命令“ipconfig”查看IPv6地址。

clip_p_w_picpath006

2)在Linux系统中,直接使用命令“ifconfig”查看IPv6地址。

clip_p_w_picpath008

4. 启用RIP协议之前,先给要使用的RIP协议创建一个名称,并且只需要在一个路由器上做这个操作。如下图所示:

clip_p_w_picpath009

如果不再使用这个创建的RIP协议,只需在这个命令前加“no”执行即可,但必须在之前都应用过的每个路由器上都要进行这个操作。

5. 然后,在每个路由器上进入到接口,启用创建的RIP协议。

clip_p_w_picpath010clip_p_w_picpath011clip_p_w_picpath012

6. 使用命令“show ipv6 route”查看路由表。

clip_p_w_picpath014clip_p_w_picpath016clip_p_w_picpath018

7. 在Linux系统上使用命令“ping6 IPv6地址”测试能否与Windows通信。

clip_p_w_picpath020

8. 在Windows系统上使用命令“ping IPv6地址”测试能否与Linux通信。

clip_p_w_picpath022

n 用IPv6地址配置OSPF协议

clip_p_w_picpath023

具体步骤:

1. 给各路由器配置IPv6地址。(可参照配置RIP协议的案例)

2. 因为配置的是IPv6地址,连接路由器的客户端就不用再手动配置IPv6地址,客户端会和路由器进行协商,客户端会自动获取到一个IPv6地址。

1)windows XP不支持IPv6协议,在获取IPv6地址之前,首先得使用命令“ipv6 install”安装。Windows 7及以上版本直接使用命令“ipconfig”查看获取到的IPv6地址。如下图所示:

clip_p_w_picpath005[1]

安装成功之后,使用命令“ipconfig”查看IPv6地址。

clip_p_w_picpath006[1]

2)在Linux系统中,直接使用命令“ifconfig”查看IPv6地址。

clip_p_w_picpath024

3. 给路由器R1配置一个虚拟接口IPv4地址。

clip_p_w_picpath025

进入接口,启用OSPF协议。

clip_p_w_picpath026

clip_p_w_picpath027

4. 其他路由器的配置和路由器R1相同。

5. 配置完成后,查看个路由器的路由表。

clip_p_w_picpath029clip_p_w_picpath031clip_p_w_picpath033

6. 在Linux系统上使用命令“ping6 IPv6地址”测试能否与Windows通信。

clip_p_w_picpath034

7. 在Windows系统上使用命令“ping IPv6地址”测试能否与Linux通信。

clip_p_w_picpath035

n VoIP概述

在计算机多媒体化和Internet技术的推动下,VoIP技术诞生虽然时间不长,但已体现出强大的发展潜力,经过了PC to PC、PC to Phone、Phone to Phone这几个发展阶段,现已走向市场。随着PSTN和IP网络的不断融合,从普通用户、企业用户到电信运营商都在从VoIP技术中获得利益。目前,VoIP在运营商一级正发展为大规模、高可靠性、高性能的电信级网络。而基于企业网络平台的企业内部的VoIP应用也得到了日益广泛的应用和关注,也是当前VoIP应用的一个热点。

n 统一通信与VoIP

统一通信(Unified Communication),简称UC,指的是把计算机与传统通信技术统一一体的新通信模式,融合计算机网络与传统通信网络在一个网络平台上,实现电话、传真、数据传输、音视频会议、呼叫中心、即时通信等众多应用服务。统一通信不但是网络的融合,也是应用的融合。它不仅能改善企业的办公模式,更重要的是它可以***到企业的生产系统中,带来整个企业运作模式的变革。

VoIP又称IP电话或IP网络电话,是Voice Over IP的缩写,这种技术通过对语音信号进行编码数字化、压缩处理成压缩帧,然后转换为IP数据包在TCP\IP网络上进行传输,从而达到了在IP网络上进行语音通信的目的。

n VoIP与传统电话比较

项目 电路交换 分组交换

续接时间 较长,平均为15s 较短,一般小于1s

传输延迟 短 较短

传输抖动 小 偏大且不稳定

对业务的过载反应 拒绝接受呼叫(呼损) 较少信息量(流量控制)

信号传输的“透明”性 有 无

异种终端之间的相互通信 不允许 允许

多点通信(如报文广播) 不允许 允许

电话利用率 低 高

n VoIP具有的优势

? 能够更加有效的使用网络资源。一方面,IP电话采用了先进的数字信号处理技术,可以将原先的64Kbps的语音信号压缩成6-8Kbps(甚至低于2.4Kbps),节省了带宽,能够在同一条线路上传输比采用模拟技术时更多数量的呼叫;另一方面,由于IP电话采用的是分组交换技术,可以实现信道的高效实用。

? 成本低廉,从整体上看,可以比传统的电话低40%-70%。

? 同数据业务有更大的兼容性,有利于实现语音网同数据网的合二为一。

? IP电话网继承了计算机网络的智能特性,可以灵活的实现各种增值业务的开发。

? 开放的体系结构。IP电话的协议体系是开放式的,有利于各个厂家产品的标准化和产品间的互连互通。

n VoIP各项产品及设备的类型

1. VoIP软件

2. VoIP网络电话

3. VoIP网关

4. VoIP PBX

n VoIP的配置实例

clip_p_w_picpath036

具体步骤:

1. 必须在计算机上安装JAVA虚拟机,版本为jre-1_5_0_06-windows-i586-p。clip_p_w_picpath037

2. 然后再安装Cisco IP Communicator电话软件,版本为Cisco.IP.Communicator.v7 .0 .2 .0.WinXP。

clip_p_w_picpath038

3. 在路由器上配置Cisco CME

R1(config)# int f0/0

R1(config-if)# ip address 192.168.1.10 255.255.255.0

R1(config-if)# no shutdown

R1(config)# hostname CME

CME(config)# telephony-service //开启CME服务

CME(config-telephony)# max-ephones 10

//定义最大用户数量,不能高于设备最大授权数

CME(config-telephony)# max-dn 10 //定义允许注册的最大线路数

CME(config-telephony)# keepalive 10 //定义保持时间为10秒

CME(config-telephony)# ip source-address 192.168.1.10 port 200

//定义注册使用的服务器地址和端口

CME(config-telephony)# system message welcome to Cisco

//定义待机画面显示的消息内容

CME(config-telephony)#exit

CME(config)# ephone-dn 1 //进入线路1

CME(config-ephone-dn)# number 8868 //定义电话号码

CME(config-ephone-dn)# name lisi //定义号码描述,用于来电显示

CME(config-ephone-dn)# exit

CME(config)# ephone-dn 2 //进入线路2

CME(config-ephone-dn)# number 8888

CME(config-ephone-dn)# name zhangsan

CME(config-ephone-dn)#exit

CME(config)# ephone 1 //绑定ephone1的MAC地址

CME(config-ephone)# mac-address 000c.29f9.323a

//因为现在使用的是Cisco IP Communicator软件,所以绑定计算机的MAC,如果使用Cisco的硬件语音电话,如Cisco IP Phone 7935,话机的背面会有该话机的MAC。

CME(config-ephone)# type cIPC

//定义电话类型cIPC指的是Cisco IP Communicator

CME(config-ephone)# button 1:1

//绑定第一个号码为调用ephone-dn 1中的号码

CME(config-ephone)#exit

CME(config)# ephone 2

CME(config-ephone)# mac-address 000c.299f.f3a7

//绑定ephone2的MAC地址

CME(config-ephone)# type cIPC

CME(config-ephone)# button 1:2

//绑定第二个号码为调用ephone-dn 2中的号码

CME(config-ephone)# end

CME# clock set 15:28:00 25 may 2013

//设置时间,便于电话与设备同步

CME(config)# telephony-service

CME(config-telephony)# create cnf-files //生成XML文件

Creating CNF files

CME(config-telephony)# exit

4. 配置客户端Cisco IP Communicator软件。在“配置”>”网络配置”菜单中,选择网卡,填写服务器地址,进行注册。

clip_p_w_picpath039

clip_p_w_picpath040

5. 拨打电话测试。

clip_p_w_picpath041

6. 接听电话测试。

clip_p_w_picpath042