【协议森林】IPv6过渡技术之MAP-T/E技术

1. 背景

在IPv4向IPv6网络演进的浪潮中,存在着两对主要矛盾的较量,一对是IPv4地址短缺和IPv4业务蓬勃发展之间的矛盾,另一对是IPv6海量的地址空间和IPv6应用的匮乏之间的矛盾。在IPv4方面通过地址复用(A+P)方式似乎缓解了IPv4快速消耗的压力,但是NAT设备投入巨大,各类业务应用也或多或少受到影响。在IPv6发展方面,用户、ICP、ISP以及运营商对IPv4地址枯竭的敏感度不一致,从而导致IPv6产业链发展不平衡,各方面在积极推动IPv6发展的同时都或多或少存在顾虑。同时两对矛盾又互相制约,IPv4地址共享机制似乎又减缓了IPv6产业链的发展,IPv6产业链的不断发展似乎又在考验着IPv4地址共享机制的部署规模。
为了保持IPv4业务持续性和促进IPv6产业的发展性,4over6场景凭借其兼顾IPv4业务和IPv6发展的特点,成为长期演进方案研究的焦点。在4over6场景中,MAP技术结合了无状态和双重翻译/封装技术,成为目前IETF关注度最高的解决方案。MAP(Mapping Address and Port)技术是指无状态地对地址和端口进行复用,根据报文格式又分为双重封装MAP-E和双重翻译MAP-T两种。MAP技术文稿目前是IETF的WG draft状态(截止2013年11月)。

2. MAP技术

MAP技术定义了在IPv6-only的网络中承载IPv4和IPv6业务无状态地址封装/翻译的机制。MAP-CE和MAP-BR作为边界设备划定了MAP Domain的区域,IPv4业务流仅存在于MAP Domain之外。
在这里插入图片描述
MAP技术的本质特征可以简单总结为四个关键字,即共享、无状态、分布、优化。

  • 共享:采用A+P理念共享Public IPv4地址,即通过TCP/UDP层的端口号资源来扩展Public IPv4资源,分配Port-Set受限的IPv4地址实现多个用户共享同一个IPv4地址。
  • 无状态:无状态方式实现IPv4 A+P到IPv6地址映射。即通过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-BR的Pool是如何实现?可靠性如何提升?
    4、MAP场景下业务流量的报文格式是什么样的?

3. 端口映射规则

这是MAP技术要解决的第一个问题,也是MAP技术的基础。
首先,从IPv4地址和传输层port来看,32bit的IPv4地址容量有限,16bit的传输层端口(Transport port)目前使用不多,因此借用传输层端口来扩展IPv4地址是一个不错的方法,这就是“A+P"的概念。
为了确保用户使用的IP+Port-set的唯一性,需要将port-set进行有序划分。由于传输层端口中有一些已经分配给特定的应用使用(比如80为http,20/21为ftp等),因此建议分配port-set是需要避免使用此类端口。在MAP中,我们将传输层端口号的16bit划分为三部分,A、PSID和M。
在这里插入图片描述

  • 关于A和a:因为0-1023是well-known端口区间,在MAP中建议扩展到0-4095(2^12),即建议a(=PSID offset)默认值是4(16-12)。A的取值为非零值,M的取值为任意值。若a=0,则标识全部port区间均可以分配。
  • 关于PSID和k:PSID的长度k决定了共享比率,共享比率值=2^k ,即传输层端口可以分成2^k份,每份共享给一个CPE使用,每个共享此IPv4地址的CPE获得一个唯一的PSID,即获得一段唯一的port-set。
  • 关于m:M域的长度m决定了port-set中端口的连续长度,连续长度值为=2^m。
    通过这样的划分,可以获得2^k个Port-Set,每个Port-Set由唯一的Port-Set ID值标识,每Port-Set ID值对应的Port-Set含有((2^a)-1) * (2^m)的端口号。
    下面是一个MAP映射规则的举例:
  • 给定共享比例R(=2^k=1024)和a(=PSID offset=4);
  • 推算出: a=4,k=10,m=2;
  • 列出PSID值和对应的port-set
    在这里插入图片描述因此,对于给定的唯一Prot-Set ID值,都对应一组固定的Prot-Set与之对应。

4. 地址映射

MAP技术是通过IPv4地址的的一部分和端口的一部分特征值嵌入到IPv6地址中实现,IPv4地址选的的特征部分是IPv4-Addr-suffix,port-set选择的是PSID,这样将IPv4的地址信息和端口信息与IPv6地址建立了强关联,此乃MAP设计的巧妙之处。
在这里插入图片描述
通过上图对IPv4+Port与IPv6地址的映射关系可以看出,不管是MAP-CE还是MAP-BR,只要获得End-user IPv6-prefix、Rule-IPv6-prefix、EA-bits、Rule-IPv4、Port-Set ID offset就能推导出公网IPv4地址和端口序列。MAP技术采用IPv4 address和Port-Set ID的值组合形成Interface ID来标识MAP-CE,再与End-user IPv6-prefix一起合成IPv6地址,作为MAP-CE在MAP Domain中的唯一标识。
在这里插入图片描述

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

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

5. 映射规则定义

在MAP技术中有三种MAP规则:BMR(Basic Mapping Rule)、FMR(Forwarding Mapping Rule)和DMR(Default Mapping Rule)。其中,DMR在MAP-E技术中称为Destinations outside the MAP domain。

5.1 BMR(必选规则)

用于计算MAP CE的IPv4地址和Port-Set以及IPv6地址。BMR在MAP CE和MAP BR上都需要配置,配置在MAP-CE上用于将IPv4用户数据进行NAT44和IPv6翻译/封装,配置在MAP-BR上用于将IPv4地址从IPv6报文中解封装/解隧道,以及将回程流量的IPv4地址+port进行IPv6翻译和封装后,在MAP域中按照IPv6路由转发到MAP-CE上。

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

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+P和IPv6地址)

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即可。

5.2 FMR(可选规则)

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

举例如下,在MAP-Domain域中配置BMR=FMR,当MAP-CE2用户的IPv4业务访问MAP-CE1用户的IPv4业务时,在MAP-CE2上通过NAT44和BMR生成源IPv6地址,同时通过FMR生成目的MAP-CE1的IPv6地址。
在这里插入图片描述

5.3 DMR(可选规则)

BMR规则和FMR规则对于MAP-E和MAP-T均适用,但在DMR规则上,MAP-E和MAP-T是不同的:
MAP-T:DMR(Default Mapping Rule)代表报文的目的IPv4地址为MAP Domain域外的地址,通过BR进行转发到域外。DMR含有两个参数Rule-IPv6-prefix和Rule-IPv4-prefix。Rule-IPv6-prefix的值是MAP BR的IPv6前缀,Rule-IPv4-prefix值是0.0.0.0/0,即在MAP-CE上匹配IPv4路由时作为默认路由适用的映射规则。如下图所示,在使用这条规则后,目的IPv6地址将通过DMR配置的Rule-IPv6-prefix+目的IPv4地址组成目的IPv6地址。
在这里插入图片描述
MAP-E:DMR(Destinations outside the MAP domain),更加明确的表征了规则的意义。由于MAP-E中是IPv6报头嵌套IPv4地址,因此对于报文中目的IPv4地址是MAP域外的地址,只需要再封装一层BR的IPv6地址即可,到达BR是直接剥掉IPv6报头就可以还原目的IPv4地址。因此在MAP-E中Destinations outside the MAP domain就是配置MAP-BR的IPv6地址。

6. MAP-T/MAP-E IPv6前缀

前面谈了这些规则和属性,那这些是通过何种协议进行配置呢?最容易想到的就是DHCPv6属性,但是目前的DHCPv6属性除了配置MAP域所需的End-user-IPv6-prefix之外,其他属性还没有定义,因此就有了draft-ietf-softwire-map-dhcp文档,就是针对MAP-E、MAP-T以及lightweight 4over6(三种协议的特点就是均采用A+P理念)所需的属性对DHCPv6进行了扩展。
IPv6前缀分配方式
MAP-T/MAP-E用户的IPv6前缀,目前Bras只支持通过DHCPv6 IA_PD方式分配,不支持通过ND方式分配。
MAP-T/MAP-E用户识别
MAP-T/MAP-E用户进行DHCPv6拨号时,必须在DHCPv6请求报文的ORO选项中请求对应的MAP option(option94、option95)。
请求option94的用户识别为MAP-E用户,请求option95的用户识别为MAP-T用户。对于同时请求option94、option95的用户,默认优先识别为MAP-E用户,如果MAP-E方式分配IPv6前缀失败,则继续按MAP-T方式分配IPv6前缀。支持在Domain下配置为MAP-T优先。
在draft-ietf-softwire-map-dhcp中定义了五个DHCPv6 Option,它们分别是OPTION_S46_RULE,OPTION_S46_BR OPTION_S46_PORTPARAMS,OPTION_S46_DMR,OPTION_S46_IPV4ADDRESS。另外定了针对MAP-E、MAP-T和LW46三个协议的三个Container,包含的DHCPv6 Option的关系如下。
在这里插入图片描述
MAP option封装
Bras为MAP-E、MAP-T用户分配IPv6前缀后,在DHCPv6回应报文中封装option94(MAP-E)、option95(MAP-T),将相关的MAP参数带给用户。

6.1 option 94(OPTION_S46_CONT_MAPE)

仅限于MAP-E用户,option格式如下:
option code为94,option-length不固定,按实际长度封装;
encapsulated-options:MAP-E用户的其他option,做为option94的子option,包括option89、option93、option90。
在这里插入图片描述

6.2 option 95(OPTION_S46_CONT_MAPT)

仅限于MAP-T用户,option格式如下:
option code为95,option-length不固定,按实际长度封装;
encapsulated-options:MAP-E用户的其他option,做为option95的子option,包括option89、option93、option91。
在这里插入图片描述

6.2 option 89(OPTION_S46_RULE)

MAP-E/MAP-T用户均需要封装,做为optioin94、opton95的sub option,option格式如下:
在这里插入图片描述
option code为89,option-length不固定,按实际长度封装;
flags:详细格式如下
在这里插入图片描述
其中保留位为0,F比特位默认为1,如果地址池下配置了option-s46 fmr-flag disable,则将F比特位置0。
ea-len:从前缀池下引用的map-rule中获取,由命令行配置;
prefix4-len及ipv4-prefix:从前缀池下引用的map-rule中获取,由命令行配置。其中ipv4-prefix固定长度为4字节,prefix4-len后的bits用0补齐;
prefix6-len及ipv6-prefix:从前缀池下引用的map-rule中获取,由命令行配置。当prefix6-len不能被8整除时,ipv6-prefix要用0补齐到8的整数倍,但prefix6-len不变;
S46_RULE-options:即option93,做为option89的sub option。

6.3 option 93(OPTION_S46_PORTPARAMS)

MAP-E/MAP-T用户均需要封装,做为option89的sub option,option格式如下:
在这里插入图片描述
option code为93,option length固定为4字节;
offset:从地址池下引用的map-rule中获取,由命令行配置。
PSID-len及PSID:分以下三种场景
ea-len + prefix4-len < 32,PSID-len及PSID均填0,此时分给MAP用户的是IPv4前缀;
ea-len + prefix4-len = 32,PSID-len及PSID均填0,此时分给MAP用户的是一个独享IP;
ea-len + prefix4-len > 32,PSID-len为ea-len + prefix4-len - 32, PSID为MAP用户PD前缀的最后“PSID-len”bit,此时分给MAP用户的是共享IP,其使用的IPv4 port根据PSID计算。

6.4 option 90(OPTION_S46_BR)

仅限于MAP-E用户,做为option94的sub option,option格式如下:
在这里插入图片描述
option code为90,option length固定为16字节;
br-ipv6-address:根据地址池下option-s46 br-ipv6-address的配置封装,长度固定16字节,当掩码长度为128时是unicast地址,当掩码长度小于128时是anycast地址,掩码之后的bits用0补齐。

6.5 option 91(OPTION_S46_DMR)

仅限于MAP-T用户,做为option95的sub option,option格式如下:
在这里插入图片描述
option code为91,option length不固定,按实际长度封装;
dmr-prefix6-len及dmr-ipv6-prefix:根据地址池下option-s46 dmr-prefix的配置封装。当dmr-prefix6-len不能被8整除时,dmr-ipv6-prefix要用0补齐到8的整数倍,但dmr-prefix6-len不变。
谈到这里,肯定有人会问:MAP-E和MAP-T哪个更好呢?
其实每个技术都有其特点,对于MAP-E而言增加了一层IPv6报头,增加了报文长度,有可能会引起MTU问题,但是这种封装方式对IPv4的信息是完全保存下来,不破坏IPv4报文的其他属性,即不存在IPv4报文信息的丢失。对于MAP-T而言通过IPv6报头代替IPv4报头,单层报头的报文承载效率高,但是会造成IPv4报头信息的丢失(感觉关键信息已经映射了,只有部分信息有所丢失而已)。

加入讨论

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值