城域网IPv6过渡技术——MAP技术

        IPv4IPv6网络演进的浪潮中,存在着两对主要矛盾的较量,一对是IPv4地址短缺和IPv4业务蓬勃发展之间的矛盾,另一对是IPv6海量的地址空间和IPv6应用的匮乏之间的矛盾。在IPv4方面通过地址复用(A+P)方式似乎缓解了IPv4快速消耗的压力,但是NAT设备投入巨大,各类业务应用也或多或少受到影响。在IPv6发展方面,用户、ICPISP以及运营商对IPv4地址枯竭的敏感度不一致,从而导致IPv6产业链发展不平衡,各方面在积极推动IPv6发展的同时都或多或少存在顾虑。同时两对矛盾又互相制约,IPv4地址共享机制似乎又减缓了IPv6产业链的发展,IPv6产业链的不断发展似乎又在考验着IPv4地址共享机制的部署规模。

        为了保持IPv4业务持续性和促进IPv6产业的发展性,4over6场景凭借其兼顾IPv4业务和IPv6发展的特点,成为长期演进方案研究的焦点。在4over6场景中,MAP技术结合了无状态和双重翻译/封装技术,成为目前IETF关注度最高的解决方案。MAPMapping Address and Port)技术是指无状态地对地址和端口进行复用,根据报文格式又分为双重封装MAP-E和双重翻译MAP-T两种。MAP技术文稿目前是IETFWG draft状态(截止201311月)。

        MAP技术定义了在IPv6-only的网络中承载IPv4IPv6业务无状态地址封装/翻译的机制。MAP-CEMAP-BR作为边界设备划定了MAP Domain的区域,IPv4业务流仅存在于MAP Domain之外。

https://i-blog.csdnimg.cn/blog_migrate/f20bd7676a438366ecfc85cafe28d676.bmp

我个人认为,MAP技术的本质特征可以简单总结为四个关键字,即共享、无状态、分布、优化

  • 共享:采用A+P理念共享Public IPv4地址,即通过TCP/UDP层的端口号资源来扩展Public IPv4资源,分配Port-Set受限的IPv4地址实现多个用户共享同一个IPv4地址。
  • 无状态:无状态方式实现IPv4 A+PIPv6地址映射。即通过MAP Rule实现IPv4地址+端口与IPv6地址的无状态映射,解决CGN维护地址映射状态的问题。
  • 分布NAT44分布到MAP CE实现。即秉承NAT卸载的理念,利用MAP CE的资源实现分布式NAT,解决集中式NAT44性能瓶颈的问题。
  • 优化:优化流量转发和提高网络可靠性。即通过配置MAP Rule实现MAP CE间流量直接转发,通过MAP-BR Pool实现负载分担,同时由于无状态映射的特点,MAP BR故障切换时无session同步需求,网络可靠性更高。

MAP技术的实现需要考虑以下几个关键问题:

  1. IPv4地址和端口与IPv6地址之间遵循什么映射规则?
  2. MAP域中是如何来规划映射规则?又是如何进行规则下发的?
  3. MAP-BRPool是如何实现?可靠性如何提升?
  4. MAP场景下业务流量的报文格式是什么样的?

接下来我将逐一进行阐述。

IPv4地址和端口与IPv6地址之间遵循什么映射规则

这是MAP技术要解决的第一个问题,也是MAP技术的基础。

首先,从IPv4地址和传输层port来看,32bitIPv4地址容量有限,16bit的传输层端口(Transport port)目前使用不多,因此借用传输层端口来扩展IPv4地址是一个不错的方法,这就是“A+P"的概念。

为了确保用户使用的IP+Port-set的唯一性,需要将port-set进行有序划分。由于传输层端口中有一些已经分配给特定的应用使用(比如80http20/21ftp),因此建议分配port-set是需要避免使用此类端口。在MAP中,我们将传输层端口号的16bit划分为三部分,APSIDM

 

https://i-blog.csdnimg.cn/blog_migrate/f2c9742e154421db434b49c544cf1f3a.bmp

  • 关于Aa:因为0-1023well-known端口区间,在MAP中建议扩展到0-40952^12),即建议a(=PSID offset)默认值是416-12)。A的取值为非零值,M的取值为任意值。若a=0,则标识全部port区间均可以分配。
  • 关于PSIDkPSID的长度k决定了共享比率,共享比率值=2^k,即传输层端口可以分成2^k份,每份共享给一个CPE使用,每个共享此IPv4地址的CPE获得一个唯一的PSID,即获得一段唯一的port-set
  • 关于mM域的长度m决定了port-set中端口的连续长度,连续长度值为=2^m

通过这样的划分,可以获得2^kport-set,每个port-set由唯一的PSID值标识,每PSID值对应的port-set含有((2^a)-1)*(2^m)的端口号。接下来,通过实例来体验下port划分过程。

  1. 给定共享比例R=2^k=1024)和a(=PSID offset=4);
  2. 推算出: a=4,k=10,m=2;
  3. 列出PSID值和对应的port-set

https://i-blog.csdnimg.cn/blog_migrate/9857f1f701263038c5aaada37557e2ce.bmp

因此,对于给定的唯一PSID值,即获得一组port-set

然后,再考虑如何将IPv4地址和port-setIPv6地址建立强关联关系,形成无状态映射?

        MAP技术是通过IPv4地址的的一部分和端口的一部分特征值嵌入到IPv6地址中实现,IPv4地址选的的特征部分是IPv4-Addr-suffixport-set选择的是PSID,这样将IPv4的地址信息和端口信息与IPv6地址建立了强关联,此乃MAP设计的巧妙之处。

https://i-blog.csdnimg.cn/blog_migrate/473d01a2e44c908c4b2c418f459ab503.png

        通过上图对IPv4+PortIPv6地址的映射关系可以看出,不管是MAP-CE还是MAP-BR,只要获得End-user IPv6-prefixRule-IPv6-prefixEA-bitsRule-IPv4PSID offset几个值就推导出共享的IPv4地址和端口序列。

       对于IPv6用户而言,MAP-CE配置了End-user IPv6-prefix,可以通过Interface ID来生成用户的IPv6地址,而对于IPv4用户而言,不会生成类似于IPv6地址的链路本地地址,那如何来生成标识IPv4属性的Interface ID,进而合成代表IPv4地址的IPv6源地址呢?MAP技术采用IPv4 addressPSID的值组合形成Interface ID来标识IPv4共享型用户,再与End-user IPv6-prefix一起合成IPv6地址,作为IPv4共享型用户在MAP Domain中的唯一标识。

https://i-blog.csdnimg.cn/blog_migrate/fe6f2635bc5f95e469cdd3fd2fc3f2a7.bmp

  • 对于IPv4address字段,若分配了一个共享IPv4地址,则IPv4address字段填写分配的IPv4地址,长度是32比特,如果分配了IP-prefix,即分配一段地址给IPv4用户(有可能是个企业用户),则IPv4address字段需要右填0补齐,比如给用户分配IPv4-prefix="192.0.2.0/29",则此处IPv4address字段需要填写"0xC0000200"(十六进制)。
  • 对于PSID字段,若EA-bits位提取的PSID值不足16bit时,左填0补充,如:PSID=“0xAC”,则此处的PSID字段填“0x00AC”,如果分配了IPv4-prefix或者独享的IPv4-address时,则没有PSID值可以提取,则此处的PSID字段填写“0x0000”

至此,MAP域中的IPv4地址共享型用户的IPv4地址和端口已经和IPv6地址建立了无状态映射所需的强关联关系,并可以构建IPv6地址在MAP域中唯一地标识此用户。

接下来考虑,要考虑第二个关键问题:MAP域中是如何来规划映射规则?又是如何进行规则下发的?

上一节讨论了MAP技术中IPv4 A+PIPv6地址之间映射规则,这一节接着来回答第二个问题“MAP域中是如何来规划映射规则?又是如何进行规则下发的?

MAP技术中有三种MAP RuleBMR(Basic Mapping Rule)FMR(Forwarding Mapping Rule)DMR(Default Mapping Rule),其中DMRMAP-E中成为Destinations outside the MAP domain

第一条是BMR,是必选项,用于计算MAP CEIPv4地址和port-set以及IPv6地址。BMR是需要配置在MAP域的每一个路由器上,配置在MAP-CE上用于将IPv4用户数据进行NAT44IPv6翻译/封装,配置在MAP-BR上用于将IPv4地址从IPv6报文中解封装/解隧道,以及将回程流量的IPv4地址+port进行IPv6翻译和封装后,在MAP域中按照IPv6路由转发到MAP-CE上。

        BMR的配置的基本参数包括:Rule-IPv6-prefixRule-IPv4-prefixEA-bits-lengthPSID-offset这些参数配置在MAP-CE上可以计算出共享的IPv4地址和端口序列,以及MAP-CEIPv6地址,举个实例分析下(参考上一节的映射图)。

MAP-CE获得属于IPv6前缀信息:(DHCPv6正常分配)

  • End-user IPv6-prefix: 2001:db8:0012:3400::/56

通过BMR下发的信息如下:

  • Rule-IPv6-prefix        : 2001:db8:0000::/40
  • Rule-IPv4-prefix        : 192.0.2.0/24 (0xC0000200/24)
  • EA-bits-length           : 16
  • PSID-offset(a)           : 4 (default)

则推导出如下信息(MAP-CE的共享A+PIPv6地址)

  • EA-bit                         : 0x1234
  • IPv4-suffix                 : 0x12 (p=32-24=8)
  • PSID                          : 0x34 (q=o-p=16-8=8)
  • IPv4-address             : 192.0.2.18 (0xC0000212)
  • Port-set                     :  4928-4943, 9024-9039, ......, 62272-62287(a=4, A>0; PSID=0x34)
  • IPv6-address            : 2001:db8:0012:3400:00C0:0002:1200:3400

        在MAP  Domain中可以按照IPv4子网逻辑划分多个sub-domain,每个IPv4子网段作为一个sub-domain,这样在sub-domain中所有MAP-CE配置的MR可简化为一条。每个MAP-CE配置不同的End-user IPv6-prefix和相同的BMR即可。

        第二条是FMR,是可选项,用于在mesh网络中实现MAP-CE间的互访流量直接通信,不需要通过MAP-BR中转。这就是说在MAP-CE访问其他MAP-CE时,目的IPv6地址应该是对端MAP-CE的地址。报文的源IPv6地址是BMR生成的,则目的MAP-CEIPv6地址就成了FMR的转换目标。前面也提到每个MAP-CEBMR是相同的(在一定范围),因此FMRBMR也是可以相同的,即可以将BMR通过配置作为FMR

举例如下,在MAP-Domain域中配置BMR=FMR,当MAP-CE2用户的IPv4业务访问MAP-CE1用户的IPv4业务时,在MAP-CE2上通过NAT44BMR生成源IPv6地址,同时通过FMR生成目的MAP-CE1IPv6地址。

 https://i-blog.csdnimg.cn/blog_migrate/1e2777d61a9f9c6456a453624780544f.png

前面两个规则对于MAP-EMAP-T均适用,在第三条规则上,MAP-EMAP-T是不同的。

MAP-T中定了“DMR",代表报文的目的IPv4地址为MAP Domain域外的地址,通过BR进行转发到域外。DMR含有两个参数Rule-IPv6-prefixRule-IPv4-prefixRule-IPv6-prefix的值是MAP BRIPv6前缀,Rule-IPv4-prefix值是0.0.0.0/0,即在MAP-CE上匹配IPv4路由时作为默认路由适用的映射规则。在使用这条规则后,目的IPv6地址将通过DMR配置的Rule-IPv6-prefix+目的IPv4地址组成目的IPv6地址。

https://i-blog.csdnimg.cn/blog_migrate/9adbcd77ae1f5f61cc5fda16d62dd490.png

MAP-E中,第三条规则为Destinations outside the MAP domain,更加明确的表征了规则的意义。由于MAP-E中是IPv6报头嵌套IPv4地址,因此对于报文中目的IPv4地址是MAP域外的地址,只需要再封装一层BRIPv6地址即可,到达BR是直接剥掉IPv6报头就可以还原目的IPv4地址。因此在MAP-EDestinations outside the MAP domain就是配置MAP-BRIPv6地址。

前面谈了这些规则和属性,那这些是通过何种协议进行配置呢?最容易想到的就是DHCPv6属性,但是目前的DHCPv6属性除了配置MAP域所需的End-user-IPv6-prefix之外,其他属性还没有定义,因此就有了draft-ietf-softwire-map-dhcp文档,就是针对MAP-EMAP-T以及lightweight 4over6(三种协议的特点就是均采用A+P理念)所需的属性对DHCPv6进行了扩展。

draft-ietf-softwire-map-dhcp中定义了五个DHCPv6 Option,它们分别是OPTION_S46_RULEOPTION_S46_BROPTION_S46_PORTPARAMSOPTION_S46_DMROPTION_S46_IPV4ADDRESS。另外定了针对MAP-EMAP-TLW46三个协议的三个Container,包含的DHCPv6 Option的关系如下。

https://i-blog.csdnimg.cn/blog_migrate/9a1d60d55aa8a3510a0f5e596298188e.png

对于每个具体的Option的内容,我就不一一进行介绍了,draft-ietf-softwire-map-dhcp都有明确定义,并且在成为RFC之前都是有可能被讨论和更新的。

本节接着回答MAP技术的第三个问题:“MAP-BRPool是如何实现?可靠性如何提升?

MAP域中通过将多个MAP-BR放在同一个Pool内实现负载分担和保护倒换的。同一个Pool中的每个MAP-BR配置相同的Anycast IPv6 address和不同的IPv6 addressMAP-CE配置的BR地址是选用的Anycast IPv6 address

Anycast IPv6 addressIPv6地址族里面一个特殊的地址类型,它是一组接口的标识符,送往一个任播播地址的包被传送至该地址标识的接口之一(路由最近)。Anycast IPv6 address的这种特点可以实现负载分担或者冗余备份机制。Anycast地址只能作为目的地址,不能用作源地址,因此需要为BR另外配置一个IPv6地址。

https://i-blog.csdnimg.cn/blog_migrate/36cdf992e406eed932b2e10aac219937.png

 

        因为MAP属于无状态技术,因此对于流量上下行路径不对称的情况仍能正常转发,例如上行CE3BR-1,下行为BR2-CE3,由于BR-1BR-2MAP Rule相同,因此数据正常映射和转发;MAP-BR无映射session维护,因此也无热备技术需求。通过Anycast方式配置BR地址,CE通过路由选择最近的BR进行转发,实现BR流量的负载分担和提高BR可靠性。 

本节回答最后一个问题:“MAP场景下业务流量的报文格式是什么样的?

MAP域中,网络部署IPv6单栈协议。对于IPv6终端的业务流量是采用Native IPv6进行承载。对于IPv4终端的业务流量,需要在MAP-CEMAP-BR之间(或者MAP-CEMAP-CE之间)建立IPv6通道,根据对IPv4报文的封装方式不同,可以分为MAP-EMAP-T两种方式。

MAP-E:封装方式,即将IPv4报文再封装一层IPv6报头,外层为IPv6报头,内层是IPv4报头。

MAP-T: 翻译方式,即将IPv4报头翻译成IPv6报头,只有一层IPv6报头。

https://i-blog.csdnimg.cn/blog_migrate/7c204a56590ddb2c0695240b0e292b08.png

通过个人理解,将MAP-E的数据处理流程做了一个简单的示意,如下所示。

https://i-blog.csdnimg.cn/blog_migrate/5586e614ff063227a8194156b5c6152d.png

同理,MAP-T的数据处理流程如下图所示。

https://i-blog.csdnimg.cn/blog_migrate/2af1d6a138b90058523360147f43fe17.png

以上业务处理流程仅为个人理解所设计,欢迎大家跟我讨论。

谈到这里,肯定有人会问:MAP-EMAP-T哪个更好呢?

其实每个技术都有其特点,对于MAP-E而言增加了一层IPv6报头,增加了报文长度,有可能会引起MTU问题,但是这种封装方式对IPv4的信息是完全保存下来,不破坏IPv4报文的其他属性,即不存在IPv4报文信息的丢失。对于MAP-T而言通过IPv6报头代替IPv4报头,单层报头的报文承载效率高,但是会造成IPv4报头信息的丢失(感觉关键信息已经映射了,只有部分信息有所丢失而已)。

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值