企业IPv6 网络架构演进方案.docx
《企业IPv6 网络架构演进方案.docx》由会员分享,可在线阅读,更多相关《企业IPv6 网络架构演进方案.docx(16页珍藏版)》请在冰点文库上搜索。
企业IPv6网络架构演进方案
企业IPv6网络架构演进方案
1需求说明
根据与东方有线技术交流的情况,我们了解到目前东方有线计划开始向IPv6演进。
在目前阶段,需要解决两种场景下演进到IPv6时遇到的问题。
●解决IDC数据中心中部分内容服务IPv6化后,传统IPv4客户端访问IPv6互联网内容的问题;
●解决接入用户IPv6化后,IPv6客户端访问传统IPv4互联网时遇到的问题。
本方案从这两个需求出发,详细说明了在实现这两种场景互访时所面临的问题并提出了相应的解决方案。
2设计思路
2.1传统IPv4网络中B/S应用访问流程
在传统IPv4网络中,典型的B/S应用访问流程如下图所示。
我们以客户端访问网站为例,说明客户端的整个访问过程:
1)Client打开浏览器,在地址栏中输入要访问的域名:
。
然后,客户端会将对域名的DNS查询请求,转发LDNS(本地DNS服务器)。
LDNS服务器一般在客户端接入运营商网络中时,由运营商提供。
2)LDNS服务器在收到域名的查询请求后,会将域名查询请求转发至RootDNS。
3)RootDNS根据查询请求,会返回所要查询的域名对应的ADNS(授权DNS
服务器)地址。
4)LDNS将域名查询请求发送至ADNS服务器。
5)ADNS将域名的DNS查询结果返回至LDNS。
6)LDNS将域名对应的DNS查询结果返回Client。
7)Client发起对WebServer的TCP连接,并发送HTTP请求
8)最终,WebServer将HTTP应答内容返回客户端。
至此,客户端成功打开对应的页面。
2.2演进到IPv6网络面临的挑战及解决方案
当整个网络演进到IPv6的过程中,东方有线网络可能会面临两种不同的网络场景,由于IPv4和IPv6之间无法兼容,因此,需要解决这两种场景面临的挑战。
2.2.1场景一:
IPv4客户端访问IPv6内容
在第一种场景中,客户端位于IPv4网络中,而需要访问内容位于IPv6网络。
在IPv4网络中,客户端发起的DNS查询类型为A记录查询,DNS服务器返回的查询结果为IPv4地址;而在IPv6网络中,客户端发起的DNS查询类型为AAAA记录查询,DNS服务器返回的查询结果为IPv6地址。
因此,在场景一中,我们需要解决两个主要的问题:
1)需要将客户端发出的DNS查询请求,由A记录类型修改为AAAA记录类型,并重新封装为IPv6的数据包,转发至ADNS,即下图中的DNS46;
2)需要将客户端发起的IPv4的TCP连接请求,转换为IPv6的TCP连接请求并转发至IPv6网络中的Web服务器,即下图中的NAT46。
如上图所示,在场景一中,当服务内容迁移至IPv6网络中后,客户端通过浏览器访问服务器的过程发生如下变化:
1)客户端打开浏览器,在地址栏中输入要访问的网站的域名,如:
。
客户端会将对该域名的查询请求转发至LDNS服务器,此过程与传统IPv4网络一致,不发生任何变化;
2)LDNS在收到客户端的域名查询请求后,会按照规则进行转发过滤,如:
将所有对的子域域名的查询请求,均转发至DNS46代理进行处理,而未匹配规则的请求则仍转发至互联网的DNS系统(如图中虚线所示);
3)DNS46将收到的DNS查询请求从A记录类型转换至AAAA记录类型,然后通过IPv6网络转发至ADNS服务器;
4)ADNS返回对域名的AAAA查询结果,其对应的AAAA记录结果为IPv6地址;
5)DNS46将查询结果从AAAA记录类型转换至A记录类型,并将IPv6地址转换为对应的IPv4地址,并通过IPv4网络将查询结果转发至LDNS;
6)LDNS将DNS查询结果返回给客户端;
7)客户端将根据返回的DNS查询结果中给定的IPv4地址,与目标IPv4地址建立TCP连接;
8)NAT46将接收到的IPv4数据包转换至IPv6并转发至目标WebServer;9)WebServer返回数据包;
10)NAT46将接收到的IPv6数据包转换至IPv4并转发回客户端。
在整个访问过程中,为了完成IPv4客户端到IPv6服务器的访问,主要通过以下两个功能实现:
1)DNS46:
实现DNS查询请求在IPv4和IPv6网络之间的转换。
2)NAT46:
实现客户端与服务器之间的IP数据流在IPv4和IPv6网络之间的转换。
2.2.2场景二:
IPv6客户端访问IPv4内容
在第二种场景中,客户端直接接入IPv6网络,客户端的访问目的可能存在于IPv4和IPv6两个网络中。
与场景一中面临的问题类似,客户端通过域名访问时,仍然需要解决两个问题:
1)无论访问的目的地在IPv4还是IPv6网络,需要返回客户端一个合法的DNSAAAA类型查询结果;
2)如果客户端访问的目的地在IPv4网络中,需要利用NAT解决IPv6与IPv4之间的地址转换问题。
如下图所示,我们通过DNS64来解决域名访问时的转换问题,通过NAT64来解决地址访问时的翻译问题。
如上图所示,在场景二中,当客户端位于IPv6网络中时,利用NAT64/DNS64技术实现的整个访问过程如下:
1)客户端打开浏览器,在地址栏输入要访问的网站的域名,如:
。
客户端会向DNS服务器发送AAAA记录类型的查询请求。
这个请求可能会经过转发或直接发送至DNS64;
2)DNS64会将该域名查询请求同时转发至IPv4和IPv6两个网络中的DNS服务器;
a)发送至IPv6DNS服务器的请求不做任何变动,直接转发;
b)发送至IPv4DNS服务器的请求会转换至A记录类型后再转发
3)DNS64会根据收到的DNS查询结果做如下处理:
a)如果收到了IPv6网络中DNS服务器的AAAA记录类型查询结果,则直接将该结果返回客户端,客户端则直接在IPv6网络中进行服务器的访问;
b)如果未收到IPv6网络中DNS服务器的AAAA记录类型查询结果,而收到了
IPv4网络中服务器对应的A记录类型查询结果,DNS64会将查询到的结果转
换至AAAA记录类型,并将查询到的IPv4地址,按照一定规则嵌入IPv6地址中,并转发至客户端;
4)客户端根据DNS返回的查询结果,发起对目标的连接,根据实现设置的策略,这个数据包会转发至NAT64;
5)NAT64收到数据包后,从访问的目标地址中剥离出IPv4地址,并完成IPv6数据包至IPv4数据包的转换,然后转发至目标;
6)目标返回IPv4数据包;
7)NAT64收到数据包后,完成IPv4至IPv6的数据包转换,并转发回客户端。
在整个访问过程中,为了完成IPv6客户端到IPv4服务器的访问,主要通过以下两个功能实现:
3)DNS64:
实现DNS查询请求在IPv4和IPv6网络之间的转换。
4)NAT64:
实现客户端与服务器之间的IP数据流在IPv4和IPv6网络之间的转换。
2.3方案原理及面临的挑战
NAT46/DNS46和NAT64/DNS64两个方案在实现方式上看起来极为类似。
首先,这两个方案都是都需要对DNS记录的查询类型及返回的结果进行IPv4和IPv6之间的转换。
其次,这两个方案都需要采用NAT地址转换技术,实现客户端和服务器之间访问的IP协议转换。
但是,在实际的实现过程中,由于IPv6的地址空间要远远多于IPv4,NAT64/DNS64的实现方式要比NAT46/DNS46要简单的多,并且功能的完善性上,NAT64/DNS64也要完善的多。
在NAT64/DNS64方案中,由于IPv6具有充足的地址空间,可以将整个IPv4地址空间映射到一段IPv6地址中(IPv6前缀小于/96即可),因此,在进行DNS转换时,任何IPv4地址,都可以嵌入一个IPv6地址中,并返回客户端。
目前DNS64已经成为IETF的正式标准——RFC6147。
如下图所示,当NAT64采用/32前缀时,目的IPv4地址将采用如下方式,封装至IPv6地址中。
当该IPv6地址作为DNS的AAAA查询结果返回客户端后,客户端会将该IPv6地址作为目的地址发起会话请求,而网络中的路由设备会将该数据包路由至NAT64设备。
当IPv6数据包到达NAT64设备后,NAT64会从这个IPv6地址中解析出目的IPv4地址(上图中的192.0.2.33),并将数据包转换后发送到IPv4网络。
与NAT64/DNS64方案所不同的是,在NAT46/DNS46方案中,由于DNS的查询结果为IPv6地址,无法像DNS64那样将地址封装至IPv4地址中,因此,必须采用某种方法来同步DNS46和NAT46中IPv4和IPv6映射关系。
3NAT46/DNS46方案部署建议
3.1网络部署拓扑及说明
NAT46/DNS46方案的部署方式如上图所示:
1)东方有线的IDC机房核心网络已经实现IPv4/IPv6双栈方式部署;
2)PPTV的Web服务器、DNS服务器等采用纯IPv6的方式接入IDC的核心网络,而用户接入网络则采用IPv4的方式与IDC的核心网络相连;
3)本方案中,我们建议采用2台AX2500旁路接入IDC的核心网络,分别实现
NAT46和DNS46的功能;
4)在用户接入网络的LDNS上配置策略,将需要疏导至IPv6网络中流量对应的
DNS域名查询请求(如本例中的)转发至IDC中的DNS46设备
5)客户端访问IPv6服务器的流量,将会疏导至IDC的NAT46设备,经由该设备实现IPv4至IPv6的数据包转换。
3.2主要功能的实现方式说明
3.2.1DNS46在AX上的实现方式
在AX上配置VIP,作为LDNS服务器转发DNS请求的目标地址:
slbserverpptv-dns-1211.167.112.101port53udp
!
slbservice-grouppptv-dnsudpmemberpptv-dns-1:
53
!
!
slbvirtual-servervip-pptv-dns211.167.112.125port53dns-udp
name_211.167.112.125_DNS-UDP_53
source-natpoolp1service-grouppptv-dnsaflexdns
whenDNS_REQUEST{
#log"==========DNS_REQStart==================="
settype_mark0
if{[DNS:
:
questiontype]equals"A"}{
#log"DNStypeisA,thenchangetoAAAA"
DNS:
:
questiontypeAAAAsettype_mark1
}
#log"=============DNS_REQEOF=================="
}
whenDNS_RESPONSE{
#log"------DNS_RESPStart"
if{$type_mark}{
setrrs[DNS:
:
answer]
setname[DNS:
:
questionname]
DNS:
:
questiontypeADNS:
:
answerclear
seti0
foreachrr$rrs{
switch[DNS:
:
rdata$rr]{
利用AX独有的aFleX脚本功能,实现DNS请求的转换要求,具体脚本内容如下:
"2401:
800:
8000:
:
153"{
#log"DNS_answerinsertipv4,153"
DNS:
:
answerinsert[DNS:
:
rr$name601INA211.167.112.99]
}"2401:
800:
8000:
:
154"{
#log"DNS_answerinsertIpv6,154"
DNS:
:
answerinsert[DNS:
:
rr$name601INA211.167.112.100]
}
}
incri
}
}
log"=============DNS_RESPEOF==================="
}
3.2.2NAT46在AX上的实现方式
nat46-statelessprefix2401:
800:
a000:
:
/96
nat46-statelessstatic-dest-mapping211.167.112.992401:
800:
8000:
:
153
nat46-statelessstatic-dest-mapping211.167.112.1002401:
800:
8000:
:
154
AX设备的功能中,已经支持NAT46功能,只需要简单的在AX上配置IP地址映射关系,即可实现NAT46功能:
3.3当前方案存在的问题及解决方案
由于目前AX不支持在aFleX中调用AX的aXAPI接口,当前的方案只能通过手工的方式来指定DNS46和NAT46上IPv4与IPv6地址间的对应关系。
尽管这种方式配置简单,但如果内容服务商进行服务器地址调整或增加新的域名解析后,AX无法自动感知并进行配置的自动调整。
因此,存在后续维护工作量较大的问题。
解决的方案主要思路是实现ADNS的AAAA应答后进行感知并实现与NAT46配置的联动处理。
具体的思路如下:
与场景一中的介绍类似,步骤1-4的处理方式不变,当DNS46接入到ADNS返回的域名查询结果时,执行上图所示的步骤5。
我们以的域名解析情况,来说明整个步骤的逻辑处理过程:
a)DNS46在本地会维护一张“DNS域名及IP地址对照表”,用于记录ADNS返回的查询结果及IPv4/IPv6地址对应关系表,在系统初始运行时,这张表是空的,同时NAT46上没有任何IPv4/IPv6地址映射关系的配置;
b)当上图中步骤4返回的ADNS查询结果时,DNS46会查询“本地DNS域名及
IP地址对照表”:
i.如果未查询到匹配的对应关系,则从配置的IPv4地址池中选择一个可用地址,与查询结果中的IPv6地址建立映射关系,并将该映射关系记录在“DNS域名及IP地址对照表”中,同时,将该映射关系推送至NAT46设备。
ii.如果查询到匹配的对应关系,则继续下一步处理
c)根据“DNS域名及IP地址对照表”中域名及IP地址的映射关系,修改DNS
查询请求为A记录类型,并用对应的IPv4地址替换原有IPv6地址;
d)完成修改后,将请求转发至LDNS。
在步骤6-8中,客户端根据接收到的DNS查询结果,发起对目标IPv4地址的数据流,而此时,NAT46会根据DNS46推送过来的配置,完成IPv4至IPv6的NAT46转换,实现了NAT46/DNS46方案的自动配置联动处理。
此方案的优势在于,在完成内容服务商的初始化接入配置后,该方案会根据ADNS的域名查询结果,自动实现NAT46中IPv4到IPv6地址映射关系的管理,减少由于内容服务商应用服务调整带来的维护工作量,减少人工维护带来的差错。
4NAT64/DNS64方案部署建议
4.1网络部署拓扑及说明
NAT64/DNS64的部署方式如上图所示:
1)建立纯IPv6网络,用于IPv6客户端的接入;
2)核心网络采用IPv4/IPv6双栈方式部署;
3)采用1台AX2500旁路接入核心网络中,并启用DNS64和NAT64功能;
4)AX上的DNS64可以作为IPv6接入网络中客户端的LDNS服务器;
通过以上方式部署,客户端访问互联网资源的方式如下:
1)客户端的DNS请求发送至DNS64后,会同时向IPv4和IPv6两个网络中的
DNS系统进行转发;
2)如果要访问的资源在IPv6网络中,则客户端直接通过IPv6网络进行访问;如果要访问的资源在IPv4网络中,则DNS64会将DNS查询结果转换成AAAA记录类型,并将目标在IPv4网络中的地址封装至IPv6地址中。
客户端则根据这个地址进行访问,而NAT64则会从该IPv6地址中解析出目标的IPv4地址,从而实现NAT64转换。
4.2主要功能的实现方式说明
4.2.1DNS64在AX上的实现方式
1)配置IPv4和IPv6地址池
AX(config)#ipv6natpoolipv6-pool14629:
:
504629:
:
50netmask64AX(config)#ipnatpoolipv4-pool1192.168.1.100192.168.1.100netmask/24
2)配置DNS模板,启用DNS64功能
AX(config)#slbtemplatednsdns64-tempAX(config-dns)#dns64
3)配置DNS服务器,用于为IPv6网络中的客户端提供DNS解析功能
AX(config)#slbserverlocaldns-rs14629:
:
1000AX(config-realserver)#port53udp
AX(config-realserver-nodeport)#exitAX(config-realserver)#exit
!
AX(config)#slbserverlocaldns-rs210.20.32.10AX(config-realserver)#port53udp
AX(config-realserver-nodeport)#exitAX(config-realserver)#exit
AX(config)#slbservice-groupdns53udpAX(config-slbsvcgroup)#memberlocaldns-rs1:
53AX(config-slbsvcgroup)#memberlocaldns-rs2:
53AX(config-slbsvcgroup)#exit
!
AX(config)#slbvirtual-servervs13142:
:
200AX(config-slbvserver)#port53dns-udp
AX(config-slbvserver-vport)#source-natpoolipv4-pool1
AX(config-slbvserver-vport)#access-listnamednslistsource-nat-poolipv6-pool1
AX(config-slbvserver-vport)#service-groupdns53AX(config-slbvserver-vport)#templatednsdns64-tempAX(config-slbvserver-vport)#exit
AX(config-slbvserver)#exit
4.2.2NAT64在AX上的实现方式
1)建立一个IPv4地址池
AX(config)#ipnatpoolnat64-pool70.132.116.9070.132.116.90netmask/29ha-group-id1lsn
2)建立一个LSN-LID并指定一个NAT地址池
AX(config)#lsn-lid5
AX(config-lsnlid)#source-nat-poolnat64-pool
3)定义一个ClassList,匹配需要进行NAT64转换的客户端地址
AX(config)#class-listNAT64
AX(config-classlist)#2004:
:
/96lsn-lid5
4)启用NAT64功能
AX(config)#nat64insidesourceclass-listNAT64
5)在接口上定义IPv6NATinside和IPv4NAToutside
AX(config)#interfaceve70AX(config-if:
ve70)#ipnatoutsideAX(config-if:
ve70)#interfaceve150
AX(config-if:
ve150)#ipv6natinside
全文完