510 likes | 650 Views
IPv6 篇. 北京邮电大学继续教育学院 授课教师 : 孙斌 sunbin@bupt.edu.cn 2003 年. IPv4 潜伏的三大危机. 地址枯竭: IPv4 的地址域为 32 比特,可提供 2 32 (约 40 亿)个 IP 地址。但因将 IP 地址按网络规模划分成 A 、 B 、 C 三类后,用户可用地址总数显著减少。根据预测,到 2003 年 ~2005 年 IPv4 地址将被用尽。 网络号码匮乏 :
E N D
IPv6篇 北京邮电大学继续教育学院 授课教师: 孙斌 sunbin@bupt.edu.cn 2003年 http://www.bupttc.com
IPv4潜伏的三大危机 • 地址枯竭: IPv4的地址域为32比特,可提供232(约40亿)个IP地址。但因将IP地址按网络规模划分成A、B、C三类后,用户可用地址总数显著减少。根据预测,到2003年~2005年IPv4地址将被用尽。 • 网络号码匮乏: 在IPv4中,A类网络只有126个,每个能容纳1亿多个主机;B类网络也仅有16,382个,每个能容纳6万多个主机;C类网络虽多达209万余个,但每个只能容纳254个主机。 • 路由表急剧膨胀: IPv4的地址体系结构是非层次化的,每增加一个子网路由器就增加一个表项,使路由器不堪重负。 http://www.bupttc.com
解决措施 • 暂时缓解三大危机的措施 • 利用内部地址弥补IP地址的不足 • 用CIDR扩大网络号码 • 地址层次化可抑制路径数 • 彻底消除三大危机的措施—导入IPv6 • 1990年,IETF开始开发新的IP版本。 • 1995年12月以RFC1883文件公布了建议标准(proposal standard),1996年7月和1997年11月先后发布了版本2和2.1的草案标准(draft standard),1998年7月以RFC2374进一步定义了可聚类的全局单目地址。 http://www.bupttc.com
新的IP协议的设计目标 • 支持更多的主机 • 减小路由表的长度 • 简化协议,以加快包处理 • 提供更好的安全性 • 通过指定范围来改进组播 • 重视服务类型 • 主机可不必改变地址而漫游 • 协议可以继续发展 • 允许新旧协议共存 http://www.bupttc.com
SIPP(简单因特网协议增强)——IPv6 的特性 • 地址长度增加(128位),IPv6具有与网络适配的层次地址 :IPv6的目标是:通过1012个网络连接1015台计算机。 • 简化包头:仅包含7个字段,提高路由器处理效率。 • 更好地支持选项 • 提供安全性:IPv6规定了“认证头标(authentication header)”和“封装安全净荷(ESP:Encapsulation Security Payload)”来保证信息在传输中的安全。 • QoS:利用IPv6头标中的8比特业务量等级域和20比特的流标记域可以确保带宽,实现可靠的实时通信。 http://www.bupttc.com
主要的IPv6头部 0 3 7 15 23 31位 版本 优先级 流标记 下一包头 净荷长度(包头后面的数据长度) 跳限制 源IP地址(128位) 目的IP地址(128位) 头部长度固定,使用扩展头标 来处理特殊分组; 删除头标校验和功能; 删除各路由器的分拆成报片的处理功能 。 增加了业务量等级和流标记。 http://www.bupttc.com
优先级:定义IP分组的类型或某个IP分组相对于进入同一网络的其他IP分组的重要程度。 • 流标记:由产生流的源来指定,它是从1~FFFFF的伪随机数。一个是在资源预留协议(RSVP)中用来标识特定的流;另一个是在标记交换(Tag Switch)中用流标记查找路由,加快路由器转发速度。 • 净荷长度:指示IP基本头标以后的IP分组剩余部分的长度,单位是字节。 • 跳限制(hop limit):所有的路由器只对TTL作减1的处理。跳限制不是秒数而是中继点的数目。用来防止寻路发生闭环,可以搜索到离它最近的服务器 。 • 下一包头类型(next header type ):标识IP分组中的基本IP头标的下一个头标。 http://www.bupttc.com
0 中继点选项头标 4 IP 6 TCP 17 UDP 43 寻路头标 44 报片头标 45 IDRP 46 RSVP 50 封装化安全净荷 51 认证头标 58 ICMP 59 无下一个头标 60 信宿选项头标 下一包头类型 http://www.bupttc.com
IPv6地址 • IPv6地址扩展到128比特,为便于理解协议,设计者用冒号将其分割成8个16比特的数组,每个数组表示成4位的16进数。例如: FECD:BA98:7654:3210:FEDC:BA98:7654:3210 • 表示方法的优化: • 其高位为0,则可省略。例如将0800写成800, • 用重叠冒号置换地址中的连续16比特的0。例如,地址0:0:0:BA98:7654:0:0:0可缩写成::BA98:7654:0:0:0或0:0:0:BA98:7654::。 • 涉及到IPv4和IPv6节点的混合环境时,有时使用X:X:X:X:X:X:d.d.d.d这种替代形式更为便利,其中X是地址中6个16比特的最高位的16进制值,d是4个8比特的最低位碎片的十进制值(标准IPv4表示法)。例如,0:0:0:0:0:0:13.1.68.3或用压缩形式 : ::13.1.68.3 http://www.bupttc.com
IPv6地址前缀的表示方法 • IPv6地址/前缀长度 • 例如,对60比特的前缀12AB00000000CD3(十六进制),如下表示都是合法的: 12AB:0000:0000:CD30:0000:0000:0000:0000/60 12AB::CD30:0:0:0:0/60 12AB:0:0:CD30::/60 • 当需要同时写出该节点的节点地址和前缀(例如:节点的子网前缀)时,可以通过如下方式将二者合一: 节点地址:12AB:0:0:CD30:123:4567:89AB:CDEF 子网号:12AB:0:0:CD30::/60 可以简写成:12AB:0:0:CD30:123:4567:89AB:CDEF/60 http://www.bupttc.com
分配用途 前缀 比率 保留 未分配 0000 0000 0000 0001 1/256 1/256 为 NSAP 分配而保留 为 IPX 分配而保留 0000 001 0000 010 1/128 1/128 未分配 未分配 未分配 0000 011 0000 1 0001 1/128 1/32 1/16 可聚类全局单目地址 未分配 未分配 未分配 未分配 未分配 001 010 011 100 101 110 1/8 1/8 1/8 1/8 1/8 1/8 未分配 未分配 未分配 未分配 未分配 1110 1111 0 1111 10 1111 110 1111 1110 0 1/16 1/32 1/64 1/128 1/512 链路局域单目地址 网点局域单目地址 1111 1110 10 1111 1110 11 1/1024 1/1024 组播地址 1111 1111 1/256 IPv6地址的初始分配 http://www.bupttc.com
3 13 8 24 16 64比特 FP TLA ID RES NLA ID SLA ID Interface ID 可聚类全局单目地址 • FP(001):用于可聚类全局单目地址的格式前缀(FP:Format Prefix)(3比特); • TLA ID:顶级聚类标识符(Top-Level Aggregation Identifier); • RES:为将来使用而保留; • NLA ID:次级聚类标识符(Next-Level Aggregation Identifier); • SLA ID:网点级聚类标识符(Site-Level Aggregation Identifier); • INTERFACE ID: 接口标识符; http://www.bupttc.com
局域使用的IPv6单目地址 • 链路局域地址(Link-Local address) 10比特 54比特 64比特 1111 1110 10 0 Interface ID • 网点局域地址 10比特 38比特 16比特 64比特 1111 1110 11 0 子网ID Interface ID • 其他单目接口 • 未指明地址(unspecified address):由16字节的0构成,可缩写成0:0:0:0:0:0:0:0或只用二个冒号表示 。 • 环回地址(loopback address) :代码为0:0:0:0:0:0:0:1。 • 内嵌IPv4地址的IPv6地址 • 兼容IPv4的IPv6地址 :将96比特0的前缀加在32比特的IPv4地址前就构成了IPv4兼容地址。通常将二个冒号和IPv4的点分十进制记法结合,将地址表示成::1.2.3.4的形式。 • 映射IPv4的IPv6地址 :将80比特的0和紧接其后的16比特的1组成前缀置于IPv4地址之前就够成了映射IPv4的IPv6地址。例如记作::FFFF:4.3.2.1。 http://www.bupttc.com
兼容IPv4的IPv6地址的应用实例 映射IPv4的IPv6地址的应用实例 http://www.bupttc.com
组播地址 • IPv6的组播地址格式: 8 4 4 112比特 1111 1111 标志 区域(SCOPE) Group ID • 标志域的格式:000T。如果T值为1,该地址是非永久的 • 区域(scope)被用来标识组播地址的有效范围,它是基于网络层次结构的。 http://www.bupttc.com
0 保留 8 组织局域范围(限制在单一组织范围) 1 节点局域范围(限制在单一系统范围内) 9 未分配 2 链路局域范围(限制在单一链路范围内) A 未分配 3 未分配 B 未分配 4 未分配 C 未分配 5 网点局域范围(限制在单一网点范围内) D 未分配 6 未分配 E 全局范围 7 未分配 F 保留 组播地址scope的代码值 http://www.bupttc.com
预定义的组播地址 • 保留的组播地址(Reserved Multicast Addresses) : 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 • 全节点地址(All Nodes Addresses): 组标志1定义了“所有IPv6节点”的地址。如和scope1组合,记作FF01::1,就能标识此系统的所有节点;如和scope2组合,就能标识此链路上的所有节点FF02:0:0:0:0:0:0:1 • 全路由器地址(All Routers Addresses) : 组标志2定义了“所有IPv6路由器”的地址。如和scope1组合,记作FF01::2,就能标识此节点上的所有路由器;如和scope2或scope5组合,就能标识链路上或网点上所有的路由器。 • 被请求的节点地址(Solicited-Node Address): • 取(单目或任播)地址的低24比特,再加上前缀FF02:0:0:0:0:1:FF00::/104。这样就生成了这个范围内的一个组播地址。地址范围:从FF02:0:0:0:0:1:FF00:0000到FF02:0:0:0:0:1:FFFF:FFFF • ICMP协议为进行邻机发现和重复地址检测要利用被请求的节点地址 http://www.bupttc.com
任播地址 • IPv6任播地址是分配给多于一个接口(通常属于不同的节点)的地址。 • 特点:发往一个任播地址的分组通过寻路被发往一个具有该地址的“最近”接口。这里的“最近”指的是寻路协议意义上的最近。 • 限制 : • 在IPv6分组中,任播地址绝不可以用作信源地址 ; • 任播地址绝不可以分配给IPv6主机。换句话说,它也许只能分配给IPv6路由器。 • 子网路由器(Subnet-Router)任播地址是必需的任播地址(Reguierd Anycast Address),它是预先定义的: n 比特 128-n 比特 子网前缀 00000000000000000000 http://www.bupttc.com
扩展包头 扩展包头 功能 逐跳选项(0) 路由器信息 选路(43) 包头中包含全部或部分路径 分段(44 ) 数据报分段管理 认证(51 ) 对发送者身份进行验证 加密安全性净荷(50) 加密内容的信息 目的地选项(60) 目的地的附加信息 http://www.bupttc.com
10进制数 关键字 包头类型 0 HBH 中继点选项(IPv6),保留(IPv4) 1 ICMP ICMP报文(IPv4) 2 IGMP IGMP报文(IPv4) 3 GGP 网关间协议 4 IP IP in IP(IPv4封装化) 5 ST 流(stream) 6 TCP 传送控制 17 UDP 用户IP分组 29 ISO-TP4 ISO传输协议第四级(transport protocol class4) 43 RH 寻路控制头标(IPv6) 44 FH 报片头标(IPv6) 45 IDRP 域(domain)间寻路协议 50 ESP 封装化安全净荷 51 AH 认证头标 58 ICMP ICMP报文(IPv6) 59 Null 无下一头标(IPv6) 80 ISO-IP ISO internet协议(CLNP) 88 IGRP IGRP 89 OSPF Open Shortest Path First 255 保留 协议代码和扩展包头类型表 http://www.bupttc.com
IPv6IP分组的扩展包头 http://www.bupttc.com
包头顺序 • 在许多情况下,路由器只注意Hop-By-Hop选项和寻路包头。按推荐的顺序排列包头的好处是路由器发现除此之外的包头时就没有必要再查看在其之上的IP分组。 • 包头顺序的唯一例外是信宿选项包头。在许多情况下,信宿选项只是为了最后的信宿设置的。此选项必须在IP分组的扩展包头之后出现。它应恰好出现在上层协议包头之前。 • 包头类型不得重复使用协议代码,即可分配0~255间未被使用过的值。IPv4与IPv6的类型有些差别但大体相同。 http://www.bupttc.com
选路选项 http://www.bupttc.com
下一个头标:用来标识紧接寻路头标之后的头标类型。下一个头标:用来标识紧接寻路头标之后的头标类型。 • 扩展头标长度(header extension length):以64比特为单位表示寻路头标长度,计算长度时不包括起始64比特。 • 寻路类型(routing type):目前置成0。 • 剩余中继点数(segments left):从0开始取值,最大为23。 • 保留域(reserved):32比特全零,用于寻路头标未来的改进版本。 • 寻路头标的剩余部分是N个地址表。 http://www.bupttc.com
分段选项 • 报片偏移(fragment offset)的功能与IPv4的偏移域相同,它指出该报片的起始字节在原分组中所处的位置。因此,IPv6应将除最后一个报片之外的所有报片分割成64比特整数倍大小的数据块。M(More fragment)比特在最后的报片中置成“0”,在其余的报片中置成“1”。报片头标的标识符(Identifier)与IPv4标识符的作用相同,但不是16比特而是32比特。标识符由发送节点赋值,它应能在一定时段内唯一标识该报片所属的原分组。发送方对发送往同一目的地的待拆分IP分组(是信源地址与目的地址均相同的一批分组)分别选取不同的标识值,接收方利用此值识别并重组报片所属的原IP分组。 http://www.bupttc.com
信宿端分片重组时应遵循以下原则: • 只有信源地址、目的地址及标识符均相同的分片才能重组,从而恢复成原IPv6分组。 • 重组出的IPv6分组中的净荷长度等域值由相应公式计算。 • 在第一个分片到达信宿端之后的60秒钟之内,如果检测到仍然有同类分片尚未到达,那么分片重组应强制取消,所有已经收到的分片(尽管它们是有效分片)必须抛弃,并且采取相应的措施通知信源端。 • 当接收到More fragment值为1但净荷长度不是8的整数倍的分片,则丢弃该分片,并用ICMP报文通知信源端分片长度出错。 • 如果接收端重组时发现重组的IP包将有超过65535字节的净荷长度,则某分片的偏移量必然出错,分组被丢弃,信宿端发送ICMP报文通知信源端分片偏移量出错。 http://www.bupttc.com
目的地包头 http://www.bupttc.com
对不能识别的选项类型的处理 http://www.bupttc.com
逐跳选项 http://www.bupttc.com
IP安全 • IPv6规范规定了“认证头标(authentication header)”和“封装安全净荷(ESP:Encapsulation Security payload)” • 认证功能提供了接收方能够确认IP分组源地址的正确无误,并且其内容在传输过程中未被篡改的机制; • 封装安全净荷功能则保证只有合法的受信者才能读懂IP分组的内容。 • 这二个功能本来是为IPv6设计的,为检测其效能及实用性,在IPv4中也能使用。 http://www.bupttc.com
ESP简介 • 应用方式:单独应用/与AH组合/嵌套 • 对象:主机/安全网关/主机-安全网关 • 插入的位置 • IP报头之后,上层报头之间(传送模式) • 被封装的IP报头之前(通道模式) • 安全业务 • 机密性:加密器 • 数据源认证:身份验证器 • 抗重播:唯一的、单向递增的序列号 • 数据完整性:身份验证器 http://www.bupttc.com
0 7 15 23 31 安全参数索引SPI (Security Parameters Index) 序列号(Sequence Number) 载荷数据 (变长)(Payload Data) 填充字段(0~255B) 填充长度 下一个报头 认证数据(变长)(Authentication Data) ESP头 http://www.bupttc.com
ESP业务范围—认证业务 0 7 15 23 31 安全参数索引SPI (Security Parameters Index) 序列号(Sequence Number) 载荷数据 (变长)(Payload Data) 填充字段(0~255B) 填充长度 下一个报头 认证数据(变长)(Authentication Data) http://www.bupttc.com
ESP业务范围—加密业务 0 7 15 23 31 安全参数索引SPI (Security Parameters Index) 序列号(Sequence Number) 载荷数据 (变长)(Payload Data) 填充字段(0~255B) 填充长度 下一个报头 认证数据(变长)(Authentication Data) http://www.bupttc.com
ESP报头内容-- SPI • 32位的必选字段 • 与目标地址和协议(ESP)结合起来唯一标识处理数据包的特定SA。 • 数值可任选,一般是在IKE交换过程中由目标主机选定。 • SPI经过验证,但是不加密。 • 0~255保留 http://www.bupttc.com
ESP报头内容– 序列号 • 32位的必选字段 • 独一无二、单向递增 • 对序列号的处理由收端确定 • SA开始时,收发端的序列号都设置为0 • 经过验证,但是不加密。 http://www.bupttc.com
抗重播(Antireplay) • 使用32位的独一无二、单向递增的序列号+滑动窗口,实现抗重播。 • 在一个SA内,序列号不重复 • 接收窗口大于32,推荐64。窗口左端对应起始序列号,右端对应将接收的包号。 • 落在接收窗口内或右侧的数据包将接收 接收窗口 http://www.bupttc.com
ESP报头内容– 载荷数据 • 变长的必选字段,整字节数长 • 包含由下一个报头字段描述的数据 • 加密同步数据 • 可能包含加密算法需要的初始化向量(IV),IV是没有加密的。 http://www.bupttc.com
ESP报头内容–填充项 • 为什么需要填充? • 加密算法可能要求整数倍字节数 • 保证认证数据字段对齐 • 隐藏载荷真实长度,实现部分通信流保密,但是增加传输量 • 缺省填充方法:1~2~3~4…… • 可指定填充内容和接收端处理,发送者可添加0~255字节。 http://www.bupttc.com
ESP报头内容—填充长度 • 必选字段 • 表示填充字段的长度 • 合法的填充长度是0~255,0表示没有填充 http://www.bupttc.com
ESP报头内容—下一个报头 • 8比特长必选字段 • 表示在载荷中的数据类型 • 通道模式下,这个值是4,表示IP-in-IP;传送模式下是背后数据的类型,由RFC1700定义,如:TCP为6。 http://www.bupttc.com
ESP报头内容—认证数据 • 变长的可选字段,只有SA中包含了认证业务时,才包含这个字段。 • 认证算法必须指定认证数据的长度、比较规则和验证步骤。 http://www.bupttc.com
ESP报头位置 • ESP报头在IP头之后 • IPv4:ESP头紧跟在IP头后面,这个IP头的协议字段是50。 • IPv6:ESP在扩展头之后,(包括逐跳、路由选择、分段头),目的地选项之前。 http://www.bupttc.com
IP头 安全参数索引SPI (Security Parameters Index) 已 验 证 序列号(Sequence Number) 初始化向量 载荷数据 (变长)(Payload Data) TCP头 已 加 密 填充字段(0~255B) 填充长度 下一个报头 认证数据(变长)(Authentication Data) ESP模式—传送模式 http://www.bupttc.com
IP头 安全参数索引SPI (Security Parameters Index) 已 验 证 序列号(Sequence Number) 初始化向量 载荷数据 (变长)(Payload Data) IP头 已 加 密 填充字段(0~255B) TCP头 填充长度 下一个报头 认证数据(变长)(Authentication Data) ESP模式—通道模式 http://www.bupttc.com
如果封装的是IPv4,则ESP头的“下一个头”字段分配值为4;如果封装的是IPv4,则ESP头的“下一个头”字段分配值为4; • 如果封装的是IPv6,则ESP头的“下一个头”字段分配值为41; • ESP前面的IP头的赋值: • 源地址对应着应用ESP的设备本身 • 目的地址取自于用来应用ESP的SA • 协议为50 • 其他参照本地IP处理填充 http://www.bupttc.com
AH简介 • 应用方式:单独应用/与ESP组合/嵌套 • 对象:主机/安全网关/主机-安全网关 • 保护对象:上层协议和尽可能多的IP报头 • 安全业务 • 数据源认证:身份验证器 • 抗重播:唯一的、单向递增的序列号 • 数据完整性:身份验证器 • 与ESP的不同:AH对外部IP头的各部分进行身份验证。 http://www.bupttc.com
AH头 0 7 15 23 31 下一个头 载荷长度 保留 安全参数索引SPI (Security Parameters Index) 序列号(Sequence Number) 认证数据(变长)(Authentication Data) http://www.bupttc.com
AH报头位置 • AH报头在IP头之后 • IPv4:AH头紧跟在IP头后面,这个IP头的协议字段是51。 • IPv6:AH在扩展头之后,(包括逐跳、路由选择、分段头),目的地选项之前。 http://www.bupttc.com
AH模式—传送模式 IP头 已 验 证 下一个头 载荷长度 保留 安全参数索引SPI (Security Parameters Index) 序列号(Sequence Number) TCP头 数据 http://www.bupttc.com