返回列表 发帖

DHCPv6

DHCPv6    DHCP(Dynamic Host Configuration Protocol 动态主机分配协议)的前身是BOOTP。BOOTP是用于无磁盘主机连接网络时使用的。网络主机使用BOOT ROM而不是磁盘启动并连接上网络,BOOTP可以自动为那些主机设定TCP/IP环境。BOOTP的缺点是:在设定前必须获得客户端的硬件地址,而且该硬件地址与IP是静态对应的。即BOOTP非常缺乏“动态性”,若在有限的IP资源中BOOTP的一对一机制会造成很大的浪费。    DHCP可以说是BOOTP的增强版,它分为两个部分:一个是服务器端,另一个是客户端。所有的IP网络设定数据都由DHCP服务器集中管理,并负责处理客户端的DHCP要求;而客户端则会使用从服务器分配下来的IP环境数据。对比BOOTP,DHCP更有效的动态分配客户端的TCP/IP设定,而且作为兼容,DHCP也完全照顾了BOOTP Client的需求。DHCP工作原理图如图1所示。 图 1 DHCP工作原理 DHCP分配形式    DHCP的分配形式:首先,必须至少有一台DHCP工作在网络上,它会监听网络的HDCP请求,并与客户端磋商TCP/IP的环境设定。它提供三种IP定位方式: Manual Allocation —— 网络管理员为某些少数特定的Host绑定固定IP地址,且地址不会过期; Automatic Allocation —— 自动分配。即一旦DHCP客户端第一次成功从DHCP服务器租到IP地址后,就永远使用这个地址; Dynamic Allocation —— 动态分配。当DHCP第一次从DHCP服务器端租用到IP地址之后,并非永久的使用这个IP地址,只要租约到期,客户端就会就得释放这个IP地址,以给其他工作站使用。当然,客户端可以比其他主机更优先更新租期,或是租用其他的IP地址。    DHCP除了能动态的设定IP地址之外,还可以将一些IP保留下来给一些特殊用途的机器使用,它可以按照硬件地址来固定的分配IP地址。同时,DHCP还可以帮助客户端指定router、netmask、DNS Server等等。即使用DHCP,用户几乎无需做任何的IP环境设定。 DHCP工作原理 根据客户端是否是第一次登录网络,DHCP的工作形式会有所不同。 第一次登录网络时:    寻找Server。当DHCP客户端第一次登录网络时,即客户发现本机上没有任何IP数据设定,它会向网络发出一个DHCP Discover包。因为客户端还不知道自己属于哪一个网络,所以该包的源地址为0.0.0.0(对于IPv6是::),而目的地址则为255.255.255.255,然后再附上DHCP Discover的信息,向网络进行广播。在默认情况下,DHCP Discover的等待超时时间为1秒,即客户端将第一个DHCP Discover包送出去之后,在1秒内没有得到相应的话,就会进行第二次DHCP Discover广播。若一直得不到响应,客户端一共会发送四次DHCP Discover广播,除了第一次会等待1秒之外,其余三次的等待时间分别是9、13、16秒。如果都没有得到DHCP服务器的响应,客户端会显示错误信息,宣告DHCP Discover的失败。此后,基于用户的选择,系统会继续在5分钟之后再重复一次DHCP Discover的过程。如图2所示。    图 2 客户端启动后发送 DHCP Discover广播       提供IP租用地址。当DHCP服务器监听到客户端发送出的DHCP Discover广播后,它会从那些还没有租出的地址范围内,选择前面的空置IP,连同其它TCP/IP设定发送给客户端一个DHCP Offer包。由于客户端在开始的时候还没有IP地址,所以在其DHCP Discover包内会带有其MAC地址信息,并且有一个XID编号来辨别该包。DHCP服务器响应的DHCP Offer包则会根据这些资料传递给要求租约的客户,同时在这个Offer包中还包含一个租约期限的信息。    接受IP租约。如果客户端收到网络上多台DHCP服务器的响应,它只会挑选其中一个DHCP Offer(通常是最先到达的那个),并且会向网络发送一个DHCP Request广播包,告诉所有DHCP 服务器它将指定接受哪一台服务器提供的IP地址。同时,客户端还会向网络发送一个ARP包,查询网络上有没有其他主机使用该IP地址;如果发现该IP已经被占用,客户端则会送出一个DHCPDECLIENT包给DHCP服务器,拒绝接收其DHCP Offer,并重新发送DHCP Discover信息。    租约确认。当DHCP服务器接收到客户端的DHCP Request之后,会向客户端发送一个DHCP ACK响应,以确认IP租约正式生效,也就结束了一个完整的DHCP工作过程。整个工作流程如图3所示。 图 3 DHCP工作流程图 DHCPv6在IPv6中的应用 IPv6主机可以通过多种方法来配置地址: 无状态地址自动配置——用于对链接本地地址和其他非链接本地地址两者进行配置,方法是与相邻路由器交换路由器请求和路由器公告消息。 有状态地址自动配置——通过使用如DHCP的配置协议,来配置非链接本地地址。    IPv6主机自动执行无状态地址自动配置,并在相邻路由器发送的路由器公告消息中使用基于以下标记的配置协议(如DHCPv6): 托管地址配置标记,称为M。设置为1时,次标记指示主机使用配置协议来获取有状态地址。 其他有状态配置标记,称为O。设置为1时,此标记指示主机使用配置协议来获取其他配置设置。 表1 M与O的组合即作用 M O 描述 0 0 对应不具有DHCPv6的网络。主机使用非链接本地地址的路由器公告以及其他方法(如手动配置)来配置其他设置。 0 1 DHCPv6 不用于分配地址,仅用来分配其他配置设置。相邻路由器配置为通告非链接本地地址前缀,IPv6 主机从中派生出无状态地址。此组合称为 DHCPv6 无状态:DHCPv6 不为 IPv6 主机分配有状态地址,但分配无状态配置设置。 1 0 在此组合中,DHCPv6 用于地址配置,但不用于其他设置。因为 IPv6 主机通常需要使用其他设置(如域名系统 (DNS) 服务器的 IPv6 地址)进行配置,所以这是一种不太可能的组合。 1 1 DHCPv6 用于这两种地址(链接本地地址和其他非链接本地地址)和其他配置设置。该组合称为 DHCPv6 有状态,其中 DHCPv6 将有状态地址分配给 IPv6 主机    类似于 DHCP for IPv4,DHCPv6 基础结构的组件由下列各项构成:请求配置的 DHCPv6 客户端、提供配置的 DHCPv6 服务器、以及 DHCPv6 中继代理(当客户端位于不具备 DHCPv6 服务器的子网上时,它在客户端和服务器之间传递信息)。 ICMPv6 协议简介    ICMPv6是Internet Control Message Protocol Version 6的简称,译为第六版互联网控制信息协议。    ICMP是IP协议的一个重要组成部分。通过IP包发送的ICMP信息主要用于涉及网络操作或错误操作的不可达信息。ICMP包发送是不可靠的,所以主机不能依靠接收ICMP包解决任何网络问题。ICMP的主要功能如下: 通过网络错误。比如,某台主机或整个网络由于某些故障不可达。如果有指向某个端口号的TCP或UDP包没有指明接收端,这也由ICMP报告。 通告网络拥塞。当路由器缓存太多包,由于传输速度无法达到它们的接收速度,将会生成“ICMP源结束”信息。对于发送者,这些信息将会导致传输速度降低。当然,更多的ICMP源结束信息的生成也将引起更多的网络拥塞,所以使用起来较为保守。 协助解决故障。ICMP支持Echo功能,即在两个主机间一个往返路径上发送一个包。Ping是一种基于这种特性的通用网络管理工具,它将传输一系列的包,测量平均往返次数并计算丢失百分比。 通告超时。如果一个IP包的TTL降低到零,路由器就会丢弃此包,这时会生成一个ICMP包通告这一事件。 协议结构    ICMP在IPv6定义中重新修订。此外,IPv4组成员协议(IGMP)的多点传输控制功能也嵌入到ICMPv6中。ICMPv6协议结构如图4所示。 图 4 ICMP协议结构 Type —— 消息类型。包括:Echo Request、Echo Reply、Group Membership Query、Group Membership Report、Group Membership Reduction等; Code —— 每种消息类型具有多种不同的代码; Checksum —— 计算校验和; Identifier —— 帮助匹配Request/Reply的标识符,值可能是0; Sequence Number ——帮助匹配Request/Reply的序列号,值可能是0; Address Mask —— 32位掩码地址。 IPv6 Neighbor Discovery 协议简介    IPv6邻居发现协议(IPv6 NDP)是IPv6的一种基础协议,它利用Neighbor Advertiser(NA)、Neighbor Solicitor(NS)、Router Advertiser(RA)、Router Solicitor(RS)和重定向五种类型的ICMPv6消息,来确定邻居节点之间关系和地址信息,实现地址解析、验证邻居是否可达、重复地址检测、路由器发现(前缀发现)、地址自动配置和重定向等功能。    NDP代替了IPv4中的ARP、ICMP路由器发现(Router Discovery)和ICMP重定向消息(Redirect Message),并提供了一系列增强功能,保障了设备的安全性。 相关协议 NDP需要用到5种ICMPv6包: 路由器请求(Router Solicitor)。当节点不愿意等待下一次周期性路由器宣告,希望路由器立刻发送路由器宣告时发送的多播包。一个正在初始化的节点可以发送路由器请求,这样它可以马上得到链路上路由器的配置参数。(RS是类型为133的ICMP包。源地址是分配给发送主机的地址。如果还没有分配地址,则使用未指定地址0:0:0:0:0:0:0:0 即:: 目的地址是所有路由器的多播地址——FF02::2) 路由器宣告(Router Advertiser)。周期性发送或对请求作应答。路由器报告他们的存在,并提供节点配置自己所需要的信息。(RA是类型为134的ICMP包。源地址是发送路由器的本地链路地址,目的地址是发送路由器请求的节点地址或链路范围所有节点多播地址——FF02::1 RA中包含路由器生存时间。路由器生存时间告诉节点他们能将路由器作为默认路由器多久。其值为0表示该路由器不是候选的默认路由器,不能出现在节点的默认路由器表中。收到RA的节点构造一个默认路由器表。所有发送RA且生存时间不为0的路由器都出现在该列表中) 邻居请求(Neighbor Solicitor)。允许节点确定邻居的链路层地址,或者判断邻居是否还能从缓存的链路层地址可达。同时允许节点判断链路上是否存在重复的IP地址。(邻居解析消息用来获得邻居的链路层地址、提供本机的链路层地址以及验证邻居的可达性。它是一个类型为135的ICMP消息。IP包的源地址是发请求的节点的单播地址。用作获得链路层地址时,目的地址是关联在目的IP地址的被请求节点的多播地址;用作可达性确认时,目的地址是单薄地址) 邻居宣告(Neighbor Advertiser)。对邻居请求所回复的应答或者在链路层地址改变时不经请求发送。(邻居宣告用作应答NS或者在没有被请求时立即传播如链路层地址已改变等新消息。NA是类型为136的ICMP包。源地址是分配给发送接口的任意有效单播地址。当应答NS时,目的地址是请求包的源地址,或者当请求源地址是未指定地址时目的地址是所有节点地址FF02::1。 而未经请求的宣告的目的地址也是所有节点地址) 重定向。有时节点选择的转发路由器对于待转发的包而言并非最佳。这种情况下,该转发路由器可以对节点进行重定向,以将包发给最佳的路由器。例如,节点将发往Internet的包发送给为节点的Intranet网服务的默认路由器,该Intranet网路由器可以对节点进行重定向,以将包发送给连接在同一本地链路上的Internet路由器。 用RS和RA替代ARP:    在IPv6中,对节点链路层地址的确定使用RS、RA和被请求节点多播地址(FF02::1:FFxx::XXXX)的组合。一个Solicitor启动时所发出的报文如图5所示。     图 5 一个Solicitor启动过程中发出的报文        一个Advertiser启动时所发出的报文如图6所示。     图 6 一个Advertiser启动过程中发出的报文        IPv6中使用的NDP比IPv4中的ARP更加高效。在IPv6中,只有关心这个机制的邻居节点才会在它们的协议栈中处理RS和RA的公告消息。而在IPv4中,ARP广播使本链路上所有节点把ARP消息发送给IPv4协议栈。在IPv6中,节点在相同的请求中相互交换链路层地址。在IPv4中,需要两个ARP广播消息才能得到相同的结果。图7显示了RS和RA的工作原理。 图 7 RS和RA的工作原理 应用场合    在IPv6通信过程中始终需要运行NDP。例如,通信节点间转发IPv6报文、主机和路由器间交换IPv6地址配置信息时,都需要使用NDP获得链路层地址、邻居可达性等必要的信息。 主机通过NDP可以实现: 发现路由器; 自动获取地址前缀和其他相关配置参数。 路由器通过NDP可以实现: 发布路由器存在、主机配置参数和地址前缀; 通知主机向特定目的地址转发报文的理想下一跳地址。 通过NDP,主机和路由器还可以实现: 解析邻居节点的链路层地址; 按照一定机制维护邻居信息。    一般情况下,NDP默认的配置就可以满足普通用户的需求,但是下面两种情况需要在设备上对NDP进行配置: 网络状态不稳定或网络中存在安全隐患时,为了保证设备间通信稳定,需要调整部分参数; 设备为其他主机提供地址前缀信息时,需要对设备进行设置。 VxWorks对IPv6的支持情况 简介    风河网络协议栈(Wind River Network Stack 以下简称WRNS)是基于BSD和KAME的网络协议栈。它支持双栈模式(IPv4和IPv6),不仅对一些通用的协议(例如TCP、UDP、DHCP、Telnet、FTP)有很好的支持,而且同样支持IPv6相关协议(例如DHCPv6、ICMPv6、SCTP等)。 IPv6实现方法    随着网络厂商和开发商逐渐将IPv6引入不同的平台,随着网络管理者逐渐确定自己所需要的IPv6功能,向IPv6过渡也将是一个相对缓慢的过程。因此,预计IPv4和IPv6将长期共存,甚至将永远共存。目前,解决IPv6问题有两种方法:隧道和双栈。大多数过渡策略都以协议隧道这种方法,至少在最初阶段,将来自IPv6孤岛的IPv6包封装在IPv4包中,然后在广泛分布的IPv4海洋中传送。等到后期的成熟阶段,另一种方法:双栈,将得到推崇。即主机和路由器在同一网络接口上运行IPv4/IPv6栈。这样,双栈节点既可以接受和发送IPv4包,也可以接受和发送IPv6包。 IPv6在VxWorks上的实现方式 目前在VxWorks上有两种实现IPv6的方式: 配置双栈。通过配置VxWorks内核镜像,使得VxWorks同时支持IPv4和IPv6,这样在同一个网络接口上具有IPv4和IPv6的地址,通过调用不同的上层接口函数(例如ping和ping6命令)可以实现数据包在IPv4和IPv6网络上的传输。 配置隧道。VxWorks支持隧道机制。 IPv6在VxWorks上的具体实现过程    这里以VxWorks双栈的Ping6操作为例。即讲解配置支持双栈(IPv4/IPv6)VxWorks的过程,然后在该内核上进行ping和ping6操作。 创建VxWorks内核工程; 图 8 创建VxWorks内核镜像工程 配置VxWorks内核,使它支持双栈,具体配置内容详见 wr_net_stack_vxworks_6_programmers_guide_3.1.pdf 图 9 配置VxWorks内核 使主机(PC)支持IPv6。在CMD中输入“ipv6 install” 图 10 使主机支持IPv6 开启Shell,并ping6通了主机的IPv6地址 图 11 开启Shell ping6通主机
cisco

此帖仅作者可见

TOP

此帖仅作者可见

TOP

此帖仅作者可见
dhcp学习者

TOP

返回列表 回复 发帖