在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月)。

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场景下业务流量的报文格式是什么样的?

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

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

这是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。

  • 关于Aa:因为0-1023是well-known端口区间,在MAP中建议扩展到0-4095(2^12),即建议a(=PSID offset)默认值是4(16-12)。A的取值为非零值,M的取值为任意值。若a=0,则标识全部port区间均可以分配。
  • 关于PSIDk: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由唯一的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,

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

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

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、PSID offset几个值就推导出共享的IPv4地址和端口序列。

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

  • 对于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+P与IPv6地址之间映射规则,这一节接着来回答第二个问题“MAP域中是如何来规划映射规则?又是如何进行规则下发的?”

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

第一条是BMR,是必选项,用于计算MAP CE的IPv4地址和port-set以及IPv6地址。BMR是需要配置在MAP域的每一个路由器上,配置在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即可。

第二条是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地址。

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

在MAP-T中定了“DMR",代表报文的目的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中,第三条规则为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地址。

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

在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的关系如下。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

城域网IPv6过渡技术——MAP技术相关推荐

  1. 【转载】城域网IPv6过渡技术—NAT444与DS-lite详解

    城域网IPv6过渡技术-NAT444与DS-lite详解 转自 https://network.51cto.com/art/201311/419211.htm### 文章目录 城域网IPv6过渡技术- ...

  2. 【自由谈】城域网IPv6过渡技术——4v6场景技术总结(2)

    按照上一节的分类方式,我们在重新总结梳理下4over6场景的主流IPv6过渡技术. DS-lite技术:是一种有状态.集中式NAT44.隧道方式的过渡技术.CE不获取公网IPv4地址或者端口信息,CG ...

  3. 【自由谈】城域网IPv6过渡技术——CGN部署方式

    前面分析了NAT444和DS-lite技术应用场景,这篇接着分析CGN设备部署方式. NAT444和DS-lite的实现主体是CGN(carrier grade NAT)设备. CGN在城域网的部署由 ...

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

    1. 背景 在IPv4向IPv6网络演进的浪潮中,存在着两对主要矛盾的较量,一对是IPv4地址短缺和IPv4业务蓬勃发展之间的矛盾,另一对是IPv6海量的地址空间和IPv6应用的匮乏之间的矛盾.在IP ...

  5. IPv6过渡技术介绍-一

     [IT168厂商动态]IP地址的重要性已经无需多言,海量的地址是未来移动互联网.物联网等应用深入发展的基础.而在我国目前IPv4地址已经严重不足的情况下,如何过渡到IPv6的问题就显得更为迫切. ...

  6. 连接ipv6服务器未响应,IPv6过渡技术未响应

    IPv6过渡技术未响应 内容精选 换一换 CVE-2020-13401漏洞源于IPv6动态分配除提供了IPv6的DHCP技术外,还支持Router Advertisement技术.路由器会定期向节点通 ...

  7. H3CSE路由-IPv6过渡技术

    PS:本篇仅挑选作者认为重要的模块,并不全面仅供复习参考,具体请自行查阅相关书籍.设有H3CNE-H3CTE学习博客专栏,敬请关注. 现阶段,绝大多数网络仍然是IPv4,过渡到IPv6还要相当长的一段 ...

  8. IPv6过渡技术之DS-lite

    DS-lite技术集合了4in6隧道和NAT44功能,包含两个功能实体,B4(Basic Bridging Broadband Element)位于用户侧实现4in6隧道的封装和解封装,AFTR(Ad ...

  9. 华为 IPv6过渡技术

    理解的执行,不理解的在执行中理解. 文章目录 一.IPv6 over IPv4 隧道简介 二.双协议栈 三.手动隧道 3.1 IPv6 over IPv4隧道 3.2 GRE隧道 四.自动隧道 4.1 ...

最新文章

  1. VS 2019 查看类图 UML 图
  2. 图像处理之快速均值模糊(Box Blur)
  3. vue中央事件总线eventBus的简单理解和使用
  4. 李开复现身说法成功的十个启发
  5. OpenGL:glMatrixMode()
  6. 【guava】guava 11.0.2 版本 key 肯能丢数据的bug
  7. string 转 json_手写Json解析器学习心得
  8. Android 按钮选择状态,如何修改Android中的默认按钮状态而不影响按下和选择的状态?...
  9. led透明屏生产厂家_LED透明屏厂家哪家好?2020年中国深圳LED透明屏品牌排行榜...
  10. 麻省、北大、清华等顶尖高校与企业 20 位强化学习专家齐聚,RLChina 2021 强化学习暑期课免费报名啦!...
  11. 手把手教你如何加入到github的开源世界!
  12. javaScript中简单数据类型和复杂数据类型赋值拷贝的理解
  13. 命令行运行 Java 报 java.lang.NoClassDefFoundError
  14. oracle根据中文获取拼音全拼函数
  15. 二进制、八进制、十进制与十六进制
  16. 如何在计算机设置鼠标宏,鼠标宏设置教程
  17. VB6_小林的气象类模块
  18. 移动端背景图css6,移动端适配之雪碧图(sprite)背景图片定位
  19. 原生js实现星级评分
  20. 【慕课网】前端零基础入门---步骤二:页面化妆师CSS---02-CSS文本样式

热门文章

  1. lajp linux教程,linux IMX6 汇编点亮一个LED灯
  2. 一致性哈希算法--数据库应用
  3. Dubbo-05 20190317
  4. servlet+javabean+jdbc+mysql基于MVC模式的课件管理系统,有三个表的增删改查和课件搜索、课件上传、课件下载功能, 具体功能请看界面上的导航条
  5. 短视频系统源代码,加载本地图片和加载网络图片
  6. 无监督特征学习(半监督学习+自学习)
  7. Python Flask Web教程002:Flask 快速上手
  8. 线性回归python实现详解(附公式推导)
  9. HTTP详解(请求方式)
  10. 快速实现免费的个人免签收款功能(不写一行代码)