全球IPv4地址100天内耗尽

据APNIC首席科学家Geoff Huston发布的数据显示,截至2010年12月9日,全球剩余可供分配的IPv4地址仅剩2%,约1.04亿个。预计这些地址将在100天内被分配完毕。随着IPv4地址资源即将枯竭,IPv6作为下一代互联网协议的重要性日益凸显。

全球IPv4地址100天内耗尽

亚太互联网络信息中心(APNIC)首席科学家Geoff Huston专门为展示全球互联网IPv4地址剩下可以分配的地址数量网站显示,到北京时间2010年12月9日20时20分止,仅剩下2%,即1.04亿个IP地址。

      之前有技术专家预测:可以分配的IPv4地址到2011年1月分配完,从目前的情况看的确相差不多,因为到8月底止还有5%可以分配地址,经过约100天的继续分配,又分配去了3%,最后剩下可以分配的这2%的IPv4地址预计在100天内肯定会被分配完。
      我们现在使用的互联网是41年前创建的,它使用的信息定位、传输地址协议是第四版本、称为IPv4的协议,每一台上网电脑、手机终终端、信息服务器至少必须有一个IPv4地址,否则就会出现“抢线掉网”现象。

全      球共约有40亿个IPv4地址可以分配,原设计者以为它够用无限期,但是15年前就发现它有用完的危机,因此有一个经过10多年全球互联网专家完善的新版本IPv6己经推出,中国现在己经在教育科研网、中国电信网中开始使用。这就是使用IPv6是一种全球互联网发展趋势的关键原因。

 

课题背景 IPv4互联网的传统协议,使用32位地址,提供约43亿个地址,但在互联网飞速发展的背景下面临地址耗尽问题。尽管依靠NAT缓解了地址短缺等问题,但仍然存在安全性较弱的问题。IPv6是IPv4升级版,使用128位地址地址空间巨大,解决了地址耗尽问题;IPv6还简化了IP层的头部结构(如移除校验和字段)来减少路由器处理开销,提高了路由效率;IPv6支持无状态地址自动配置(SLAAC),允许设备通过路由通告自动生成地址,无需DHCP服务器。 在路由模式下,网络设备具备拨号认证、NAT地址转换、路由转发等能力,但在拨号认证方面当前仅支持IPv4拨号,而IPV4拨号方式存在诸多问题,因此我们还需实现IPv6拨号来帮助解决IPv4存在的部分问题并提升网络安全性和网络性能。IPv6拨号支持包括静态(Static)和动态(DHCP)模式,在最后需确保与现有IPv4系统兼容,实现双栈操作。 课题内容 本课题目标是在EAP平台样机上添加一个IPv6拨号功能,使在路由模式下的样机能够通过静态配置或DHCP方式获取公网IPv6地址和前缀,并通过静态配置或者前缀代理的方式向LAN侧设备分发地址,最后为能让LAN侧的设备能够正常拨号上网,还应该处理LAN侧设备的DNS请求。 IPv6拨号概述 IPv6拨号在本课题中主要实现静态拨号以及动态拨号两种,以下是两种方式的一个大概描述: 静态拨号 静态配置模式下,无论是LAN侧还是样机本身都需要用户在界面手动定义完整的网络参数,用户需要设定具体的IPv6地址、网关和DNS服务器等信息,并保存确认。经过前后端数据交互后,样机后端的内部进程获取到了相应配置,然后会执行三个关键操作:将指定地址绑定到物理网络接口,在路由表中添加指向手动网关的默认路由,修改配置文件中的DNS服务器地址。 DHCP拨号 首先关注样机的IPv6地址动态获取,样机的IPv6地址获取是指路由模式下要向上游设备拿到自己的全球单播IPv6地址地址的有效租期、DNS服务器等关键配置参数,并修改样机中的默认路由等配置信息。 而在DHCP拨号中,要分为有状态配置和无状态配置两种模式,主要通过广播报文(RA)中的关键标志位——Managed标志位进行区分。当Managed标志位为1时表示此时有状态配置,这表明要求使用DHCPv6服务来获取IPv6地址,反之则是无状态地址自动配置模式——SLAAC。 样机的有状态配置是使用DHCPv6客户端,向DHCPv6服务器获取IPv6地址,DNS服务器,和一个子网的前缀(用于前缀代理机制)。在用户设置完样机获取IPv6地址的方式为DHCPv6时,样机后台接收到这一信息,立马启动DHCPv6客户端。然后,DHCPv6客户端在本地链路范围内广播发送一个Solicit报文,用于发现可用的DHCPv6服务器。网络中收到请求的DHCPv6服务器则以Advertise报文进行响应,告知客户端其可提供的服务。客户端随后根据这些响应选择一个服务器,并向选定的服务器发送一个正式的Request请求报文。最后,被选中的服务器回应一个Reply报文,其中包含了样机需要的IPv6地址信息等。 在样机的无状态配置的SLAAC模式则采用了不同的机制,样机持续监听上游设备发送的RA报文,获取前缀信息,根据前缀信息提供的具体前缀和前缀长度,结合接口本身的标识符(通常基于MAC地址或采用隐私扩展算法随机生成),样机在本地自动计算出其IPv6地址,在经过重复地址检测之后并将该地址直接配置到WAN接口上。 其次是LAN侧设备的IPv6地址动态获取,在LAN侧,路由模式下的样机作为与IPv6主机直连的下游设备,样机通过PD(前缀代理)的方式向LAN侧主机提供IPv6地址。 路由模式下的样机会将从上游设备获取到的前缀进一步自动细分成64前缀长度的子网网段,把细分的地址前缀再通过路由通告(RA)至与IPv6主机直连的用户链路上,实现IPv6主机的地址自动配置,完成整个系统层次的地址布局。 概述总结 两种模式的关键差异体现在协议交互和路由生成机制上。静态配置完全依赖手动参数,主动发起邻居发现进行地址冲突检测;而DHCPv6进程完全由RA报文触发,自动完成地址分配。在路由层面,静态模式的网关和路由由人工指定,DHCPv6则依赖RA报文提供路由基础,通过DHCP仅获取具体地址。数据包转发引擎在两种模式中工作逻辑相同:流量经协议栈处理后匹配路由表,通过邻居缓存查询MAC后由物理接口发出。 除此之外,为保障LAN侧设备能够正常拨号上网,如果是静态配置模式,也即用户在设备终端手动指定DNS服务器地址,路由模式下的样机要具有报文转发功能;如果是动态获取,则样机要具有DNSproxy的作用。并且样机也需要获取一个上游DNS服务器地址来辅助实现DNSproxy,在静态配置模式,由用户手动填写样机本身的DNS服务器地址,在DHCP模式下样机通过RA(RDNSS)或者DHCPv6 Reply报文向上游获取DNS地址。 关键数据结构 /* IA_PD (Prefix Delegation) */ struct dhcpv6_ia_pd { uint32_t iaid; // 标识ID uint32_t t1; // T1续租时间 uint32_t t2; // T2续租时间 // 后续跟 IA_PREFIX } attribute((packed)); /* IA_PREFIX */ struct dhcpv6_ia_prefix { uint32_t preferred_lifetime; //前缀首选生命周期 uint32_t valid_lifetime; //前缀有效生命周期 uint8_t prefix_len; // 前缀长度 uint8_t prefix[16]; // IPv6前缀 // 后续可跟子option } attribute((packed)); 实现流程 下面是拨号两种方式的实现流程 静态拨号 当用户在样机管理界面——web端设定了具体的IPv6地址、网关和DNS服务器后,httpd_portal接收HTTP请求并触发相应回调函数,完成前端json格式数据的解析与提取后,调用wrapper层的接口下发OP请求——update。uclite进程执行update操作。针对update操作,uclite进程在获取相应配置后会执行三个关键操作:将指定地址绑定到物理网络接口(ifconfig eth0 add ip/mask ),在路由表中添加指向静态网关的路由条目(route -A inet6 add 2001:db8::/64 dev eth0),修改配置文件中的DNS服务器地址(echo "nameserver 2001:4860:4860::8888" >> /tmp/resolv.ipv6.conf)。 样机DHCP拨号 DHCPv6模式 当用户在样机管理界面——web端,设置了样机的IPv6拨号方式为DHCPv6模式时,前端发送http请求给后端,后端httpd_portal接收HTTP请求并触发相应回调函数,完成前端json格式数据的解析与提取后,调用wrapper层的接口下发OP请求——WAN6 set。uclite进程执行对应WAN 6 set操作。Uclite进程会依据当前的DHCPv6模式来修改对应接口的配置文件确保样机在路由模式下的IPv6拨号方式符合用户配置,并还会修改dhcp6c.conf,使得在DHCPv6模式下DHCP6c进程会请求并保存自身的IA-NA地址(send ia-na 1)以及DNS服务器地址(request domain-name-servers)。在获取到地址之后,dhcp6c进程还会自动更新路由表,调用route -A inet6 add default gw “$gateway” dev “$IFNAME” 命令来添加默认路由。除此之外,如果需要IA-PD,则还会请求IA-PD(send ia-pd 1)并将其写入radvd.conf,这根据LAN侧的配置来决定。 SLAAC模式 当用户在样机管理界面——web端,设置了样机的IPv6拨号方式为SLAAC模式后,uclite进程执行对应WAN6 set操作。Uclite进程会修改对应接口的配置文件以确保样机在路由模式下的IPv6拨号方式符合用户配置(例如打开accept_ra 功能 echo 2 > /proc/sys/net/ipv6/conf/eth0/accept_ra),也会修改dhcp6c.conf,使得在SLAAC模式下,DHCP6c进程只会请求并保存DNS服务器地址(request domain-name-servers),还会依据LAN侧的配置来决定是否需要请求IA-PD(send ia-pd 1),但不会请求自身的IA-NA地址。 LAN侧DHCP拨号 当用户在样机的管理界面——web端,设置了LAN侧IPv6拨号方式为PD模式时,用户还需要选择是否启用样机在路由模式下的DHCPv6 server功能,如果启用了DHCPv6 server功能则还可以选择是有状态配置模式还是无状态配置模式。用户打开了DHCPv6 server之后用户可以决定是否开启DNSProxy功能,这代表着样机在路由模式下是否要承担DNS代理的作用。此时需要启动DNSproxy进程(/usr/bin/dnsproxy)。如果关闭了DNSProxy功能,则需要用户手动指定DNS服务器地址(echo "nameserver 2001:4860:4860::8888" >> /tmp/resolv.ipv6.conf)。 PD——DHCPv6 在用户设置完上述内容后,前端发送http请求给后端,后端httpd_portal接收HTTP请求并触发相应回调函数,完成前端json格式数据的解析与提取后,调用wrapper层的接口下发OP请求——LAN6 set。uclite进程执行对应LAN6 set操作。Uclite进程会修改对应接口的配置文件确保样机在路由模式下的IPv6拨号方式符合用户配置;首先会添加DNS服务器信息(echo "nameserver 2001:4860:4860::8888" >> /tmp/resolv.ipv6.conf)和ipv6地址(ifconfig eth0 add ip/mask)。在有状态配置模式下,修改RA通告进程radvd配置文件如下 interface br0 { AdvSendAdvert on; AdvManagedFlag on; AdvOtherConfigFlag on; }; 表示还需要通过DHCPv6服务器获取DNS等其他信息,因此修改DHCP6s进程的配置文件如下: option domain-name-servers 2001:4860:4860::8888 2001:4860:4860::8844; pool pool1 { range 2050:A::1000 to 2050:A::2000 ; }; interface br-lan { address-pool pool1 86400; }; 包含了DNS服务器地址,还创建了IPv6地址池,设置 IPv6 地址范围,将地址池绑定到接口,并设置租期为1天。 PD——SLAAC 当用户在样机管理界面——web端,设置DHCPv6 server功能为stateless即是无状态配置模式时——SLAAC,需要在路由模式下的样机启动radvd进程在RA报文中给出RDNSS,通告DNS信息给LAN侧设备。uclite进程执行对应LAN6 set操作。Uclite进程会修改对应接口的配置文件确保样机在路由模式下的IPv6拨号方式符合用户配置,修改RA通告进程radvd配置文件如下 interface br0 { AdvSendAdvert on; AdvManagedFlag off; AdvOtherConfigFlag on; prefix 2001:db8:1:0::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr off; }; }; 课题要求 目前暗盒机型适配的路由模式,WAN端拨号只支持IPV4,需要适配IPV6拨号,解决IPv4地址空间不足的问题,进一步提升网络安全性。 1)普通要求:适配WAN端IPV6拨号(Static/DHCP),保证样机能够正常拨号上网, 2)进阶要求:进一步适配PPPOEv6 /6to4 Tunnel/Pass-Through(可选)拨号功能 3)完成功能测试,输出check list。 4)总结开发过程,输出答辩PPT。 课题形式: 功能开发。 课题交期: 10.31 研究思路和方法 思路和方法 1、熟悉EAP平台 为确保在EAP平台上实现的功能严格遵守平台的架构与规范,开发者需首先深入熟悉平台架构,从而保障后续功能开发完全契合平台要求。 2、熟悉IPv6协议 要实现IPv6拨号,首先需要熟悉IPv6协议,通过阅读RFC文档,了解IPv6基础规范、邻居发现协议、ICMPv6以及IPv6的SLAAC功能,明确一个完整的地址生成流程。 3. 掌握静态拨号和DHCP拨号 实现静态拨号需要了解静态IPv6拨号配置中的重复地址检测机制,熟悉静态拨号的基础参数预设与接口绑定操作。实现DHCP拨号要熟悉DHCPv6以及SLAAC,了解基础的地址请求与租期协商流程,最后尝试实现。 4、熟悉CPE平台 理解并掌握在CPE平台中IPv6拨号的实现,明确CPE平台与EAP平台之间的差异,确保最后的实现能够与EAP平台现有功能兼容。 方案设计 IPv6拨号上网系统的整体软件架构,主要分为样机拨号和LAN侧拨号两部分,下面是对两部分不同情况的论述。 样机采用静态拨号 LAN静态拨号 当在路由模式下的样机采用静态拨号而 LAN 也使用静态配置时,需要手动给在路由模式下的样机的WAN 接口上设置 IPv6 地址、前缀、网关和 DNS,同时在 LAN 接口上配置静态前缀和地址,不运行 dhcp6c、radvd 或 dhcp6s 进程,LAN 设备若要上网需手工设置 IPv6 地址和 DNS,整个系统完全依赖人工配置完成。在路由模式下的样机仅起到报文转发的作用 LAN PD+SLAAC模式 当在路由模式下的样机采用静态拨号而 LAN 使用 PD 无 DHCPv6模式时,在路由模式下的样机的WAN 接口上静态设置地址与网关,并在 LAN 接口上配置预定的前缀,然后启用 radvd 在 LAN 广播该前缀和RDNSS,使得内网设备通过 SLAAC 自动获取地址与 DNS,而 dhcp6s不需要运行。 LAN PD+DHCPv6模式 当在路由模式下的样机采用静态拨号而 LAN 使用 PD 并启用 DHCPv6 时,在路由模式下的样机需要在 WAN 接口上静态配置地址与网关,并在 LAN 接口分配前缀后启动 dhcp6s 为终端下发地址和选项,同时可以运行 radvd 以支持 SLAAC 与 DHCPv6并存。 样机采用DHCPv6 LAN 静态拨号 当在路由模式下的样机使用 DHCPv6 而 LAN 静态配置时,在路由模式下的样机在 WAN 接口运行 dhcp6c,用于请求 IANA 地址或 IA_PD 前缀和 DNS 信息。上游返回的地址配置和 DNS 会写入样机在路由模式下的配置。而 LAN 接口则由用户手工配置固定前缀和地址,不运行 radvd、dhcp6s,LAN 设备也只能手动设置 IPv6 地址与 DNS。 LAN PD SLAAC 当在路由模式下的样机使用 DHCPv6 而 LAN 使用 PD 无 DHCP 模式时,在路由模式下的样机会运行 dhcp6c,用于请求 IA_PD ,获得委派前缀后自动配置在 LAN 接口,然后启动 radvd 在 LAN 广播该前缀和RDNSS,使得内网设备可以通过 SLAAC 自动获取地址和 DNS,在路由模式下的样机自身解析 DNS 则依赖 dhcp6c 获取到的上游信息。 LAN PD+DHCPv6模式 当 WAN 使用 DHCPv6 而 LAN 使用 PD 并启用 DHCPv6 和 DNSproxy 时,在路由模式下的样机运行 dhcp6c来获取地址、前缀和上游 DNS,再将获得的委派前缀切分配置给 LAN 接口,同时运行 dhcp6s 在 LAN 下发地址并配置 Option23 指向样机自身地址或上游DNS,开启 radvd 以支持 SLAAC 和 DHCP 并行。 样机采用SLAAC 拨号 LAN 静态拨号 当在路由模式下的样机使用 SLAAC 而 LAN 静态拨号时,在路由模式下的样机在 WAN 接口开启内核的 accept_ra 与 autoconf 以便从上游 RA 报文自动获得地址和默认路由,同时可能获取到 RDNSS 作为自身 DNS,而 LAN 接口则由管理员手工配置固定前缀,IPv6地址和DNS服务器地址,不运行 dhcp6c、radvd 或 dhcp6s。 LAN PD+SLAAC 模式 当在路由模式下的样机使用 SLAAC 而 LAN 使用 PD+SLAAC模式时,在路由模式下的样机通过上游 RA 获得前缀后为 LAN 指定一个可用的子前缀,再运行 radvd 在 LAN 广播该前缀以便内网设备通过 SLAAC 自动生成地址和路由,RA 中包含 RDNSS,否则需要手工配置或结合其他方式提供,dhcp6c 与 dhcp6s 均不运行,dnsproxy可选。 LAN PD+DHCPv6模式 当在路由模式下的样机使用 SLAAC 而 LAN 使用 PD 并启用 DHCPv6时,在路由模式下的样机必须在 WAN 接口接受 RA 获取地址和默认路由,同时获得可用的前缀并配置在 LAN 接口,然后运行 dhcp6s 在 LAN 下发地址池并通过 Option23 下发DNS地址,radvd 可并行广播前缀,这种场景要求上游 RA 提供可分配的前缀否则不可行。 样机DNS处理 当用户在样机管理界面,在样机的路由模式下启用了LAN侧的dnsproxy功能时,则在路由模式下的样机需要启用 dnsproxy 代理 DNS 请求,这样 LAN 设备统一将 DNS 请求发给样机再由样机转发至上游 DNS。 如果关闭了dnsproxy功能则需要用户手动为LAN侧设备指定DNS服务器地址,否则LAN侧设备将无法正常上网。 重点难点 重点 在开发过程中需要关注iptables,确认是否需要进行相关适配。 在开发后期还需要通过跑流等手段进行检查样机内各个方向的硬件加速是否生效。 在开发过程中还需要关注在路由模式下,样机拨号获取IP地址后或者LAN设备关联样机之后路由表的相关表项的变化。 难点 IPv6兼容性差异 EAP设备在AP模式下原生支持IPv6功能。 路由模式(Router Mode)与AP模式存在IPv6兼容性差异需重点验证 迁移风险点: CPE的单局域网IPv6配置(单WAN连接+IPv6前缀分配)无法直接适配EAP路由模式的多局域网架构 网络架构对比 特性 CPE设备 EAP设备(路由模式) LAN设计 单局域网 支持多LAN(通过VLAN划分) SSID网络隔离 所有SSID共享同一底层局域网 可为不同SSID分配独立LAN/VLAN 核心问题 EAP需在路由模式下处理多下游局域网的IPv6连接请求,而CPE仅需处理单局域网 验证要求: 确保各隔离网络(SSID/VLAN)能正确获取IPv6地址及路由 设计高效的多局域网IPv6前缀分配机制。
09-23
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值