1、2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,1,中科院计算所计算机网络课程,2005-2006 博士班 上课时间:星期三晚6:309:30 上课地点:S304教室,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,2,第1单元 IPv6协议分组格式及其特点分析,1.1 IPv6头格式*两个头的比较 *简化 *对经典参数的修改 *新域 1.2 从选项到扩展头 *头的菊花链 *路由选择头 *分割头*目的地选项头 *逐跳选项头 *扩展头顺序,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,3,第1单元 IPv6协议
2、分组格式及其特点分析,许多年来,第4版IP(IPv4)在互联网环境中起了一个中心的作用。实践证明,它是足够灵活的,可以在许多不同的网络技术上工作。然而在因特网的早期,使用它的人典型地是在学术机构、高技术公司和研究实验室工作的研究人员和科学家,主要目的是通过电子邮件交换科学数据。在上个世纪90年代WWW和个人计算机的广泛使用把因特网的用户改变为一般民众。这一改变产生了对新的IP协议版本的需求。 当前采用的IP协议是它的第4版(IPv4),IPv5的称号被赋给了一个实验的称为流协议的面向连接的因特网协议。现在人们普遍意识到,或早或晚,IPv4最终要被一个称为IPv6的新协议替代。,2005年11月
3、2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,4,第1单元 IPv6协议分组格式及其特点分析,对IP新版本的需求首先是由在IPv4中32位地址段的限制引起。子网划分和无类别域间路由选择有助于控制因特网地址空间消耗的速度,也有助于控制在因特网路由器中所需要的路由表信息的增长。然而,当因特网发展到一定程度时,这些技术就会变得无能为力了。特别地,人们不可能取得100%的地址利用率,因此,在远不足40亿台主机连到因特网之前,地址空间就要被用尽。即使能够使用所有的40亿个地址,如果要把IP地址分配给有线电视的机顶盒,或者分配给电子仪表,那么这样多的地址也是不够用的。所有这些可能性都表明,人
4、们最终肯定需要比32位所提供的要大得多的地址空间。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,5,第1单元 IPv6协议分组格式及其特点分析,由于IP地址运载在每一个IP分组的头部,增加IP地址的尺寸势必要改变IP分组头。这就意味着要建立一个新的IP版本,因此在因特网 中的每个主机和路由器都要采用新的软件。这显然不是一件小事,而是需要非常仔细地考虑的一个主要改变。 定义新版本IP的工作产生了滚雪球的效应。网络设计人员总的意见是,如果要对IP做这样大的改变,也许最好也同时尽可能多地解决IP所存在的其他的问题,例如IP协议对多媒体通信和安全性的支持问题。,2005
5、年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,6,第1单元 IPv6协议分组格式及其特点分析,1990年,因特网 工程任务组(IETF)就看到了这方面的问题,并且着于研制一个新的IP版本,其主要目标如下: (1)具有非常大的地址空间,即使各个单位和组织对分配的地址利用率不高,也能支持数十亿以上的主机。 (2)减少路由选择表的尺寸。 (3)简化协议,允许路由器更快地处理分组。 (4)提供比现在的IP更好的安全性(身份验证和保密)。 (5)更多地关注服务类型,特别是实时数据。 (6)通过允许指定范围来辅助多投点(组播)服务。 (7)允许主机移动地理位置(漫游)而不用改变其IP
6、地址。 (8)允许协议在未来进一步演变。 (9)允许老的和新的协议在若干年内共存。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,7,第1单元 IPv6协议分组格式及其特点分析,1992年6月IETF公开征求对下一代IP(IPng)的建议,随后收到了若干个提案,到1994年就形成了IPng的最后设计。1995年1月 RFC 1752“下一代IP建议书”的发表是一个重要的里程碑。RFC1752概述了IPng 的需求,规定了PDU格式,突出了下一代IP在寻址、路由选择和保安等方面采用的方法。这个新一代的IP现在已正式地称作IPv6。有一系列的因特网文档描述IPv6的细
7、节,它们包括从总体上描述IPv6的RFC1883(后在RFC 2200中更新为 RFC 2460 - Internet Protocol, Version 6 “IPv6” Specification-DRAFT STANDARD ) ,讨论在IPv6头中的流标记的RFC1809(Using the Flow Label Field in IPv6 ),以及处理IPv6寻址方面的RFC1884 (IP Version 6 Addressing Architecture )、RFC1886 (DNS Extensions to support IP version 6 )和RFC1887(An
8、Architecture for IPv6 Unicast Address Allocation )。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,8,第1单元 IPv6协议分组格式及其特点分析,IPv6被设计成可以跟IPv4互操作,因为要花许多年的时间完成从第4版到第6版的过渡。因此IPv6应该保留IPv4提供的最基本的服务无连接投递服务。在另一方面,由于IPv4对于新出现的诸如实时视频会议这类应用不能够很好地支持,所以对其一些功能应该加以改变。 虽然IPv6跟IPv4不兼容,但是总的来说它跟所有其它的因特网 协议兼容,包括TCP、UDP、ICMP、IGMP(
9、因特网组管理协议)、OSPF、BGP(边界网关协议)和DNS,只是在少数地方作了必要的修改(大部分是为了处理长的地址)。 IPv6相当好地满足了预定的目标。 首先也是重要的,IPv6有比IPv4长得多的地址。IPv6的地址用16个字节表示,地址空间是IPv4的296倍,足以给每个人分配51028个具惟一性的地址。无论未来怎样发展,看来这么多的地址也是够用的。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,9,第1单元 IPv6协议分组格式及其特点分析,IPv6第二个主要的改进是简化了IP分组头,它包含8个段(IPv4是12个段)。IPv4的一些头段,例如IHL(因
10、特网头长)、头检验和、标识、标志和片段偏移,在IPv6头中不复存在。IPv6仅在源分割,不允许路由器分割分组。这一改变使得路由器能够更快地处理分组,从而可以改善吞吐率。 第三个主要改进是IPv6更好地支持选项。这一改变对新的分组头很重要,因为一些从前是必要的段现在变成可选的了。此外,表示选项的方式也有所不同,使得路由器能够简单地跳过跟它们无关的选项;这一特征加快了分组处理速度。IPv6还支持称作巨大载荷的大于64k字节的载荷,这里的k=1024。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,10,第1单元 IPv6协议分组格式及其特点分析,IPv6有重大举措的第
11、四个方面是安全性。身份验证和保安功能是这个新的IP的关键特征。 最后一项重要改进是有关资源分配的。IPv6增加了一个“流标记”,标识某些需要某种QoS的分组流。IPv6的流标记段支持对属于一个特别的交通流(对应的发送端可能请求特别的处理)的标记,从而能够支持诸如实时视频这样的特殊交通。见到这些分组的路由器必须依照它们的请求对它们进行处理。不支持流的主机需要把流标记段置成零。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,11,第1单元 IPv6协议分组格式及其特点分析,总体评价:IPv6是比较简单的,易于编程的,比以前的版本更有效的协议。 基本观点: 如果IPv4
12、包含任何主要的错误,那么因特网在过去的年代里不可能如此地成功。IPv4是一个很好的设计,IPv6应该保留它的大多数特征。也许可以简单地增加地址空间,而让其它什么都不变。然而基于前瞻性的考虑, IPv6是建立在对IP 的功能有增加的设计思想上。IPv6不是IPv4的简单演进,而是有实质性的改进。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,12,1.1 IPv6头格式,IPv6的头格式由64位头后随128位源地址和128位目的地址组成,总长度是40个字节。 该头的起始64位由下列域组成:*版本域(4位) *交通类别(8位)*流标记(20位) *载荷长度(16位)*
13、下一个头的类型(8位) *跳段限制(8位),2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,13,1.1 IPv6头格式,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,14,1.1 IPv6头格式:两个头的比较,新的头实际上要比经典IP的头简单。新头仅有6个域和两个地址,而老头有10个固定域,两个地址,以及一些选项。 IPv4的分组格式如下页中的图所示,分组头的长度为4个字节(32位)的整数倍。从任选项往后是可变长部分,这部分也可以没有。以下我们回顾一下分组头中各个段的含义。 (1)版本号 该4位段表示协议支持的IP版本号。在处理IP分
14、组之前,所有IP软件都要检查分组的版本段,以便保证分组格式与软件期待的格式一样。如果标准不同,机器将拒绝与其协议版本不同的IP分组。 (2)互连网分组头长 该4位表示IP分组头的长度,以32个二进制位(4个字节)为单位,取值的范围是5-15(缺值是5)。由于IP分组头的长度是可变的,故这个段是必不可少的。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,15,1.1 IPv6头格式:两个头的比较,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,16,1.1 IPv6头格式:两个头的比较 IPv4分组头,(3)服务类型 该8位段说明分组所希
15、望得到的服务质量。它允许主机指定在网络上传输分组的服务种类,也允许选择分组的优先级,以及希望得到的可靠性和资源消耗,该段的目的是请求网络提供所希望的服务。如下图所示,服务类型段的头3位表明IP分组的优先权,该值在0(正常)到7(网络控制)之间变化,数值越大则IP分组越重要。但以往大多数TCP/IP产品和实际使用TCP/IP的所有硬件都忽略该3位域,用相同的优先权处理所有IP分组。接下来的3位控制网络的延迟时间、吞吐率和可靠性,如果置零则表示常规服务,如果置1则分别表明短延迟、高吞吐率和高可靠性,最后两位未使用,置成零即可 。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:
16、中关村,17,1.1 IPv6头格式:两个头的比较 IPv4分组头,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,18,1.1 IPv6头格式:两个头的比较 IPv4分组头,(4)总长度该16位段给出IP分组的总长度,单位是字节,包括分组头和数据的长度。数据段的长度可以从总长度减去分组头长度计算出来。由于总长度段有16位,所以最大IP分组允许有65535个字节。但这样大的IP分组在现有物理网络上传输可能不太现实,尽管应用程序有时可能需要传送大的数据报文。IP规范规定,所有主机和路由器至少能支持576字节的分组长度。需要说明的是,IP分组在网络传送过程中被分成分组片
17、的情况下,分片后形成的IP分组中的总长度段指的是单个分组片的总长度,而不是原先IP分组的总长度。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,19,1.1 IPv6头格式:两个头的比较 IPv4分组头,(5)标识符 16位的标识符段包含一个整数,唯一地标识该IP分组。IP分组在传输时,其间可能会通过一些子网。这些子网允许的最大协议数据单元(PDU)长度可能小于该IP分组的长度。为了处理这种情况,IP为以数据报方式传送的IP分组提供了分片和重组的功能。这也正是IP模块的主要功能之一。当一个路由器分割一个IP分组时,要把IP分组头中的大多数段值拷贝到每个分组片中,标
18、识符段必须拷贝。它的基本目的是使得目的地知道到达的哪些分组片属于哪个IP分组,源发方计算机必须为发送的每个IP分组分别产生一个唯一的标识符段值。为此,IP软件在计算机存储器保持一个全局计数器,每建立一个IP分组就加1,再把结果放到IP分组标识符段中。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,20,1.1 IPv6头格式:两个头的比较 IPv4分组头,(6)标志 3位的标志段含有控制标志,如下图所示,3位中的低序2位控制IP分组的分片,这2位分别称作不可分片位和还有分组片位。当不可分片位置1时,规定不要将IP分组分片。仅当完整的IP分组才是有用的情况下,应用程
19、序才可选择禁止分片,例如,考虑一台计算机的引导序列。在这个序列中,机器开始时执行ROM上的一个小程序,通过因特网去请求一个初始引导软件,作为响应,另一台机器送回来一个内存映象。如果该软件设计成要么需要整个映象,要么一点也不使用,那么就应将不可分片位置1。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,21,1.1 IPv6头格式:两个头的比较 IPv4分组头,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,22,1.1 IPv6头格式:两个头的比较 IPv4分组头,标志段的低位标明这个分组片包含的数据是取自原始IP分组中间,还是取自原始
20、IP分组的最后,为什么需要这个“还有分组片”位呢?在分片的情况下,在最终报宿中的IP软件需要重新组合IP分组。当一个分组片到达时,分组头中的总长度段是指该分组的长短,而不是原来分组的长短,所有报宿不能用这个总长度段判断该分组的所有分组片是否已收集齐全。有了“还有分组片”位,这个问题就容易解决了。一旦报宿收到一个分组片,如果它的“还有分组片”位置0,就知道这个分组片中的数据取自原始分组的尾部。 根据稍后即将说明的“分组片偏移”段和总长度段,接收端便可以知道,重组整个原始IP分组需要的所有数据的分组片是否都已到达。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,23,
21、1.1 IPv6头格式:两个头的比较 IPv4分组头,(7)分组片偏移 13位的分组片偏移段标明当前分组片在初始IP分组中的位置。为了重组IP分组,报宿必须得到从偏移0开始,直到最高偏移值之间的所有分组片。这些分组片不需要按顺序到达,接收分组片的报宿与分割IP分组的路由器之间不进行通信,报宿也能重新组合IP分组。分组片偏移以64位(8个字节)为单位,取值范围0至8191,缺省值是0。 (8)生存时间 8位的生存时间段指定IP分组能在互连网中停留的最长时间,以秒为单位。当该值降为0时,IP分组就应被舍弃。该段的值在IP分组每通过一个路由器时都减去1。该段决定了源发IP分组在网上存活时间的最大值,
22、它保证IP分组不会在一个互连网中无休止地往返传输。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,24,1.1 IPv6头格式:两个头的比较 IPv4分组头,(9)协议 8位的协议段表示哪一个高层协议将用于接收IP分组中的数据。高层协议的号码由TCP/IP中央权威管理机构予以分配。例如,该段值的十进制表示对应ICMP(互连网控制报文协议)是1,对应传输控制协议(TCP)是6,对应EGP(外部网关协议)是8,对应用户数据报协议(UDP)是17,对应ISO传输层协议第4类(ISO-TP4)是29。 (10)分组头检验和 16位的分组检验和段保证IP分组头值的完整性,当
23、IP分组头通过路由器时,分组头发生变化(例如生存时间段值减1),检验和必须重新计算。检验和的计算十分简单。首先,在计算前将检验和段的所有16位均置成0,然后IP分组头从头开始每两个字节为一个单位相加,若相加的结果有进位,那么将和加1。如此反复,直到所有分组头的信息都相加完为止,将最后的值对1求补,即得出16位的检验和。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,25,1.1 IPv6头格式:两个头的比较 IPv4分组头,(11)源地址 32位的源地址段包含发送IP分组的源主机的IP地址。 (12)目的地址 32位的目的地址段包含IP分组的目的地主机的IP地址。
24、 (13)任选段 可变长的任选段提供了一种策略,允许今后的版本包含在当前设计的头中尚未出现的信息,也避免使用固定的保留长度,从而可以根据实际需要选用某些头部登录项。 (14)填充段 如前所述,IP分组头必须是4个字节长的整数倍。填充段是为了使有任选项的IP分组满足4个字节长度的整数倍而设计的,通常用0填入填充段来满足这一要求。填充段的有无或所需要的长度取决于选择项的使用情况。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,26,1.1 IPv6头格式:两个头的比较,IPv6取消了IPv4的6个域:头长、服务类型(8位3位优先级,另3位分别用于延迟、吞吐率和可靠性,
25、还有两位未用)、标识符(用于分割)、标志(用于分割) 、分割偏移(用于分割)和头检验和。重新命名并稍微改变了定义的有3个域:长度、协议类型(说明上层协议)和生存时间(以秒为单位)。整个地修改了选项机制,并增加了两个域:交通类别(8位)和流标记(20位) 。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,27,1.1 IPv6头格式:两个头的比较,仅有的含义和位置都未改变的域是开头4位。网络程序可以使用起始的版本域确定对分组的处理方式。如果该域的二进制码是0100(十进制4),就当作IPv4处理,如果是0110(十进制6),就被认为是IPv6分组。当然这样做并非是必
26、需的。事实上在媒体层就可以区分开IPv4和IPv6。例如,在以太网上IPv6分组承载在类型域值为86DD的帧中,而不是IPv4的类型域值8000。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,28,1.1 IPv6头格式:简化,IPv4头的设计是基于1975年的技术状态。20年以后,IPv6对其作了3个方面主要的简化:*对所有的头都分配固定的格式。*去掉头检验。*去掉逐跳分割过程。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,29,1.1 IPv6头格式:简化,IPv6头不包含任何选项成分。但这并不意味着我们不可以对特殊分组表示选
27、项。跟IPv4不同,IPv6的选项功能不是通过可变长选项取得的,而是把扩展头附加到主头后面。其明显的结果是IPv6不再需要一个头长度。 去除头检验的主要优点是减少了头处理的代价,因为没有必要在每一中继站都检查和更新检验和的值。其风险是未监测到的差错可能导致对分组作错误的路由选择。然而这种风险很小,因为大多数封装过程都包含一个分组检验和。事实上,在IEEE-802网络的媒体访问控制过程中,在使用ATM线路的适配层中,以及在用于串行链路的PPP协议的成帧过程中,都有检验和域。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,30,1.1 IPv6头格式:简化,IPv4包
28、括一个分割过程,使得发送方可以发送大的分组而不用担心中继的能力。这些大的分组在必要的时候可以被分割成适当大小的片段。接收方等待所有这些片段的到来,并重组分组。然而,以往的实践表明,这种分割与重组过程产生了一些负面效应。假定我们在仅能够运载小的片段的网络上尝试发送大的分组。一个分组的成功传输依赖于每个片段的成功传输。哪怕只有一个片段丢失了,整个分组必需重传,结果产生对网络的低效使用。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,31,1.1 IPv6头格式:简化,IPv6的规则是,主机通过一个称作最大通路MTU(最大传输单元)发现的过程应该能够知道可以被接受的最大
29、片段尺寸。如果主机发送大的分组,这些分组将简单地被拒绝。因此IPv6不再像IPv4那样设立分割控制域(包括分组标识符,分割控制标志和片段偏移)。 然而,IPv6包括一个端到端的分割规程。而且根据1996年的规范,所有的IPv6网络都被假定能够运载536字节的载荷。在IPv6的1997年版本中,Steve Deering提出把这个尺寸提升到1500字节的建议。不愿意发现或记住通路MTU的主机可以简单地发送小的分组。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,32,1.1 IPv6头格式:简化,IPv6的最后一项简化是去掉了服务类型(TOS,Type Of Ser
30、vice)域(3位表示优先级0-7,3位分别表示对延迟时间、吞吐率和可靠性的期望:0或1,剩下2位未用:保留)。在IPv4中,主机可以设置TOS的值。表示对最短的、最宽的、最可靠的,或最安全的通路的期望。然而,应用程序并没有普遍地使用这个域。在IPv6中提供了处理这些期望的机制。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,33,1.1 IPv6头格式:对经典参数的修改,跟IPv4类似,IPv6头包括分组长度指示、生存时间和协议类型。然而这些域的定义都被稍微地修改了。 IPv4的总长度被IPv6的载荷长度代替了。这里有细微的差别,因为按照定义,载荷长度是在头后面
31、运载的数据的长度。作为例子,假定载荷是一个TCP分组,包括20字节的TCP头和400字节的应用数据。在IPv4中,我们要在这个TCP分组的前面加上1个20字节的IPv4头,总长度将是440字节。 按照IPv4的总长度概念,在IPv6中,我们将加上一个40字节的IPv6头;但实际上,在IPv6中,载荷长度被设置成420(包括TCP报文段,也包括可能有的全部IPv6扩展头)。在IPv6中,长度域也像IPv4那样在16位上编码,这就把分组尺寸限制到64K字节。然而,IPv6使用巨大数据报选项(属于逐跳选项头)提供对比较大的分组的传送服务。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授
32、课地点:中关村,34,1.1 IPv6头格式:对经典参数的修改,IPv6把协议(类型)域重新命名为下一个头类型来反映新的IP分组结构。在IPv4中,IP头总是紧接着就后随传输协议数据,例如,一个UDP或TCP分组。在IPv6的情况下,如果IP分组封装TCP或UDP协议数据单元。那么头末尾的下一个头类型将被设置成协议类型TCP(6)或UDP(17)。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,35,1.1 IPv6头格式:对经典参数的修改,在IPv4中,生存时间域表示为秒的数量,说明分组在被丢弃以前允许在网络中还可以存在多长时间。生存时间的概念是基于对传输控制协
33、议的理论分析。如果允许分组在网络中无限期地存在着,那么老的拷贝可能在不可预期的时间退出,从而引起协议错误。IPv4规范强制每个路由器把生存时间域减少1秒,如果在路由中排队等待的时间较长,则减去这个等待时间(大于1秒)。但是,要精确地估计一个特定分组的等待时间是很困难的。由于这个时间通常是以毫秒计,而不是以秒计,大多数路由器只是简单地在每一中继处把TTL值减1。这一举动在IPv6中已经变成正规的做法了,所以相应的域名也改成跳段限制。它以跳段数目计算,而不以秒的数目计算。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,36,1.1 IPv6头格式:新域,IPv6头中有
34、两个在IPv4中不存在的域:流标记和交通类别。这两个域主要是为了方便对实时交通的处理而设计的。 交通类别域有8位,区分不同的IPv6分组的类别或优先级。目前对该域的使用尚处于试验阶段。下页中的插图给出了对于IPv6优先级的一种可能的用法。首先,分组被分类为要么是源提供拥塞控制的交通,要么是源不提供拥塞控制的交通。第二,在每个类别内,分组被分配给8个相对优级中的一个优先级。图中示出了对4位优先级段值的解释。8位中的其余4位保留用于网络拥塞控制等目的。 流标记用以表示需要同样处理的那些分组,它们由一个特定的源发送给一个特定的目的地,并具有指定的一组选择。,2005年11月2日,授课教师:鲁士文(C
35、AS/ICT) 授课地点:中关村,37,1.1 IPv6头格式:新域,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,38,1.2 从选项到扩展头,IPv4头允许有选项,可以对某些分组作特别的处理。早先的规范包括对安全性选择的编码,源路由选择,记录路由(用于路由跟踪)以及时间印迹。然而选项并未被普遍采用,主要是由于性能的问题。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,39,1.2 从选项到扩展头,分组转发编码是路由器软件高度优化的部分。程序设计人员逐条地统计处理一个分组所需要的指令的条数,因为这个条数的任何减少都会产生更高的性能。
36、比竞争对手每秒可以转发更多个分组的路由器在市场上也更加容易获得成功。提高编码性能最常用的方法是关注最频繁出现的分组。让它们在程序中走最快的处理通路。具有选项的分组不能走快速通路,因为按照定义,它们需要特别的处理。它们常常被划归为第二类分组,由一个比较慢的欠优化的软件片段来处理。结果应用程序设计人员注意到,使用选项会引起性能缺陷。他们倾向于仅使用非常简单的分组。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,40,1.2 从选项到扩展头,然而,人们有足够的理由需要对某些分组作特别的处理。例如,通过源路由选择请求一条特别的路由,或者指定接收方对一个分组作特别的处理。I
37、Pv6规范说明了如何通过扩展头来实现这类特别的处理。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,41,1.2 从选项到扩展头:头的菊花链,在IPv4中, 作为载荷的TCP分组紧接在IP头的后面。在IPv6中在因特网头和载荷之间可能插入任意数目的扩展头。每个头用1个头类型表示,并运载在链中随后的头的类型,在最后一个扩展层头的情况下则是载荷的头类型。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,42,1.2 从选项到扩展头:头的菊花链,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,43,1.2 从选项到
38、扩展头:头的菊花链,当前的IPv6规范定义了6个扩展头:*逐跳选项头*路由选择头*分割头*身份验证头*封装安全载荷头*目的地选择头,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,44,1.2 从选项到扩展头:头的菊花链,每个扩展都用一个头类型标识。IPv6的下一个头域可以包含一个扩展头的类型,也可以包含载荷的协议类型,例如TCP或UDP。因此,头类型必须不能跟协议类型冲突,它们从同样的一组256个数字中分配。协议类型域基本上跟IPv4相同(虽然有些协议类型略有不同),例如TCP是6,UDP是17,OSPF是89,ICMP(IPv4)是1,ICMP(IPv6)是2;
39、而HBH(逐跳选项,IPv6)是0,RH(路由选择头,IPv6)是43,FH(分割头,IPv6)是44。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,45,1.2 从选项到扩展头:路由选择头,在IPv6中对选项的处理最典型的例子是路由选择头,它的作用跟IPv4中的源路由选项相同。这个头主要包含分组将被中继经过的中间节点的地址的列表 ,源路由选择可以是严格的,也可以是松散的。 路由选择头由一组参数后随一个地址列表组成。开头32位包含4个8位整数:*下一个头。标识在头的菊花链中紧跟在路由选择头后面的头的类型。 *头扩展长度。用64位字的数目表示的头扩展长度,不包括开
40、头64位(4个8位整数和32个保留位)。*路由选择类型。设置成0。*剩余段域。在列表中剩余段的数目,该值的范围是从0到23。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,46,1.2 从选项到扩展头:路由选择头,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,47,1.2 从选项到扩展头:路由选择头,紧接着的下一个32位是保留域,应该设置成0。路由选择头的剩余部分是一组128位地址的列表,编号从1到N。在IPv4中源路由编码在可选头域中,所有的路由器都需要对其进行检查,即使它们不被包括在源路由内明确说明的中继站列表中。因此对源路由分组
41、的处理是非常缓慢的,该选项在实践中被使用得不多。在IPv6中,路由器仅察看路由选择头来确定他们是否能识别出在主头的目的地域中它们自己的地址。没有被明确地列在源路由列表中的中间路由器将转发分组而不作任何附加的处理。这应该能够产生比较好的性能。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,48,1.2 从选项到扩展头:路由选择头,在分组的目的地域中识别出自己的地址的站将检查路由选择头,检查在列表中是否至少还剩下1个域。如果检查的结果是否定的,那么分组就已经到达源路由的终点,该站将跳过路由选择头去处理下一个头,其类型在下一个头参数中表明。如果检查的结果是肯定的,那么在
42、列表中至少还剩下1个域,该站将处理源路由选择。 在源路由中的下一地址的位置从头扩展长度(H=2N)和剩余段数(L)参数推导出来。每个地址是128位长,头扩展长度(路由地址段空间大小)是指定地址段(segment)的64位字的数目;因此,在列表中地址的数目N等于该长度(H)的一半。要处理的下一地址在列表中的位置号是N-L。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,49,1.2 从选项到扩展头:路由选择头,所有的IPv6规范的实现必须都能够处理类型0路由选择头,而且这些实现也必须准备好碰到并处理其它的类型, 然后采取某种默认操作。 事实上,类型0路由选择头是一般
43、路由选择头的子类型,它的组成是32位头后随类型特有的数据。32位头就是我们在前面介绍过的在类型0头中的4个8位参数(下一个头,头扩展长度,路由选择类型,剩余段)。路由选择类型说明在使用哪一个版本。类型特有的数据的格式和处理源路由的规则在每个路由选择类型的规范中解释。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,50,1.2 从选项到扩展头:路由选择头,如果一个IPv6系统必须处理一个路由选择头。它将首先检查路由选择头类型和剩余段的数目。如果类型未知,分组应该被拒绝,并给源发送方返回一个ICMP错误报文(参数问题),其ICMP编码值为0,让参数(说明是什么样的错误
44、)指向路由选择类型段。然而,剩余段值0表明该分组已经到达最后的目的地。即使系统不懂得指定的路由选择类型,它也应该接受这样的分组。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,51,1.2 从选项到扩展头:分割头,跟IPv4不同,IPv6路由器不分割太大的分组,这种处理方式类似于IPv4把不可分割位隐含地设置成1。IPv6路由器拒绝其长度大于下一跳MTU的分组,并往回发送一个ICMP报文。然而IPv6在把分组往网络上发送之前可以进行分割。假定我们要在以太网接口上发送一个2800字节的载荷,并且知道该以太网的MTU是1500。此时,我们需要发送两个分组,每个分组的最
45、大尺寸是1500字节。在这两个分组中,我们都要在IPv6基本头和载荷之间插进一个分割头。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,52,1.2 从选项到扩展头:分割头,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,53,1.2 从选项到扩展头:分割头,分割后的每个片段都是独立地进行路由选择。分割头包含足够的信息让目的地能够串接这些片段。 除了下一个头参数以外,在IPv6的分割头中的域跟IPv4头的分割控制参数几乎相同。标识符同于IPv4的分组标识,显著的差别是用32位编码代替16位编码。分割偏移跟IPv4的偏移域起同样的作用,但
46、编码略有不同。IPv4使用一个16位字的13个最低有效位,IPv6则在最高有效位编码偏移域。在两种情况下分割都在64位字的边界进行。IPv4偏移必须是8字节的整数倍。而在IPv6中只要把3个最低有效位置0(3位0相当于8字节单位,16位表示字节数,13位表示8字节字的数量)就可以了。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,54,1.2 从选项到扩展头:分割头,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,55,1.2 从选项到扩展头:分割头,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,56,1.
47、2 从选项到扩展头:分割头,主要的不同点体现在标志域。在IPv6头中没有分割控制(允许和不允许),因为这个头仅当发送方决定分割分组时才插入。在IPv6中也有“还有片段”位(M),对于一个完全分组除最后一个片段外的所有片段,该位都要置1。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,57,1.2 从选项到扩展头:目的地选项头,给IPv6增加可选功能有两种方法。第一种方法定义了一个新的扩展头类型,透明地通过网络传送,仅被在目的地址中指定的站检查和处理。这种扩展方法有两个不方便之处。 (1)它需要分配头类型号码。现在仅有256个这样的号码,用于扩展头,也用于诸如UDP
48、、TCP这类载荷。它们是相对于稀少的资源,应当节约使用。 (2)它需要源和目的地都懂得新的选项。如果一个目的地站不懂得一个头的类型,它只能拒绝整个分组。,2005年11月2日,授课教师:鲁士文(CAS/ICT) 授课地点:中关村,58,1.2 从选项到扩展头:目的地选项头,IPv6选项头消除了这种不方便性。它使用单个头类型(60)来定义一个一般的目的地选项头。该头作为一个参数包含一个或多个以选项类型标识的一个或多个选项(都包含在一个扩展头中)。该扩展头仅有的参数是下一个头类型和一个8位的长度域。长度域表示在该选项头中64位字(单位)的数目,其中不包括开头的64位(8个字节)。作为例子,如果选项头仅由8个字节组成,那么长度域的值将是0。如果选项头有32个字节组成,那么长度域的值将是3(83=24 24+8(以64位作为单位)= 32),表示出了开头8个字节,后面还有3个8字节。,