组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm) E-mail:ouyang@china-pub.com 译者:高明辉(roamer21cn minghuigao@263.net) 译文发布时间:2002-02-28 版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须保留本文档的翻译及版权信息。 Network Working Group Juha Heinanen Reguest for Comments: 1483 Telecom Finland July 1993 通过ATM适应层5的多协议封装 (RFC1483--Multiprotocol Encapsulation over ATM Adaptation Layer 5) 本备忘录的状态 2 摘要 2 1. 简介 2 2. 多路复用方法的选择 2 3. AAL5帧格式 3 4. LLC 封装 4 4.1. 路由协议的LLC封装 4 4.2. 桥接协议的LLC封装 5 5. 基于VC的多路复用技术 9 5.1. 路由协议的VC多路复用技术 9 5.2. 桥接协议的VC多路复用技术 9 6. ATM网络中的桥接 11 7. 未来研究 11 感谢 11 安全事项 11 参考 12 附录A. 基于FR-SSCS的多协议封装 12 附录B. OUI 00-80-C2的局部指定值列表 14 附录C. NLPID的部分条目 14 作者地址 14 本备忘录的状态 这篇RFC(Request For Comments)为Internet社区详细说明了一个IAB(Internet Architectrue Board , Internet架构委员会)标准跟踪协议,需要通过讨论和建议来改进。如果想知道这个协议的标准化状态,请参考最近的“IAB正式协议标准”的版本。 本备忘录的发布不受任何限制。 摘要 本备忘录描述了两种通过ATM AAL5传送网络互连信息的封装形式。第一种方法允许在单一的ATM虚电路上复用多种协议,而第二种方法每一种协议都承载在不同的ATM虚电路上。 1. 简介 基于网络的异步传输模式(Asynchronous Transfer Mode,ATM)在局域和全局应用中正在引起越来越多的兴趣。本备忘录描述了在ATM网络上两种不同的方法来承载无连接的网络互连业务信息,路由和桥接协议数据单元(Protocol Data Units,PDUs)。第一种方法允许在单一的ATM虚电路上复用多种协议,承载PDU的协议类型通过给PDU加一个IEEE802.2 标准的LLC(Logical Link Control,逻辑链路控制)标题来标识,这种方法在后面被称作“LLC封装”,它的一个子集初期定义为SMDS[1]。第二种方法将高层协议类型隐含在ATM虚电路(VC)上,在后面称作“基于VC多路复用”。 ATM是以信元(cell)为基本载体的传输模式,要求不同长度的用户信息分段成短的、固定长度的信元,或者由短的、固定长度的信元重组成不同长度的用户信息。本备忘录并不是为路由和桥接协议数据单元(PDU)指定一种新的分段和重组(Segmentation And Reassembly,SAR)方法,而是由ATM适应层5(AAL5)公共部分会聚子层(Common Part Convergence Sublayer,CPCS)的负载区来承载PDU。 注意,本备忘录仅仅描述如何在AAL5的CPCS子层上传输路由和桥接PDU。也就是,这时AAL5的业务特定部分会聚子层(Service Specific Convergence Sublayer,SSCS)为空。如果I.36x.1 [3]定义的帧中继(Frame Relay,FR)业务特定部分会聚子层(FR-SSCS)用于AAL5的CPCS子层上,这时,路由和桥接PDU将由RFC1294[4]中描述的NLPID多路复用方法来承载。附录A中描述了FR-SSCS-PDU的格式,也描述了RFC1294中如何将IP和CLNP PDU封装在FR-SSCS之上的。 2. 多路复用方法的选择 可以想象,基于VC多路复用技术在在快速、方便地动态建立大量ATM VC的环境中将占很大优势。这种环境可能在专用ATM网络中占据主导地位。另一方面,由于某些原因,在每一种协议都承载在不同的VC的方法不实用,这时LLC封装可能会比较适宜。例如,如果一个ATM网络仅仅支持PVC(Permanent Virtual Circuits,永久虚电路)或者过分依赖于一定数量的SVC。 当两个ATM站点要交换基于无连接的网络互连通信数据时,在PVC的情况下可以通过手动配置来实现多路复用方法的选择,或者在SVC的情况下用B-ISDN的信令过程来实现。有关B-ISDN信令请参照CCITT [5]。但是,可以认为B-ISDN信令信息包括了一个“底层兼容性”的信息元素,有了这个元素我们就可以同AAL5及其承载(或者封装)的协议进行协商。 3. AAL5帧格式 无论选择哪一种多路复用技术,路由和桥接PDU都应该被封装在AAL5 CPCS-PDU负载区,下面给出AAL5 CPCS-PDU的格式 AAL5 CPCS-PDU 格式 +-------------------------------+ | . | | . | | CPCS-PDU 负载 | | (1至65535字节) | | . | | . | +-------------------------------+ | PAD(0至47字节) | +-------------------------------+ ------- | CPCS-UU(1字节) | +-------------------------------+ | CPI(1字节) | +-------------------------------+CPCS-PDU尾部 | 长度(2字节) | +-------------------------------| | CRC(4字节) | +-------------------------------+ ------- 负载区可以包含1至65535字节的用户信息。 PAD区用来填充CPCS-PDU使CPCS总长度为48字节的整数倍,这样由SAR子层产生的最后48字节信元载荷正好与信元中CPCS-PDU的尾部对齐。 CPCS-UU(User-to-User indication,用户到用户标识)用来透明地传输用户到用户信息,在本备忘录中描述的多协议的ATM封装中该字段没有作用,可以被置成任意值。 CPI(Common Part Indicator,通用部分指示)字段是为了使CPCS-PDU的尾部按64 bit对齐,在CCITT标准中为了未来可能增加的功能预留。在它的作用只是为了64 bit对齐的情况下,该字段应该编码为0x00。 长度字段指示了以字节为单位负载区的长度,最大值是65535字节。长度字段编码为0x00用于异常功能。 CRC字段提供了CRC字段本身以外的整个CPCS-PDU的差错检查。 4. LLC 封装 当需要在相同的一条VC上传输多种协议的情况下就需要使用LLC封装。为了让接收端能正确地处理接收到的AAL5 CPCS-PDU,承载区必须包含必要的信息来标识是路由或桥接协议。在LLC封装中,这些信息在承载PDU前面的LLC头中统一编码。 尽管本备忘录只是解决了在LLC类型1(无连接的模式)业务上运行的协议,同样的封装原理也适用于在LLC类型2(基于连接的模式)业务上运行的协议。在后一种情况中,LLC封装的头的格式或者内容会与在下面给出的不同。 4.1. 路由协议的LLC封装 在LLC封装中,路由PDU的协议是通过给PDU前面加一个IEEE 802.2 LLC标题头来标识,后面可能紧跟着一个IEEE 802.1a SNAP(SubNetwork Attachment Point)的标题头。在LLC类型1的操作中,LLC标题头包括三个byte字段: +------+------+------+ | DSAP | SSAP | Ctrl | +------+------+------+ 在路由协议的LLC封装中,Ctrl字段的值始终是0x03,用来指定是无编号的信息命令PDU。 LLC标题头的值为0xFE-FE-03标识后面是一个路由ISO PDU(请看[6]和附录B)。Ctrl字段的值0x03指定是无编号的信息命令PDU。因此,AAL5 CPCS-PDU承载区的路由ISO PDU的格式如下所示: 路由ISO PDU的负载格式 +-------------------------------+ | LLC 0xFE-FE-03 | +-------------------------------+ | . | | ISO PDU | | (1至65532字节) | | . | +-------------------------------+ 路由ISO协议由一个字节的NLPID字段来标识,这个字段是协议数据的一部分。NLPID的值由ISO和CCITT来确定,它们的定义在ISO/IEC TR 9577 [6]中,附录C中列举了当前一些定义 按照ISO/IEC TR 9577中的定义,一个NLPID的值为0x00是标识空的网络层或者设置为非活动状态,由于在这种封装形式下它没有意义,所以在ATM封装中,一个NLPID的值为0x00是无效的 尽管IP不是ISO协议,但是IP有一个NLPID值0xCC,所以,对IP来讲,也有可能采用上面的封装形式。这种格式不一定使用,跟其他一些非ISO路由协议的封装形式一样,可以通过在LLC标题头的后面的SNAP标题中标识出。 LLC标题头的值0xAA-AA-03标识SNAP标题,SNAP标题的格式: +------+------+------+------+------+ | OUI | PID | +------+------+------+------+------+ 三个字节OUI(Organizationally Unique Identifier ,组织唯一标识符)标识给后面的两个字节PID(Protocol Identifier ,协议标识符)规定意义的组织。二者合在一起标识了一个独特的路由或桥接协议。OUI的值0x00-00-00说明后面的PID是以太类型。 非ISO PDU在AAL5 CPCS-PDU负载区格式如下所示: 非ISO 路由 PDU格式 +-------------------------------+ | LLC 0xAA-AA-03 | +-------------------------------+ | OUI 0x00-00-00 | +-------------------------------+ | 以太类型 (2 字节) | +-------------------------------+ | . | | 非ISO PDU | | (1-2^16 - 9 字节) | | . | +-------------------------------+ 在IP PDU详细的格式中,以太类型的值为0x08-00: 路由IP PDUs的负载格式 +-------------------------------+ | LLC 0xAA-AA-03 | +-------------------------------+ | OUI 0x00-00-00 | +-------------------------------+ | 以太类型 0x08-00 | +-------------------------------+ | . | | IP PDU | | (1-2^16 - 9 字节) | | . | +-------------------------------+ 这与RFC1042[7]兼容,本备忘录应该随着RFC1042指定的标题格式的修改而修改。 4.2. 桥接协议的LLC封装 在LLC封装中,通过在SNAP标题中指定桥接媒体的类型对桥接PDU进行封装。与非ISO路由协议的LLC封装类似,LLC标题头的值0xAA-AA-03标识SNAP标题。桥接协议的LLC封装中,SNAP标题OUI字段的值是802.1组织的代码0x00-80-C2,目前桥接媒体的类型是有两个字节的PID指明的。另外,PID指明在桥接PDU中是否保留了FCS(Frame Check Sequence ,帧校验序列)。用于ATM封装的媒体类型(PID)在附录B中列出。 因此,承载桥接PDU的AAL5 CPCS-PDU负载区应该是下面格式中的一种。为了使桥接PDU的用户信息字段按照4个字节对齐,在必要的时候,可以在PID字段的后面进行填充。 桥接Ethernet/802.3 PDU负载格式 +-------------------------------+ | LLC 0xAA-AA-03 | +-------------------------------+ | OUI 0x00-80-C2 | +-------------------------------+ | PID 0x00-01 或 0x00-07 | +-------------------------------+ | PAD 0x00-00 | +-------------------------------+ | 目的MAC地址 | +-------------------------------+ | | | (MAC帧的剩余部分) | | | +-------------------------------+ |LAN FCS(如果PID的值是0x00-01)| +-------------------------------+ 桥接Ethernet/802.4 PDU负载格式 +-------------------------------+ | LLC 0xAA-AA-03 | +-------------------------------+ | OUI 0x00-80-C2 | +-------------------------------+ | PID 0x00-02 or 0x00-08 | +-------------------------------+ | PAD 0x00-00-00 | +-------------------------------+ | 帧控制字节(1字节) | +-------------------------------+ | 目的MAC地址 | +-------------------------------+ | | | (MAC帧的剩余部分) | | | +-------------------------------+ | LAN FCS (如果PID是0x00-02) | +-------------------------------+ 桥接Ethernet/802.5PDU负载格式 +-------------------------------+ | LLC 0xAA-AA-03 | +-------------------------------+ | OUI 0x00-80-C2 | +-------------------------------+ | PID 0x00-03 或 0x00-09 | +-------------------------------+ | PAD 0x00-00-XX | +-------------------------------+ | 帧控制字节(1 octet) | +-------------------------------+ | 目的MAC地址 | +-------------------------------+ | | | (MAC帧的剩余部分) | | | +-------------------------------+ | LAN FCS (如果PID是0x00-03) | +-------------------------------+ 注意,在802.5 AC(Access Control,接入控制)字段在局域802.5子网以外没有任何意义,因此它可以看作是三个字节的PAD字段的最后一个字节,可以赋以任意值(XX)。 桥接FDDI PDU的负载格式 +-------------------------------+ | LLC 0xAA-AA-03 | +-------------------------------+ | OUI 0x00-80-C2 | +-------------------------------+ | PID 0x00-04 或 0x00-0A | +-------------------------------+ | PAD 0x00-00-00 | +-------------------------------+ | 帧控制字节(1 octet) | +-------------------------------+ | 目的MAC地址 | +-------------------------------+ | | | (MAC帧的剩余部分) | | | +-------------------------------+ | LAN FCS (如果PID是0x00-04) | +-------------------------------+ 桥接802.6PDU负载格式 +-------------------------------+ | LLC 0xAA-AA-03 | +-------------------------------+ | OUI 0x00-80-C2 | +-------------------------------+ | PID 0x00-0B | +---------------+---------------+ ------ | 保留 | BE标签 | 普通 +---------------+---------------+ PDU | Basize | 标题 +-------------------------------+ ------- | 目的MAC地址 | +-------------------------------+ | | | (MAC帧的剩余部分) | | | +-------------------------------+ | | | 普通PDU尾 | | | +-------------------------------+ 注意,在桥接802.6 PDU中,PID的值只有一种选择,因为在MAC帧标题中CRC-32的标识值由CIB指定。 普通PDU标题头和尾部在出口桥接设备允许通过送入802.6子网。有一点明确的是,普通PDU的标题头中包含Basize字段,这个字段标识了PDU的长度。如果出口桥接设备不能得到这个字段,那么直到它接收到整个PDU,计算它的长度,然后把长度填入Basize字段,才开始传送分片的PDU。如果出口桥接设备能得到这个字段,那么出口802.6桥接设备就能从普通PDU标题头中Basize字段提取出长度,然后把它插入第一个分片的相应的字段,然后立即把这个分片发送到802.6子网。这样,桥接设备就能在它收到整个的PDU之前就开始传送802.6PDU。 +-------------------------------+ | LLC 0xAA-AA-03 | +-------------------------------+ | OUI 0x00-80-C2 | +-------------------------------+ | PID 0x00-0E | +-------------------------------+ | | | 802.1(d) 或 802.1(g) | | 定义的BPDU | | | +-------------------------------+ 注意封装帧的普通PDU标题头和尾部不能简单地复制到802.6出口子网中,因为封装的Betag值可能会与这个桥接设备先前传输的Betag值发生冲突。 通过把它的长度字段的值置为0,一个入口的802.6桥接设备可以中止一个AAL5 CPCS-PDU。如果出口桥接设备已经开始向一个802.6子网传输分片,这时发现该AAL5 CPCS-PDU已经被中止了,它会立即产生一个EOM信元,这样就可以使接收端拒绝接收该802.6 PDU。例如,可以使普通PDU的尾部的长度字段中包含一个非法的值。 5. 基于VC的多路复用技术 在基于VC的多路复用技术中,承载网络互连的协议隐含着由连接两个ATM站点的VC来区分的,也就是说,每一种协议必须运行于各自不同的VC上,因此在AAL5 CPCS-PDU的负载上就没有必要再包含额外的多路复用信息,这样就使得占用少量的带宽和处理开销。 通过上面的简要说明,可以看出,每条VC上承载的协议,要么手动配置,要么在呼叫建立过程中,通过信令处理来进行动态的协商。当相关的标准具有一定的可用性时,在其他的RFC中会对信令进行详细的定义。 5.1. 路由协议的VC多路复用技术 路由协议的PDU应该被承载在AAL5 CPCS-PDU 的负载区,所以AAL5 CPCS-PDU的负载区的格式如下: 路由PDU的负载格式 +-------------------------------+ | . | | 被承载的PDU | | (1-2^16字节) | | . | | . | +-------------------------------+ 5.2. 桥接协议的VC多路复用技术 桥接协议的PDU只是准确地包含了在4.2节中描述的AAL5 CPCS-PDU负载的PID字段以后的部分。因此承载一个桥接PDU的AAL5 CPCS-PDU负载区应该是以下的某一种格式: 桥接Ethernet/802.3 PDUs负载格式 +-------------------------------+ | PAD 0x00-00 | +-------------------------------+ | 目的MAC地址 | +-------------------------------+ | | | (MAC帧的剩余部分) | | | +-------------------------------+ | LAN FCS (VC dependent option) | +-------------------------------+ 桥接802.4/802.5/FDDI PDUs负载格式 +-------------------------------+ | PAD 0x00-00-00 or 0x00-00-XX | +-------------------------------+ | 帧控制字节(1 octet) | +-------------------------------+ | 目的MAC地址 | +-------------------------------+ | | | (MAC帧的剩余部分) | | | +-------------------------------+ | LAN FCS (VC dependent option) | +-------------------------------+ 注意,在802.5 AC(Access Control,接入控制)字段在局域802.5子网以外没有任何意义,因此它可以看作是三个字节的PAD字段的最后一个字节,可以赋以任意值(XX)。 桥接Ethernet/802.6 PDUs负载格式 +---------------+---------------+ ------- | 保留 | BEtag | 普通 +---------------+---------------+ PDU | BAsize | 标题 +-------------------------------+ ------- | 目的MAC地址 | +-------------------------------+ | | | (MAC帧的剩余部分) | | | +-------------------------------+ | | | 普通PDU尾部 | | | +-------------------------------+ 在以太网中,802.3,802.4,802.5,和FDDI PDU因为没有包含PID字段,所以尾部LAN FCS的有无就隐含由VC来标识。这样,即使桥接的媒体类型是相同的,带有LAN FCS和没有LAN FCS的PDU也可以区分开不同的协议。 BPDU负载格式 +-------------------------------+ | | | BPDU as defined by | | 802.1(d) or 802.1(g) | | | +-------------------------------+ 6. ATM网络中的桥接 作为网桥的一个ATM接口必须能涌出、转发和过滤桥接PDU。 通过把PDU发送到所有可能相关的目的地来实现涌出,在ATM的环境下,这就意味着把PDU发往每一条相关的VC。要实现这以功能,可以把PDU拷贝到每一条VC上,或者利用一条组播VC。 要转发一个PDU,一个网桥必须能通过VC与目的MAC地址联系上。要求一个网桥静态地为每一条VC配置与之相关的每一个可能的目的MAC地址是不现实的,也是不可能的,因此,ATM网桥必须提供足够的信息,从而允许一个ATM接口能够动态地学习ATM站点外的外部目的地。 要实现动态的学习,桥接PDU应该与在第4章中描述的封装形式一致,这样,接收的ATM接口就能够通过解析桥接PDU来学习在外部目的地和ATM站点之间的连接。 7. 未来研究 由于ATM组播,寻址,和信令机制还不完备,与多路复用方法协商的详细内容以及地址解析只好留给以后的RFC了。 感谢 这篇文档是RFCs [1]和[4]的发展,很多资料都取自它们,感谢它们的作者T. Bradley, C. Brown, A. Malis, D. Piscitello, and C. Lawrence。另外,IETF ATM工作组专家的建议起了很大的作用,特别感谢CERN 的Brian Carpenter, IBM 的Rao Cherukuri, Motorola的Dan Grossman, Network Systems 的Joel Halpern, Sun Mircosystems 的Bob Hinden, 和MAN Technology Corporation 的Gary Kessler,感谢他们所做的贡献。 安全事项 本备忘录没有提及安全问题。 参考 [1] Piscitello, D. and Lawrence, C., "The Transmission of IP Datagrams over the SMDS Service". RFC 1209, Bell Communications Research, March 1991. [2] CCITT, "Draft Recommendation I.363". CCITT Study Group XVIII, Geneva, 19 - 29 January, 1993. [3] CCITT, "Draft Recommendation I.36x.1". CCITT Study Group XVIII, Geneva, 19-29 January, 1993. [4] Bradley, T., Brown, C., and Malis, A., "Multiprotocol Interconnect over Frame Relay". RFC 1294, Wellfleet Communications, Inc. and BBN Communications, January 1992. [5] CCITT, "Draft text for Q.93B". CCITT Study Group XI, 23 September - 2 October, 1992. [6] Information technology - Telecommunications and Information Exchange Between Systems, "Protocol Identification in the Network Layer". ISO/IEC TR 9577, October 1990. [7] Postel, J. and Reynolds, J., "A Standard for the Transmission of IP Datagrams over IEEE 802 Networks". RFC 1042, ISI, February, 1988. 附录A. 基于FR-SSCS的多协议封装 I.36x.1定义了一个帧中继业务特定部分汇聚子层(FR-SSCS),用于帧中继和ATM接口AAL5的公共部分汇聚子层上面。FR-SSCS提供的业务与I.233中描述的帧中继的核心业务相一致。 一个FR-SSCS-PDU包括Q.922地址,后面紧接着是Q.922信息域。省略了Q.922标志和FCS,这是因为相关的功能由AAL提供了。后面的图表给出了一个AAL5 CPCS-PDU负载区内含一个FR-SSCS-PDU的格式。 路由和桥接PDU按照RFC 1294中定义的方式进行封装。Q.922信息域从Q.922控制域开始,后面紧接着是一个可选的填充字段,用于对齐这一帧剩余的部分,这样发送端就能获得一个方便的边界。通过给PDU加一个ISO/CCITT NLPID(Network Layer Protocol ID)前缀来标识承载的PDU的协议。 特别地,对于一个IP PDU,NLPID的值是0xCC,FR-SSCS-PDU的格式如下: AAL5 CPCS-PDU负载区内的FR-SSCS-PDU +-------------------------------+ ------- | Q.922 地址域 | FR-SSCS-PDU标题 | (2-4 字节) | +-------------------------------+ ------- | . | | . | | Q.922 信息域 | FR-SSCS-PDU负载 | . | | . | +-------------------------------+ ------- | AAL5 CPCS-PDU 尾部 | +-------------------------------+ 路由IP PDU 的FR-SSCS-PDU格式 +-------------------------------+ | Q.922 地址域 | | (2 - 4 字节) | +-------------------------------+ | 0x03 (Q.922 控制) | +-------------------------------+ | NLPID 0xCC | +-------------------------------+ | . | | IP PDU | | (1 - 65531 字节) | | . | +-------------------------------+ 注意,依据RFC 1294,Q.922地址域应该是2或者4个字节长,不支持3字节长的地址域。 路由CLNP PDUs 的FR-SSCS-PDU 格式 +-------------------------------+ | Q.922 地址域 | | (2 - 4 octets) | +-------------------------------+ | 0x03 (Q.922 控制) | +-------------------------------+ | NLPID 0x81 | +-------------------------------+ | . | | CLNP PDU的剩余部分 | | (1 - 65531 字节) | | . | +-------------------------------+ 特别地,对于一个CLNP PDU,NLPID的值是0x81,FR-SSCS-PDU的格式如下: 注意,在ISO协议中,NLPID域构成PDU的第一个字节,因此不要重复。 上面提及的封装形式,仅适用于指定唯一NLPID的路由协议,对于其他的路由协议(如桥接协议),为了方便协议的标识有必要提供另外一种机制。可以适用下面的方法来达到目的,给NLPID赋值0x80来指明后面紧接的是一个IEEE 802.1a SNAP(SubNetwork Attachment Point)。 有关基于FRCS的多协议封装的详细描述请参照RFC 1294。 附录B. OUI 00-80-C2的局部指定值列表 保留FCS w/o保留FCS 媒体类型 ------------------ ----------------- -------------- 0x00-01 0x00-07 802.3/Ethernet 0x00-02 0x00-08 802.4 0x00-03 0x00-09 802.5 0x00-04 0x00-0A FDDI 0x00-05 0x00-0B 802.6 0x00-0D Fragments 0x00-0E BPDUs 附录C. NLPID的部分条目 0x00 空网络层或无用设置 (不用于ATM) 0x80 SNAP 0x81 ISO CLNP 0x82 ISO ESIS 0x83 ISO ISIS 0xCC Internet IP 作者地址 Juha Heinanen Telecom Finland PO Box 228 SF-33101 Tampere Finland Phone: +358 49 500 958 Email: Juha.Heinanen@datanet.tele.fi RFC1483--Multiprotocol Encapsulation over ATM Adaptation Layer 5 通过ATM适应层5的多协议封装 RFC文档中文翻译计划 1