IP地址空间耗尽问题.docx
- 文档编号:13402881
- 上传时间:2023-06-13
- 格式:DOCX
- 页数:32
- 大小:876.23KB
IP地址空间耗尽问题.docx
《IP地址空间耗尽问题.docx》由会员分享,可在线阅读,更多相关《IP地址空间耗尽问题.docx(32页珍藏版)》请在冰点文库上搜索。
IP地址空间耗尽问题
IP地址空间耗尽问题
人们对IP地址需求的持续增长,给有类编址模型带来了沉重压力。
大多数公司之所以申请B类地址,是由于其在网络数和主机数之间较为均衡,能够最大限度地满足需求。
A类地址则太过“慷慨”,一个网络便可容纳1600万台主机;而C类地址又太过“吝啬”,每个网络所能容纳的主机数太少。
时至1991年,事态已然明朗,B类地址消耗并无减缓迹象,必须采取措施来阻止其消耗。
这些措施包括采用创造性的IP地址分配技术,并鼓励那些无需具备全球Internet连通性的公司使用私有地址。
其他措施则催生了像ROAD(路由和编址工作组)及IPng(下一代IP委员会)这样的工作组和委员会。
1992年,ROAD工作组提出,采用无类别域间路由(CIDR),以摆脱有类IP编址技术。
与此同时,IPng委员会正在致力开发一种新的改进型IP编址方案——使用IP版本6来最终解决IPv4编址所面临的地址使用问题。
应对IP地址空间耗尽问题的措施可分为下列4类。
∙创造性的IP地址分配技术。
∙无类别域间路由(CIDR)。
∙私有IP地址和网络地址转换(NAT)。
∙IP版本6(IPv6)。
IP地址需求量的增长,伴随人们对IP地址空间耗尽问题的关注,需要转变只由一个中心注册机构来分配IP地址的流程。
最初,IANA和IR(Internet注册机构)完全控制了IP地址的分配。
IP地址开始是按序分配给各个组织,并未考虑各个组织的地理分布,以及这些组织与Internet的对接方式和地点。
这种地址分配方法的效果无异于老鼠打洞——零散的或小规模地址块将IP地址空间弄的“千疮百孔”,也毁掉了大量连续的网络地址块。
后来,在分配IP地址时就另辟蹊径,先将大量的连续地址块分配给各个管理机构(比如服务提供商),这些服务提供商再从自己的地址块中依次为客户分配地址。
一般来说,这种沙漏式的(funnel-down)地址分配方法,也预示着该地址分配方案在可控性和层次化上都更进一步。
在某种程度上,这类似于电话号码的分配方案——区号与地区级电信分公司关联(提供商网络),局向号与电信分公司支局关联(小型提供商网络),电话号码尾数则与客户关联(主机)。
3.2.1 IP地址分配
A类网络号属稀缺资源,对A类网络号的分配是严格受限的。
尽管还会继续分配A类地址空间,但是目前都是基于子网来分配的,不会再以整个有类边界来分配了。
B类地址在分配方面也同样受到了严格限制,也要基于子网来分配。
而C类地址则往往是由上级提供商直接分配。
表3-4总结了当前C类地址空间的分配情况。
表3-4 C类地址分配情况汇总
组织需要
地址分配
地址数少于256
1个C类网络
地址数少于512而大于256
2个连续的C类网络
地址数少于1024而大于512
4个连续的C类网络
地址数少于2048而大于1024
8个连续的C类网络
地址数少于4096而大于2048
16个连续的C类网络
地址数少于8192而大于4096
32个连续的C类网络
地址数少于16384而大于8192
64个连续的C类网络
某些地区性的Internet地址分配机构,例如,美国Internet编号注册中心(ARIN),已开始考虑是否直接将公网IP地址直接分配给终端用户网络。
要从ARIN直接获得IP地址空间,网络至少要拥有16个C类地址,或4096台主机,用户还须说明其正当理由。
即便理由正当,仍然鼓励网络管理员向自己的服务提供商申请此类规模的地址空间。
在ARINWeb站点(
现在来说一下地址空间在地理上的分配,全球分为4大区域:
欧洲、北美和非洲撒哈拉以南地区、环太平洋地区,中/南美洲地区。
表3-5总结了为这几大区域预留的IP地址空间。
分配区域跨地区则表示有网络号在实施该方案前已被分配出去。
表3-5 各个主要地理区域的地址空间分配情况
地址空间
分配区域
分配时间
61.0.0.0~61.255.255.255
APNIC—环太平洋地区
1997年4月
62.0.0.0~62.255.255.255
RIPENCC—欧洲地区
1997年4月
63.0.0.0~63.255.255.255
ARIN
1997年4月
64.0.0.0~64.255.255.255
ARIN
1999年7月
128.0.0.0~191.255.255.255
不同的注册机构
1993年5月
192.0.0.0~192.255.255.255
跨区域
1993年5月
193.0.0.0~195.255.255.255
RIPENCC—欧洲地区
1993年5月
196.0.0.0~198.255.255.255
不同的注册机构
1993年5月
199.0.0.0~199.255.255.255
ARIN—北美地区
1993年5月
200.0.0.0~200.255.255.255
ARIN—中美和南美地区
1993年5月
201.0.0.0~201.255.255.255
Reserved—中美和南美地区
1993年5月
202.0.0.0~203.255.255.255
APNIC—环太平洋地区
1993年5月
204.0.0.0~205.255.255.255
ARIN—北美地区
1994年3月
206.0.0.0~206.255.255.255
ARIN—北美地区
1995年4月
207.0.0.0~207.255.255.255
ARIN—北美地区
1995年11月
208.0.0.0~208.255.255.255
ARIN—北美地区
1996年4月
209.0.0.0~209.255.255.255
ARIN—北美地区
1996年6月
210.0.0.0~210.255.255.255
APNIC—环太平洋地区
1996年6月
211.0.0.0~211.255.255.255
APNIC—环太平洋地区
1996年6月
212.0.0.0~212.255.255.255
RIPENCC—欧洲地区
1997年10月
213.0.0.0~213.255.255.255
RIPENCC—欧洲地区
1999年3月
216.0.0.0~217.255.255.255
ARIN—北美地区
1998年4月
3.2.2 无类别域间路由(CIDR)
近年来,全球IP路由表规模不断增长,导致路由器的处理能力和内存分配趋于饱和。
增长率预测和统计数据表明,在1991年~1995年期间,每隔10个月路由表的规模就会翻一翻;自1998年后,增长更趋显著。
图3-9所示为路由表规模的增长情况。
如果没有任何规划,在1995年路由表的规模就会增长到近80000条路由。
而2000年初的实际数据表明,路由表规模仅为76000条左右。
路由表规模增速放缓要归功于上节探讨的IP地址分配方案,以及CIDR技术的运用。
CIDR迈出了发展性的一步,摆脱了传统的有类IP地址(即A、B、C类网络)。
对CIDR来说,IP网络的表示形式是:
一个前缀——即网络的IP地址,紧跟一个“/”,最后再紧跟一个数字,该数字与“/”前网络地址的网络掩码相对应,用来表征最左侧的连续有效(置1)位数。
例如,带有/16的网络198.32.0.0,记为198.32.0.0/16。
/16表示从最左侧开始计数的掩码位数为16。
这等同于网络掩码为255.255.0.0的IP网络198.32.0.0。
图3-9 Internet路由表规模的增长情况
当某个前缀掩码边界所含位数少于该网络原配掩码位数时,就称其为超网(supernet)。
例如,C类网络192.32.1.0原配子网掩码为255.255.255.0,与CIDR标记/24相对应。
而192.32.0.0和255.255.0.0的表示方法同样可以记做198.32.0.0/16,两者的掩码位数都小于其原配掩码(16<24);因而将这样的网络称为超网。
图3-10描绘了这一地址方案。
这一表示方法提供了一种机制,可以轻易将198.32.0.0/16旗下所有的明细路由(比如198.32.0.0、198.32.1.0、198.32.2.0等)归并为一条路由通告,人们称之为聚合路由(aggregate)。
以上提及的术语很容易引起混淆,尤其是聚合路由、CIDR以及超网之类的术语经常交替使用。
一般来说,上述术语都可用来表示:
将一组相邻IP网络汇聚为一条路由通告。
确切地说,CIDR由<前缀/长度>标记来表示,超网的前缀长度总是短于原配掩码,而聚合路由则表示汇聚到一起的路由。
图3-10 基于CIDR的编址方案
通常,将作为聚合路由或CIDR地址块子集的所有网络称为明细路由,因为这样的路由为网络定位提供了更详细的信息。
与聚合路由相比,多数明细路由的前缀长度要更长一些。
∙198.213.0.0/16 是一条长度为16的聚合路由。
∙198.213.1.0/20 是一条长度20的路由前缀,更为精确。
相对于传统的有类路由进程域,支持CIDR的路由进程域被称为无类路由进程域(classless)。
CIDR描绘了一具崭新而更具层次化的Internet架构,其中各域的IP地址都取自于其直接上级。
在路由传播方面,极大地节省了网络资源,尤其是在靠近叶或末梢(stub)网络的位置执行路由聚合时。
叶或末梢网络是全球性网络的末端,因而也不会再向其他网络提供Internet接入。
支持众多末梢网络的ISP会将自身子网进一步细分为更小的地址块,再提供给客户。
路由聚合允许ISP通告一个IP网络,通常以超网的形式,而非单独通告多个零碎的子网,从而使得路由的传播和路由策略更为高效,也保障了路由通告的稳定。
图3-11所示为路由汇聚的功效。
本例中,分配给ISP3的公网地址块为198.0.0.0~198.1.255.255(192.168.0.0/15)。
ISP3随之从该地址块中为ISP1和ISP2分配了2小块地址。
ISP1的地址范围为198.1.0.0~198.1.127.255(198.1.0.0/17),ISP2的地址范围为198.1.128.0~198.1.255.255(198.1.128.0.0/17)。
采用同样的方式,ISP1和ISP2在各自的地址范围中为各自的客户分配地址块。
图3-11左例所示为不使用CIDR的情形:
ISP1和ISP2通告所有来自客户的子网,ISP3则会将所有路由通告给外部世界。
这导致了全球IP路由表规模的急速增长。
图3-11右例所示为应用了CIDR的同一场景。
ISP1和ISP2针对各自的客户子网执行路由聚合,ISP1通告聚合路由198.1.0.0/17,ISP2通告聚合路由198.1.128.0/17。
ISP3以同样的方式对自己的客户子网(ISP1和ISP2)执行路由汇聚,并且只向其对等网络通告聚合路由198.0.0.0/15。
这会极大地降低全球IP路由表规模的增长速度。
图3-11 有类编址Vs.CIDR编址
正如读者所见,路由聚合的执行位置越靠近网络叶节点,成效就越显著,这是由于聚合子网中的大多数都部署于客户网络。
在网络架构的更高层再执行路由聚合,比如在ISP3,会进一步提高效率,因为AS3学自下游客户的网络数减少了,需要处理的也就少了。
如果每个客户只通过单条链路接入提供商——这也被称为单宿主连接方式(single-homing),并且假设客户的IP地址取自于提供商的CIDR地址块,那么执行路由聚合的效果最佳。
不幸的是,现实并非总是如此。
例如,如果客户的IP地址并非来自于其提供商的地址空间,这就出问题了。
此外,一些客户(可能自己就是提供商)需要同时连接到多个提供商,即所谓多宿主(multihoming)场景。
以上情形都会使聚合更趋复杂,灵活度降低。
路由选择的最长匹配原则
路由设备将数据包路由至任何目的地时,总是遵循最长匹配这一基本原则:
为转发数据包,路由器在面对两条通往同一网络但长度不同的前缀(路由)时,总会选择掩码位数较长的那条前缀。
让我们举例说明,假定一台路由器的路由表中有以下两条路由。
198.32.1.0/24 viapath1(路径1)
198.32.0.0/16 viapath2(路径2)
在本例中,当路由器试图将流量交付给主机192.32.1.1时,会设法匹配拥有最长前缀的那条路由,即选择路径1来交付流量。
图3-12描述了路由选择的最长匹配原则。
网域C收到了2条路由更新198.32.1.0/24和198.32.0.0/16,并选择路径1来转发目的地址为198.32.1.1的流量。
若路径1因某种原因而不能使用,网域C会利用路由表中下一条与目的地址最为匹配的路由来转发流量,在本例中会选择路径2来交付流量。
若网域C从网域A和B分别收到等长掩码的相同路由更新时,网域C会任选其一,或者同时选择两条路径,这取决于网域中运行的具体路由实现所提供的负载均衡技术。
最长匹配原则意味着:
对于连接到多个网域的目的网络,必须总是由这些网域明确宣告其路由,也就是说,以最为具体的非聚合形式来通告。
如图3-12所示,因为网域B没有显式通告路由198.32.1.0/24,由客户发往该主机(198.32.1.1)的流量必定遵循最长匹配原则,一直优选路径1,即与网域A互连的路径。
这一路由配置必然会令网域A不堪重负。
图3-12 遵循最长匹配原则
本地网络聚合路由中的非明细路由
为了防止路由环路,路由选择规则特别规定:
当数据包的目的地址匹配本地生成的聚合路由时,该网络绝不能遵循非明细路由转发该目的地址的数据包。
当流量在网元(网络设备)之间“打转”时,便会发生路由环路,流量也绝不会抵达其最终目的地。
该规则的一个特例是默认路由0.0.0.0/0。
当目的地址落在自己所通告的聚合前缀范围内时,该网络就不应该遵循默认路由去转发相应的流量。
正因如此,对于处理聚合路由的路由协议来说,应该总是为聚合路由本身保留位桶(bitbucket)(按Cisco的说法,这叫Null0路由)。
发送到位桶的流量将会被丢弃,从而预防潜在的路由环路。
提示:
在配置默认路由的同时,利用位桶来避免路由环路。
图3-13所示为ISP1将本网域中的路由聚合为单条路由198.32.0.0/13。
图3-13 遵循本地网络聚合路由中的非明细路由转发流量,势必会导致环路
现假定ISP1与其客户Foonet(网络198.32.1.0/24所在地)之间的链路发生故障。
此外,还假定ISP1设有一条指向ISP2的默认路由0.0.0.0/0,用来转发目的地址不为ISP1所知的流量。
目的地地址为198.32.1.1的流量(由ISP2所发)遵循ISP1通告的聚合路由送达ISP1,此时,(因ISP1与Fonnet之间的链路故障)而遵循默认路由原路返回ISP2。
这样,流量就会在ISP1和ISP2之间来回打转。
为了防止这样的路由环路,需要在ISP1的路由器上安装一条聚合路由192.168.0.0/13的空条目(nullentry)。
这条null路由条目会令路由器丢弃所有目的地址匹配聚合路由的数据包,避免因目的网络不可达转而去匹配非明细路由1。
一旦使用不当,路由聚合会导致路由环路或路由黑洞(blackholes)。
当流量抵达并停留于非既定目的地,且无法被继续转发时,就会产生路由黑洞。
随着读者学习了多种地址分配方案,并了解了这些方案如何与路由聚合交互之后,这样或那样的路由选择难题才会愈发突出。
单宿主场景——地址取自提供商地址空间之外
一个网络能否聚合路由,如何聚合路由?
前面讨论了选路原则,再结合网络地址空间性质以及网络的连接方式(单宿主或多宿主连接),答案已经依稀可见了。
以下几节会讨论几种具体场景。
在这一单宿主场景中,客户连接到单个提供商,且IP地址与提供商完全不同。
当客户更换了提供商并保留了先前提供商的IP地址时,就会发生这样的情况。
在这种情况下,提供商通常会鼓励或迫使客户启用新的网络地址空间。
若客户拒绝重新编址,新提供商则无法聚合客户的IP地址。
此外,原提供商也无法像以前那样进行有效的地址聚合,因为自己的地址空间被“钻了个洞”。
客户使用原提供商地址空间的后果是,需要在全球Internet路由表中安装更多的路由。
以后的章节中会对本场景做深入讨论,但目前,网络管理员一定要有这样的认识:
只要是以单宿主方式连接到提供商,路由选择方案越简单越好。
在单宿主的情况下,设置一条指向提供商的默认路由,再让提供商回指一条静态路由(目的网络为本方地址空间),往往是手边最省事的办法。
只有在拥有了到提供商的多条连接,出现链路冗余问题时,才应该考虑更加复杂的解决方案。
KISS(KeepItSimple,Stupid[尽量简单])原则是每个网络架构师、设计师、工程师以及管理员都应该奉行的原则,最简单的解决方案通常也是最佳解决方案。
多宿主场景——地址取自某一提供商地址空间
在本场景中(如图3-14所描绘的情形),客户连接多个提供商。
客户的网络规模不大,只需从其中一个提供商获取IP地址,或客户仍在使用单宿主连接时所配置的IP地址。
请仔细观察图中那2个ISP(ISP1和ISP2))及它们各自的客户:
Onenet、Twonet、Stubnet。
表3-6列出了与每个网域(包括提供商)相对应的聚合路由的IP地址范围。
表3-6 客户和相应提供商的IP地址分配列表
网域
地址范围
聚合路由
提供商
IP地址的提供者
ISP1
198.24.0~198.31.255.255
198.24.0.0/13
Onenet
198.24.0.0~198.24.15.0
198.24.0.0/20
ISP1,ISP2
ISP1
Stubnet
198.24.16.0~198.24.23.0
198.24.16.0/21
ISP1
ISP1
Twonet
198.24.56.0~198.24.63.0
198.24.56.0/21
ISP1,ISP2
ISP1
ISP2
198.32.0.0~198.39.255.255
198.32.0.0/13
请注意,Onenet和Twonet的地址都取自ISP1的地址范围,又以多宿主的方式连接ISP1和ISP2(如图3-14所示)。
图3-14 通告错误的聚合路由导致了路由黑洞
通告聚合路由可不能有丝毫大意。
客户和ISP都必须关注聚合路由所覆盖的IP地址范围。
除非路由的聚合方通告的网络是被聚合方网络的超网,或双方达成了协定,否则任何一方都不得聚合他方路由。
接下来,读者会看见由于聚合了Onenet和Twonet的路由,ISP2是如何导致路由黑洞的。
提示:
路由黑洞是错误地聚合了他人路由而导致的。
如图3-14所示,只要ISP2通告一条汇聚了Onenet和Twonet网络的路由更新(198.24.0.0/18),就会形成路由黑洞。
例如,对于作为ISP1客户的Stubnet而言,其IP地址空间被包括在了这条聚合路由198.24.0.0/18中。
假如ISP2通告了这条聚合路由,发往Stubnet的流量便会遵循最长匹配原则而选用聚合路由198.24.0.0/1,并最终流入ISP2,形成路由黑洞。
正因如此,ISP2必须明确通告其每个下游客户网络的地址范围,这些网络并不属于ISP2自身的地址空间,却是ISP1地址空间的子集(在本例中,ISP1和ISP2都要明确通告Onenet的网络198.24.0.0/20,以及Twonet的网络198.24.56.0/21)。
除此以外,ISP2还必须通告其自身的地址空间198.32.0.0/13。
图3-15所示为正确通告聚合路由的方式。
现在,ISP2已显式通告了Onenet和Twonet的聚合路由。
这样,发往Stubnet的流量就绝不会误入ISP2了。
请注意,图3-15中ISP1也显式通告了Onenet和Twonet的聚合路由。
假如ISP1只通告非明细聚合路由198.24.0.0/13,那么发往Onenet和Twonet的所有流量会遵循最长匹配原则,而优选更为精确的聚合路由(198.24.0.0/20和198.24.56.0/21),这样的流量也就只能由ISP2来单独承载了。
多宿主场景——地址取自不同提供商地址空间
对大型网域而言,很有可能会根据地理位置,从不同的提供商获取地址。
以图3-16为例,Largenet分别从ISP1和ISP2获取地址。
对于这一设计,每个提供商都可以聚合自己的地址空间,不必列出另一提供商地址的精确范围。
ISP1会通告聚合路由198.24.0.0/13,ISP2会通告聚合路由198.32.0.0/13。
以上两者都是分配给LargenetIP地址块的超网。
图3-15 正确通告聚合路由,防止路由黑洞
图3-16所示设计的主要缺点是,无法维护通往多宿主网域的备用路由。
ISP2只通告属于自己的地址块,不会通告Largenet取自ISP1的地址块。
只要ISP1出现问题,聚合路由198.24.0.0/13丢失,发往Largenet198.24.0.0/20的流量就会受到影响,原因是ISP2没有通告198.24.0.0/20。
这一推理同样适用于Largenet取自ISP2的地址198.32.0.0/20。
如果通往ISP2的链路中断,发往198.32.0.0/20的流量必然会受到影响。
想弥补这一缺憾,ISP1和ISP2必须分别通告198.32.0.0/20和198.24.0.0/20。
图3-16 地址取自不同提供商的多宿主环境
多宿主场景——地址不从提供商地址获取
在如图3-17所示的场景中,客户采用了与提供商ISP1和ISP2完全不同的地址范围。
在此情形,ISP1和ISP2除了通告各自的地址范围(198.24.0.0/13和198.32.0.0/13)之外,还要通告精确的聚合路由(202.24.0.0/20)。
这一设计的缺点是,Internet上的所有路由器都必须针对新引入的地址范围设置明细路由。
如果这样的设计出现的太多,全球Internet路由表的规模也就可想而知了。
图3-17 地址取自ISP地址空间之外
路由聚合的建议
总而言之,每个获取了地址范围的网域都有独有的权利(和义务)来聚合自己的地址。
执行路由聚合时,网域应该在精确的基础上尽可能地聚合自己的路由(即便在多宿主环境下也是可行的)。
场景不同,设计也就不同。
对路由聚合而言,没有“万能钥匙”。
建议单宿主客户从自己的直连提供商处获取单块连续的地址空间,并且尽可能地配置指向提供商的默认静态路由,从而避免由复杂而又多余的配置所带来的潜在问题。
若单宿主客户执意更换提供商,就应该规划向新提供商地址空间迁移。
对于多宿主客户,服务商在为其分配地址时,应以聚合尽量最大化作为指导原则。
一旦聚合影响了冗余,即便要付出通告明细路由的代价,也应首先确保冗余。
在过去几年中,CIDR的引入对抑制全球Internet路由表规模的迅猛增长帮助极大。
边界网关协议版本4(BGP-4)成为Internet上域间路由的首选协议,这很大程度上要归功于其在应对路由聚合和域间路由传播上的高效表现。
继续阅读本书,更多示例会揭示CIDR在控制流量行为和稳定性方面的重要作用。
关于CIDR、Internet路由表规模的当前和历史情况,以及其他趣闻的更多信息请参考附录A。
3.2.3 私有地址和网络地址转换
要想放慢IP地址的分配速度,就要识别不同的连通性需求,并据此分配IP地址,这是重中之重。
绝大多数组织的连通性需求不外乎以下两种。
∙公网连通性。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IP 地址 空间 耗尽 问题