二是其安全性的考虑。就是通过全网唯一的物理地址来唯一地确定终端的身份。
我们先假设严格要求接口ID必须具备全网唯一性。这样一来,地址空间将不再是128位,而将完全由后面64位的接口ID所决定。
如果容许接口ID不具有全网的唯一性,则理论上必然会出现当两个具有相同接口ID的终端移动到同一个站点时其分配的IPv6地址会发生冲突的问题。虽然可以通过一定的算法进行冲突检测,并且在发现冲突后分配一个新的接口ID。但是,如果终端用户总量一旦超过64位的话,冲突就将大量增加,超出的越多,冲突的机率就上升的越快,并很快使冲突大到让整个系统无法运行的地步。
为了更清楚地了解这个问题,我们把整个模型简化一下,我们假设用四个10进制数字来模拟这个地址系统。假设前两位代表站点前缀,后两位代表接口ID。这样就有100个站点空间和100个接口ID空间。
我们先假设接口ID是全网唯一的,不容许有重复。这样四位号码的理论空间为1万,但在这种唯一接口ID要求下最多可分配的号码空间却为100个,因为如果再多的话就必然会出现有两个接口ID是重复的问题。在接口ID全网唯一的情况下,无论终端如何移动,所分配的号码都不会重复。即使当所有终端都移动到某一个站点时,每个终端的号码也都是唯一的。
我们再假设容许接口ID可重复,以充分使用四位的号码空间,则每个接口ID最大可能情况下就会有100个重复。这样在网上可以有1万个终端。但是,我们只要看一个情况就知道系统在这种条件下是几乎无法运转的:当超过100个终端移动到一个站点里的时候,无论如何也无法使每个终端具有唯一的号码。这时只有当每个站点都正好100个终端,并且它们都正好是不同的接口ID这种极端特例的情况下,才可以为每个终端分配唯一的号码,并且不容许终端进行任何跨站点间的移动。
由于每个接口ID都有100个重复,因此当一个终端接入任何一个站点时,都有接近100%的几率会发生冲突。由于具体的冲突几率模型非常复杂,其具体数量分析也相当困难。但可以肯定的是:超过接口ID的空间越多,冲突的几率就越大。这就使当容许接口ID不具有全网唯一性情况下真正的空间到底有多少成为一个几乎无法确定的糊涂帐。至少目前IPv6的支持者没有给出相应的数学模型解决这个问题。
如果严格要求接口ID具有全网唯一性,则IPv6地址空间就只有64位,而不是128位了。我们先不讨论64位地址空间是否足够,而是128位与64位这两者之间的差异也实在是太大了。这两者可不是一半的关系,而是264=18,446,744,073,709,551,616倍,约1845亿亿倍的关系。
IPv6的支持者可以辩护说:现在单播地址仅仅分配了格式前缀为001的1/8空间部分,如果真的在地址不够了之后在启用010-111的前缀时可以改变“前缀”+“接口ID”这种地址结构,使得后64位可以不需要有唯一性要求。我们承认这的确可以解决上述接口ID决定总体地址空间的问题,但这意味着什么呢?这意味着地址的最基本的结构发生了极为重大的变化,全网路由协议将需要全部升级才可以支持!!!
而这是否就算完了呢?还没有。因为现在真正最普遍采用的物理地址IEEE802的MAC地址为48位,并且其中u比特在IPv6中要求设置为1,以表明其为全网唯一的地址。这个地址在IPv6中是通过正中间插入两个固定字节的方式来获得64位接口ID的。因此,在现实的物理ID技术条件下,真正的接口ID空间只有47位!!!
47位的地址空间有多少呢?它仅仅比IPv4多了15位,相差的倍数是:215=32768倍。如果我们假设IPv4地址用完后采用当前的IPv6协议,每年的地址消耗量以年增长30%来计算,这个扩大的地址空间仅仅40年就全部消耗光了!当人们满心欢喜地以为只要采用了IPv6就以为地址空间无限宽阔的时候,如果知道了因为其特殊的地址结构设计又使地址空间受到MAC地址空间的限制,是否有刚出狼窝、又入虎穴的感觉?
而如果运营商们知道了由于IPv6采用了这种特殊的地址设计,他们申请的IPv6地址块其实与可以获得的地址空间理论上没有直接关系的时候,是否又会感觉实在是太莫明其妙了?