《IPv6应用和实现技术.ppt》由会员分享,可在线阅读,更多相关《IPv6应用和实现技术.ppt(44页珍藏版)》请在三一办公上搜索。
1、IPv6应用和实现技术,2005年11月28日,内容,IPv6现状支持IPv6的操作系统安装IPv6使用IPv6深入Linux IPv6,IPv6现状支持IPv6的操作系统安装IPv6使用IPv6深入Linux IPv6,内容,IPv6标准组织,IETF:http:/IP Version 6 Working Group制订IPv6规范和标准IPv6 Operations为运营IPv4/IPv6共存的Internet和在已有的IPv4网络或者新的网络安装中部署IPv6提供指导其它IPv6相关工作组6lowpan,mip6,mipshop,monami6,multi6,shim63GPP:IP多媒
2、体子系统(IMS)使用IPv6ITU-T:在电信网络中采用IPv6技术,Nov 05,Re-charter or close,国外IPv6研究和应用,6BONE:1996年IETF建立的IPv6测试床2004年1月1日:不再分配3ffe前缀2006年6月6日:结束使命The IPv6 Forum:倡导IPv6,提升IPv6的市场和用户意识IPv6 Ready Logo Program(Phase 2)WIDE:http:/KAME,USAGE,TAHI:实现和验证IPv6Nautilus6:移动通信中的IPv6应用IPv6 Cluster:欧洲IPv6研究和开发项目IPv6 Cluster M
3、ember:Euro6IX,6NETMoonv6,由于产品部署,开始制订Phaseout计划,IPv6技术相关的高级功能和应用的研究和开发,国内IPv6应用,CNGI:中国下一代互联网示范工程2003年8月启动CNGI最大的核心网CERNET22004年12月科大作为合肥主节点接入CERNET22004年12月CERNET2开通,以2.5Gbps10Gbps速率连接全国20个主要城市电信、网通/中科院、移动、联通和铁通的IPv6网络正在建设中,结论,IPv6核心协议的研究、开发、测试工作已经基本结束,开始进入IPv6增强功能和应用的研究开发阶段IPv6研究试验网阶段基本结束,已经进入由产品级设
4、备构成的商用实验网阶段,内容,IPv6应用现状支持IPv6的操作系统安装IPv6使用IPv6深入Linux IPv6,Windows操作系统,Linux操作系统,1996发布第一个基于内核的IPv6 patch基于BSD API内核版本2.2及其以后内置IPv6支持,最新稳定版本缺乏维护,有些部分不符合现有的IPv6规范USAGI IPv6实现2000年10月启动目标是发布针对Linux系统的具有产品级质量的IPv6和IPsec(包括IPv4和IPv6)协议栈,还包括glibc库中的IPv6 API和IPv6应用许多代码已经移植到mainline Linux内核树中,特别是2.6版本,BSD系
5、列操作系统,KAME:1998年由WIDE Project启动为BSD系列操作系统提供支持IPv6和IPsec(包括IPv4和IPv6)协议栈FreeBSD 4.0及以上版本OpenBSD 2.7及以上版本NetBSD 1.5及以上版本BSD/OS 4.2及以上版本2005年11月,KAME Project结束在2006年3月底完成IPv6参考实现,开始转向IPv6技术相关的高级功能和应用的研究和开发,其它操作系统,嵌入式操作系统Vxworks、WinCE、MontaVista Linux 等嵌入式Linux操作系统Interpeak IPNET IPv4/IPv6协议栈路由器厂商CISCO
6、IOS 12.2(2)T及其以后的版本支持IPv6Hitachi、Nortel Networks、Juniper Networks、6WIND,内容,IPv6应用现状支持IPv6的操作系统安装IPv6使用IPv6深入Linux IPv6,Windows操作系统(1),Windows XP提供对IPv6的支持(开发预览版,SP1以上是正式版)命令行窗口中运行ipv6 install/安装IPv6协议栈ipv6 uninstall;重启机器/卸载IPv6协议栈,Windows操作系统(2),Windows 2000下载IPv6协议软件包tpipv6-001205.exe运行tpipv6-00120
7、5.exe,将文件解压指定目录(例如C:IPv6Kit)右键我的电脑,选择“属性”,选中“常规”页,确定windows 2000的SP版本 对于SP1,直接运行setup.exe即可 对于SP2,SP3,SP4,首先执行C:IPv6Kitsetup.exe-x,将文件解压到目录C:IPv6KitIPv6,然后修改C:IPv6KitIPv6中的文件hotfix.ini,在VERSION段中,把NTServicePackVersion=256改成512(SP2)、768(SP3)、1024(SP4),保存。最后运行C:IPv6KitIPv6中的hotfix.exe 重启,右键“网上邻居”,选择“本
8、地连接”,安装IPv6协议栈,Linux操作系统,2.4内核编译内核时的选项(.config)CONFIG_EXPERIMENTAL=yIPv6在还只是内核中的一个试验功能CONFIG_MODULES=y内核支持模块,使得IPv6可以编译成模块的形式CONFIG_NET=y选择网络支持CONFIG_INET=y支持TCP/IP协议CONFIG_IPv6=y/my:编译到内核里m:以模块的形式编译CONFIG_PROC虚拟文件系统可以显示IPv6等系统状态信息/proc/net,/proc/sys/net 2.6内核编译选项一样可能需要升级模块加载/卸载工具module-init-tools,m
9、odutils等,Linux IPv6路由器配置,打开数据包转发功能echo 1/proc/sys/net/ipv6/conf/all/forwarding下载并安装路由器公告守护程序radvd配置路由器公告,缺省为radvd.conf运行radvd,内容,IPv6应用现状支持IPv6的操作系统安装IPv6使用IPv6深入Linux IPv6,配置工具,Windows操作系统ipv6:显示IPv6配置信息,并且可以用来对接口、地址和路由表进行配置 netsh:网络配置命令行脚本工具。配置IPv6需更改到 netsh interface ipv6 上下文Linux操作系统ifconfig:显示和
10、配置IPv6接口信息route:显示和配置IPv6路由信息ip:更加强大的IP/IPv6配置工具,能够配置和显示IPv6地址、路由、邻机缓存等信息。如果只关注IPv6信息,使用 ip-f inet6 或者 ip-6,网络诊断,ping/ping6使用ICMP Echo Request和ICMP Echo Reply报文对网络连通状态进行诊断,包括RTT延时、丢包率ping6:1;ping gateway,最简单也是最有效的网络诊断工具,网络分析,数据包捕获和分析实现libpcap:为各种(类)Unix和Linux操作系统提供了一个系统无关的数据包捕获接口函数库winpcap:为win32平台提
11、供了一个数据包捕获和网络分析的体系结构,包括一个底层的动态链接库(packet.dll)和一个高层的系统无关的库(wpcap.dll)工具tcpdump:NetBSD,Linux,FreeBSD使用-n选项Ethereal:windows,linux,Solaris,路径跟踪(1),trace route实现源到目的地的路由跟踪超出中继点限制来探测中间路由器ICMP或者UDP,ECHO RequestHop Limit=1,Time Exceed,ECHO RequestHop Limit=1,ECHO RequestHop Limit=2,ECHO RequestHop Limit=1,EC
12、HO RequestHop Limit=2,Time Exceed,Time Exceed,ECHO Reply,ECHO Reply,ECHO Reply,ECHO RequestHop Limit=3,路径跟踪(2),具体实现Windows操作系统命令行下运行tracertICMPv6 ECHO Request,中间路由器回送ICMPv6 Time exceed,目的端回送 ICMPv6 ECHO Reply对于每个Hop Limit值,源端发送三个ICMPv6 ECHO Request报文Hop Limit设置最大为30,IP载荷72字节Linux操作系统Traceroute6缺省使用U
13、DP,源端口使用32834,目的端口33434,中间路由器回送ICMPv6 Time exceed,目的端回送 ICMPv6 UDP port unreachable 对于每个Hop Limit值,源端发送三个UDP报文Hop Limit设置最大为30,IP载荷24字节一些问题中间路由器不回送或者过滤ICMPv6错误报文中间路由器限制ICMPv6错误报文的发送速率,内容,IPv6应用现状支持IPv6的操作系统安装IPv6使用IPv6深入Linux IPv6,以下讨论主要基于Linux 2.4内核源码IPv6相关代码主要位于内核的/net/ipv6目录下,Linux网络协议栈实现层次,BSD s
14、ocket层:这一部分处理BSD socket相关操作,每个socket在内核以struct socket结构体现INET socket层:BSD socket是个可以用于各种网络协议的接口,而当用于tcp/ip,即建立了AF_INET/AF_INET6形式的socket时,还需要保留些额外的参数,于是就有了struct sock结构TCP/UDP层:处理传输层的操作IPv4/IPv6层:处理网络层的操作,网络层用struct packet_type结构表示数据链路层(设备驱动程序):每个网络设备以struct net_device表示,IPv6数据包外出处理(1),在数据发送前,建立sock
15、et用户程序.int sockfd;sockfd=socket(AF_INET6,SOCK_DGRAM,0);.BSD socket层通过0 x80中断进入系统内核,调用sock_create等函数,生成struct socket结构并且初始化INET socket层调用inet6_create等函数,生成struct sock结构并且初始化,IPv6数据包外出处理(2),发送IPv6数据用户程序.write(sockfd,Hello,strlen(Hello);.BSD Socket层通过0 x80中断进入内核,调用sock_sendmsgINET Socket层调用inet_sendmsg
16、TCP/UDP层对于TCP调用tcp_sendmsg-tcp_push-tcp_write_xmit-tcp_transmit_skb-tcpv6_xmit对于UDP调用udpv6_sendmsgIP层对于TCP调用ip6_xmit 对于UDP/ICMP调用ip6_build_xmit 数据链路层dev-hard_start_xmit(skb,dev);然后调用实际设备驱动程序的数据发送函数,IPv6数据包进入处理,数据链路层当接收到IPv6数据包时,设备产生一个硬件中断,然后将数据包放到队列中等待。然后通过软中断机制调用net_tx_action函数在IP层调用ipv6_rcv-ip6_rc
17、v_finish-ip6_input-ip6_input_finish在TCP/UDP层对于TCP调用tcpv6_rcv对于UDP调用udpv6_rcv对于ICMP调用icmpv6_rcv在Socket层找到相应的sock,然后将数据放到队列中,通知上层数据到达对于TCP调用_tcp_v6_lookup对于UDP调用udp_v6_lookup,我们讨论的是数据包的目的端是本机的情况,如果是转发,调用ip6_forward-ip6_forward_finish,软中断通常是硬中断服务程序对内核的中断,2.6内核网络协议栈,大量加入USAGI代码替换原来陈旧的代码组播实现得到增强增加了IPsec实
18、现,支持IPv4/IPv6,该实现基于XFRM网络体系结构,IPv6地址自动配置,无状态地址自动配置不需要对主机进行手动配置只需要很少的路由器配置不需要额外的服务器不易管理有状态地址自动配置从服务器获取接口地址和/或者配置信息与参数DHCPv6易于管理,无状态地址自动配置,IPv6接口标识基于EUI-64地址(RFC 2373)基于随机接口标识(RFC3041)地址重复检测,无状态地址自动配置,IPv6接口标识基于EUI-64地址(RFC 2373)基于随机接口标识(RFC3041)地址重复检测,IEEE 802地址,IEEE 802地址(MAC地址)U/L:全局(0)还是本地管理(1)I/G
19、:单播(0)还是组播(1)对于一般的802.x网络接口,U/L和I/G比特都设置为0,IEEE EUI-64地址,一种新的网络接口地址标准为网卡制造商来提供了更多的地址空间U/L:全局(0)还是本地管理(1)I/G:单播(0)还是组播(1),802地址到EUI-64地址的映射,在802地址的company ID和extension ID之间插入16比特(0 xFFFE),EUI-64地址到IPv6接口标识的映射,EUI-64地址的U/L比特取反,I/G比特不变IPv6地址由IPv6前缀IPv6接口标识构成,IPv6前缀,IPv6接口标识,64 bits,64 bits,802地址到IPv6接口
20、标识的映射,无状态地址自动配置,IPv6接口标识基于EUI-64地址基于随机接口标识地址重复检测,随机接口标识(1),从安全角度考虑,提供一定程度的匿名性不包括网络接口标识信息随机接口标识初始化过程若不能存储历史信息每次初始化IPv6协议栈的时候生成新随机接口标识若支持存储历史信息获取历史值,并且将其附到基于EUI-64地址的接口标识上对于1中生成的量计算MD5摘要取2中最左边的64比特并且将第6比特(最左边的比特号为0)设置为0,生成一个全局的随机接口标识取2中最右边的64比特并且将其保存,作为下一次计算的历史值,随机接口标识(2),基于随机接口标识的IPv6地址也被称为临时地址由IPv6地
21、址前缀随机接口标识构成具有更小的valid和preferred lifetime当valid lifetime过期后重新生成接口标识和临时地址Windows CE.NET 4.1及其以上版本生成基于随机接口标识的临时地址,无状态地址自动配置,IPv6接口标识基于EUI-64地址的IPv6地址基于随机接口标识的IPv6地址地址重复检测(DAD),地址重复检测过程,随机延时01000ms,DAD地址状态设置为不可用(IFA_F_TENTATIVE),DAD成功,开始使用DAD地址,发送邻机请求的个数n=1发送间隔Tret=1000ms,地址冲突处理,当主机收到目标地址为其正在做DAD检测地址的邻机请求时,如果请求的源地址类型为IPV6_ADDR_ANY(全0地址),则主机从接口上删除这个地址,DAD检测失败,否则主机不处理此请求当主机收到目标地址为其正在做DAD检测地址的邻机公告时,则主机从接口上删除这个地址(DAD检测失败)如果主机为某个IPv6地址完成DAD检测后,收到来自其它主机发送的目的地址为此IPv6地址的用作DAD检测的邻机请求(此时该请求的源地址为IPV6_ADDR_ANY),则主机应该向全节点地址(ff02:1)发送邻机公告,