Skip to main content

ATM信元

ATM是原国际电报电话咨询委员会CCITT(International Telegraph and Telephone Consultative Committee),也就是现在的国际电信联盟-电信标准部ITU-T于1992年6月定义的信元(Cell)传输标准。

  • ATM信元头 ATM交换中分组长度固定是53字节,简称为信元。根据ITU-T定义,ATM以信元为基本单位进行信息传输、复用和交换。ATM信元头根据网络接口的不同分为UNI和NNI两种信元头类型。ATM信元头长度是5字节,载有信元的地址信息和其他一些控制信息,而有效载荷的长度是48字节,载有需要传输的具体信息。

  • AAL5多协议封装 根据ATM的适配方式,有多种AAL(ATM Adaptation Layer)帧格式,其中AAL5帧用的最多。

  • IPoEoA/PPPoEoA(AAL5 Ethernet/802.3封装) IPoEoA (IP over Ethernet over ATM)和PPPoEoA(PPP over Ethernet over ATM)是指将IP或PPP报文封装在桥接模式的ATM AAL5 PDU中,再封装在ATM信元进行传输。

  • PPPoA(AAL5 PPP封装) 封装PPP(Point-to-Point Protocol)的ATM AAL5(Adaptation Layer 5 (AAL5)报文格式。

ATM信元头

ATM交换中分组长度固定是53字节,简称为信元。根据ITU-T定义,ATM以信元为基本单位进行信息传输、复用和交换。ATM信元头根据网络接口的不同分为UNI和NNI两种信元头类型。ATM信元头长度是5字节,载有信元的地址信息和其他一些控制信息,而有效载荷的长度是48字节,载有需要传输的具体信息。

ATM UNI信元格式

ATM UNI信元格式
    +--------------------+--------------------+
  |     GFC(4 bit)     |     VPI(4 bit)     |
  +--------------------+--------------------+
  |     VPI(4 bit)     |     VCI(4 bit)     |
  +--------------------+--------------------+
  |               VCI(8 bit)               |
  +--------------------+--------------------+
  |   VCI(4 bit)   | PT(3 bit) | CLP(1 bit) |
  +----------------+-----------+------------+
  |               HEC(8 bit)               |
  +--------------------+--------------------+
  |                                         |
  |                                         |
  |             48-byte payload             |
  |                                         |
  |                                         |
  |                                         |
  +-----------------------------------------+
ATM信元头各字段含义
字段 长度 含义
GFC 4比特 一般流量控制,只用于UNI接口,进行流量控制或在共享媒体的网络中标识不同的接入访问。
VPI 8或12比特 虚通道标识符,在UNI中长度是8比特,可标识256个VP;在NNI中长度是12比特,可标识4096个VP。对于一些特定的VPI/VCI值已经保留作为特殊信元使用,表2-17对它们进行简单介绍。
VCI 16比特 虚通路标识符,可标识65536个VC。对于一些特定的VPI/VCI值已经保留作为特殊信元使用,表2-17对它们进行简单介绍。
CLP 1比特 信元丢弃优先等级(Cell Loss Priority),用于拥塞控制。发生拥塞时优先丢弃CLP=1的信元。
PT 3比特 净荷类型PT(Payload Type),用于标识信息域,也就是净荷的类型。下面列出的是ITU-T I.361已定义的PT值及其含义:PT=000:用户数据信元,未经历拥塞,ATM层用户到ATM层用户指示AUU(ATM User to User)为0。PT=001:用户数据信元,未经历拥塞,AUU=1。PT=010:用户数据信元,经历拥塞,AUU=0。PT=011:用户数据信元,经历拥塞,AUU=1。PT=100:OAM F5段相关信元。PT=101:OAM F5端到端相关信元。PT=110:资源管理信元。PT=111:将来用。由此可见,当信元用于承载用户数据时:PT第一位为0。第二位标识信元是否经历拥塞,这一位可通过处于拥塞的网络节点设置。第三位是AUU指示,其中,AUU=0表明对应的SAR-PDU是起始段或中间段,AUU=1表明为结束段。
HEC 8比特 信头差错控制,用于信元头中的差错控制,可纠正1位错码,发现多位错码。HEC的另一个作用是进行信元定界,利用HEC字段和它之前的4字节的相关性可识别出信头位置。由于在不同的链路中VPI/VCI的值不同,所以在每一段链路都要重新计算HEC。

ATM NNI信元格式

ATM NNI信元格式
    +--------------------+--------------------+
  |               VPI(8 bit)               |
  +--------------------+--------------------+
  |     VPI(4 bit)     |     VCI(4 bit)     |
  +--------------------+--------------------+
  |               VCI(8 bit)               |
  +--------------------+--------------------+
  |   VCI(4 bit)   | PT(3 bit) | CLP(1 bit) |
  +----------------+-----------+------------+
  |               HEC(8 bit)               |
  +--------------------+--------------------+
  |                                         |
  |                                         |
  |             48-byte payload             |
  |                                         |
  |                                         |
  |                                         |
  +-----------------------------------------+
ATM信元头各字段含义
字段 长度 含义
GFC 4比特 一般流量控制,只用于UNI接口,进行流量控制或在共享媒体的网络中标识不同的接入访问。
VPI 8或12比特 虚通道标识符,在UNI中长度是8比特,可标识256个VP;在NNI中长度是12比特,可标识4096个VP。对于一些特定的VPI/VCI值已经保留作为特殊信元使用,表2-17对它们进行简单介绍。
VCI 16比特 虚通路标识符,可标识65536个VC。对于一些特定的VPI/VCI值已经保留作为特殊信元使用,表2-17对它们进行简单介绍。
CLP 1比特 信元丢弃优先等级(Cell Loss Priority),用于拥塞控制。发生拥塞时优先丢弃CLP=1的信元。
PT 3比特 净荷类型PT(Payload Type),用于标识信息域,也就是净荷的类型。下面列出的是ITU-T I.361已定义的PT值及其含义:PT=000:用户数据信元,未经历拥塞,ATM层用户到ATM层用户指示AUU(ATM User to User)为0。PT=001:用户数据信元,未经历拥塞,AUU=1。PT=010:用户数据信元,经历拥塞,AUU=0。PT=011:用户数据信元,经历拥塞,AUU=1。PT=100:OAM F5段相关信元。PT=101:OAM F5端到端相关信元。PT=110:资源管理信元。PT=111:将来用。由此可见,当信元用于承载用户数据时:PT第一位为0。第二位标识信元是否经历拥塞,这一位可通过处于拥塞的网络节点设置。第三位是AUU指示,其中,AUU=0表明对应的SAR-PDU是起始段或中间段,AUU=1表明为结束段。
HEC 8比特 信头差错控制,用于信元头中的差错控制,可纠正1位错码,发现多位错码。HEC的另一个作用是进行信元定界,利用HEC字段和它之前的4字节的相关性可识别出信头位置。由于在不同的链路中VPI/VCI的值不同,所以在每一段链路都要重新计算HEC。

特殊的ATM信元

特殊的ATM信元
特殊信元 说明
空闲信元 VPI=0,VCI=0,PTI=0,CLP=1,用于速率适配。
未赋值信元 VPI=0,VCI=0,PTI=任意值,CLP=1。
OAM信元 对于VP,VCI=3,用于VP链路;VCI=4用于VP连接。对于VC,PT=4用于VC链路,PT=5用于VC连接。
信令信元 分为以下三种类型:元信令信元:VPI为任意值,VCI=1。一般广播信令信元:VPI为任意值,VCI=2。点对点信令信元:VPI为任意值,VCI=5。

参考标准

标准 描述
RFC 1755 ATM Signaling Support for IP over ATM
RFC 1926 An Experimental Encapsulation of IP Datagrams on Top of ATM
RFC 1932 IP over ATM: A Framework Document
RFC 2684 Multiprotocol Encapsulation over ATM Adaptation Layer 5

AAL5多协议封装

根据ATM的适配方式,有多种AAL(ATM Adaptation Layer)帧格式,其中AAL5帧用的最多。

AAL5 PDU格式

AAL5 CPCS-PDU格式
    +-----------------------------------------+
  |         CPCS-PDU Payload               |
  |         (up to 2^16-1 octets)         |
  |                 .                     |
  |                 .                     |
  +-----------------------------------------+
  |             PAD(0-47 octets)           |
  +-----------------------------------------+   ------------------
  |             CPCS-UU(1 octet)           |           |
  +-----------------------------------------+           |
  |               CPI(1 octet)             |           |
  +-----------------------------------------+     CPCS-PDU Trailer
  |             Length(2 octets)           |           |
  +-----------------------------------------+           |
  |               CRC(4 octets)           |           |
  +-----------------------------------------+   ------------------
字段 长度 含义
CPCS-PDU Payload 1~65535字节 指CPCS-PDU净荷,用于承载CPCS用户信息,长度是可变的,范围为1~65535字节。
PAD 0~47字节 PAD:填充位,使整个CPCS-PDU长度为48字节的整数倍,这样就使得SAR子层进行信元划分时,可以将CPCS-PDU Trailer刚好能够划分到一个ATM的负载域(48字节)中。
CPCS-UU 1字节 CPCS-UU(用户到用户指示)字段被用于透明传送CPCS用户到用户信息。一般不使用该字段,保留。可以被设置为任何值。
CPI 1字节 CPI(Common Part Indicator,通用组件指示),用作对齐CPCS-PDU尾部到8字节。此字段必须填0x00。
Length 2字节 指示CPCS-PDU净荷长度,以字节为单位。长度字段的最大值是65535字节。一个长度字段被编码为0x00,用于异常中断功能。
CRC 4字节 CRC:循环冗余校验,指CRC域以外的整个AAL5汇聚子层报文的CRC-32值,被用于检测CPCS-PDU中的比特错误。

ATM适配层简介

ATM参考模型由以下四个层组成,其中ATM适配层位于第3层:

  • 物理层:与OSI参考模型的物理层类似,主要管理与介质相关的传输。

  • ATM层:与ATM适配层结合在一起,与OSI参考模型的数据链路层类似。ATM层主要负责共享物理链路上的虚电路和在ATM网络中传输ATM信元(ATM信元格式请参见ATM信元头)。

  • ATM适配层AAL(ATM Adaptation Layer):与ATM层结合在一起,与OSI参考模型的数据链路层类似。ATM适配层主要负责把高层协议与ATM层的详细处理隔离开。它主要准备用户数据到信元的转换及将用户数据分割成48字节大小的信元有效载荷。

  • 高层:接收用户数据,将其组成数据包,然后交给ATM适配层处理。

ATM适配层AAL又分为汇聚子层和分组和重组子层:

  • 汇聚子层CS(Convergence Sub-layer),作用是将上层的信息转化为一种适应分段的,相同大小的ATM净荷。CS子层又包含以下两层:

    • 业务特定汇聚子层SSCS(Service Special Convergence Sub-layer):SSCS部分与各种业务的特性相关联。

    • 公共部分汇聚子层CPCS(Common Part Convergence Sub-layer):通过在帧的前后加入可变长度的填充字符来形成帧,进行错误检测。同时支持通过填充使帧成为净荷(48字节)的整数倍。

  • 分组和重组子层SAR(Segmentation And Reassembly):作用是在外围设备向外发送数据时,把聚合的帧分成相等大小的48字节净荷;在外围设备接收数据时,把48字节的净荷重新组装为聚合帧。

目前标准已经提出4种类型的AAL:AAL1、AAL2、AAL3/4和AAL5,每一种类型支持ATM网中某些特征业务,比如,AAL2针对实时性要求高、数据量较小的话音业务,AAL5针对数据量较大但没有实时性要求的数据传输。大多数ATM设备制造商生产的产品普遍采用AAL5来支持数据通信业务。

AAL5适配过程

AAL5适配过程流程图

img

  1. 在AAL5的CPCS子层,业务数据单元由AAL5在CPCS-PDU净荷的尾部加了CPCS-PDU尾,然后由PAD把整个CPCS-PDU填充成为48字节的整数倍(图中表示成N48)的数据单元SAR-PDU。这样CPCS完成了它的任务,它就把这个N48的CPCS-PDU数据单元发送给SAR子层。

  2. SAR子层将这个CPCS-PDU分成N个48字节的SAR-PDU单元。这样AAL5就完成了它的任务,它把这N个48字节的SAR-PDU单元传送给ATM层。

  3. 在ATM层,SAR-PDU被表示成为ATM-SDU,每一个ATM-SDU被加上一个信元头。

ATM传送信息的基本单位是53字节长的信元,由5个字节的信元头和48字节的净荷组成。由AAL传到ATM层的就是一个一个的48字节净荷,这些48字节的净荷在ATM层就被加上了5个字节的信元头,这样就组成了53字节的信元。

参考标准

标准 描述
RFC 1483 Multiprotocol Encapsulation over ATM Adaptation Layer 5
RFC 2364 PPP Over AAL5
RFC 2684 Multiprotocol Encapsulation over ATM Adaptation Layer 5

IPoEoA/PPPoEoA(AAL5 Ethernet/802.3封装)

IPoEoA (IP over Ethernet over ATM)和PPPoEoA(PPP over Ethernet over ATM)是指将IP或PPP报文封装在桥接模式的ATM AAL5 PDU中,再封装在ATM信元进行传输。

封装格式

IPoEoA/PPPoEoA报文格式
   --------    +-----------------------------------------+   ----------    
    |       |       LLC header(0xAA-AA-03)           |   LLC header
    |       +-----------------------------------------+   ----------    
    |       |           OUI(0x00-80-C2)             |       |        
    |       +-----------------------------------------+   SNAP header
    |       |         PID(0x00-01 or 0x00-07)         |       |        
  CPCS-PDU   +-----------------------------------------+   ----------    
  Payload     |             PAD(0x00-00)               |
              +-----------------------------------------+   ----------    
    |       |         MAC destination address         |       |        
    |       +-----------------------------------------+ Bridged Ethernet/802.3
    |       |       (remainder of MAC frame)         |   PDUs
    |       +-----------------------------------------+       |        
    |       |       LAN FCS(if PID is 0x00-01)       |       |        
  --------   +-----------------------------------------+   ----------    
              |             PAD(0-47 octets)           |
  --------   +-----------------------------------------+
    |       |             CPCS-UU(1 octet)           |
    |       +-----------------------------------------+
  CPCS-PDU   |               CPI(1 octet)             |
  Trailer     +-----------------------------------------+
    |       |             Length(2 octets)           |
    |       +-----------------------------------------+
    |       |               CRC(4 octets)             |
  --------   +-----------------------------------------+
IPoEoA/PPPoEoA报文格式各字段含义
字段 长度 含义
LLC header 3字节 当需要在相同的一条VC上传输多种协议时,就需要使用LLC封装。为了保证接收端正确地处理接收到的AAL5 CPCS-PDU报文,承载区必须包含必要的信息来标识是路由协议还是桥接协议。在LLC封装中,这些信息在承载PDU前面的LLC头中进行定义。对于IPoEoA/PPPoEoA,LLC字段包含DSAP、SSAP和Ctrl这3个子字段(每个子字段1字节):+------+------+------+| DSAP | SSAP | Ctrl |+------+------+------+DSAP:目的服务访问点。服务访问点的功能类似于Ethernet II帧中的Type字段或TCP/UDP传输协议中的端口号。SSAP:源服务访问点。Ctrl:该字段值通常设为0x03,表示无连接服务的IEEE 802.2无编号数据格式。对于IPoEoA/PPPoEoA,LLC字段值为0xAA-AA-03。
SNAP header 5字节 LLC字段后边必须跟一个IEEE 802.1a SNAP(SubNetwork Attachment Point,子网挂接点)字段。SNAP字段包含OUI和PID这2个字段。
OUI 3字节 组织唯一标识符(Organizationally Unique Identifier),由IEEE管理,标识后面协议标识符PID(Protocol Identifier)规定的组织。其值通常等于MAC地址的前3字节,即网络适配器厂商代码。对于IPoEoA/PPPoEoA,SNAP报头中的OUI值必须是802.1组织编码0x00-80-C2。
PID 2字节 指示桥接PDU中是保留原始的以太帧头的FCS字段。下面列举可用于ATM封装的介质类型(PID)值(摘自RFC2684的附录B):保留FCS 不保留FCS 媒介类型------------------ ----------------- --------------0x00-01 0x00-07 802.3/Ethernet0x00-02 0x00-08 802.40x00-03 0x00-09 802.50x00-04 0x00-0A FDDI0x00-05 0x00-0B 802.60x00-0D Fragments0x00-0E BPDUs
PAD 可变 为了使Ethernet/802.3 LLC的数据字段为4字节的整数倍,在PID字段后,进行填充必要数目的字节。
Bridged Ethernet/802.3 PDUs 可变 指ATM封装的Ethernet II或者IEEE 802.3以太帧,详细帧格式请参见以太帧格式。为了保证以太/802.3物理层的帧达到最小长度,可以对其进行填充。当使用带有保留LAN FCS的以太/802.3桥接PDU封装格式时,必须添加填充字符。如果不带有保留LAN FCS时,可以不添加填充字符。当收到不带LAN FCS的帧时,网桥必须在把帧转发到以太/802.3子网前插入一些必需的填充字符。
PAD 0~47字节 填充位,使整个CPCS-PDU长度为48字节的整数倍,这样就使得SAR子层进行信元划分时,可以将CPCS-PDU Trailer刚好能够划分到一个ATM的负载域(48字节)中。
CPCS-UU 1字节 CPCS-UU(用户到用户指示)字段被用于透明传送CPCS用户到用户信息。一般不使用该字段,保留。可以被设置为任何值。
CPI 1字节 CPI(Common Part Indicator,通用组件指示),用作对齐CPCS-PDU尾部到8字节。此字段必须填0x00。
Length 2字节 指示CPCS-PDU净荷长度,以字节为单位。长度字段的最大值是65535字节。一个长度字段被编码为0x00,用于异常中断功能。
CRC 4字节 CRC:循环冗余校验,指CRC域以外的整个AAL5汇聚子层报文的CRC-32值,被用于检测CPCS-PDU中的比特错误。

参考文档

标准 描述
RFC 1483 Multiprotocol Encapsulation over ATM Adaptation Layer 5
RFC 2684 Multiprotocol Encapsulation over ATM Adaptation Layer 5

PPPoA(AAL5 PPP封装)

封装PPP(Point-to-Point Protocol)的ATM AAL5(Adaptation Layer 5 (AAL5)报文格式。

信元格式

PPPoA格式
   --------    +-----------------------------------------+   ----------   
    |       |           Destination SAP (0xFE)       |       |        
    |       +-----------------------------------------+       |        
    |       |           Source SAP (0xFE)           |   LLC header  
    |       +-----------------------------------------+       |        
    |       |         Frame Type = UI (0x03)         |       |        
  CPCS-PDU   +-----------------------------------------+   ----------  
  Payload     |           NLPID = PPP (0xCF)           |
              +-----------------------------------------+   ----------  
    |       |     Protocol Identifier(8 or 16 bits)   |       |        
    |       +-----------------------------------------+       |        
    |       |         PPP information field         |   PPP payload  
    |       +-----------------------------------------+       |        
    |       |               padding                 |       |        
  --------   +-----------------------------------------+   ----------  
              |             PAD(0-47 octets)           |
  --------   +-----------------------------------------+
    |       |             CPCS-UU(1 octet)           |
    |       +-----------------------------------------+
  CPCS-PDU   |               CPI(1 octet)             |
  Trailer     +-----------------------------------------+
    |       |             Length(2 octets)           |
    |       +-----------------------------------------+
    |       |               CRC(4 octets)             |
  --------   +-----------------------------------------+
PPPoA格式个字段解释
字段 长度 含义
LLC header 3字节 当需要在相同的一条VC上传输多种协议时,就需要使用LLC封装。为了保证接收端正确地处理接收到的AAL5 CPCS-PDU报文,承载区必须包含必要的信息来标识是路由协议还是桥接协议。在LLC封装中,这些信息在承载PDU前面的LLC头中进行定义。对于PPPoA,LLC头的值固定为0xFE-FE-03,标识后面是ISO NLPID格式的路由PDU。
NLPID 1字节 ISO路由协议必须由一个字节的NLPID(Network Layer Protocol Identifier)字段来标识,这个字段是协议数据的一部分。NLPID的值由ISO和ITU-T确定。值为0xCF表示PPP协议。
PPP payload 可变 PPP负荷,包括PPP的协议域、信息域和填充。
Protocol Identifier 1或2字节 PPP帧头的协议域,用来区分PPP数据帧中信息域所承载的数据报文的内容。详细请参见PPP或者RFC 1661
PPP information field 可变 PPP信息域,缺省最大长度是1500字节,其中包括填充域的内容。信息域的最大长度等于PPP协议中MRU(Maximum Receive Unit)的缺省值。在实际应用当中可根据实际需要进行信息域最大封装长度选项的协商。
padding 可变 如果信息域长度不足1500字节,可被填充,但不是必须的。如果填充,则需通信双方的两端能辨认出有用与无用的信息,方可正常通信。
PAD 0~47字节 填充位,使整个CPCS-PDU长度为48字节的整数倍,这样就使得SAR子层进行信元划分时,可以将CPCS-PDU Trailer刚好能够划分到一个ATM的负载域(48字节)中。
CPCS-UU 1字节 CPCS-UU(用户到用户指示)字段被用于透明传送CPCS用户到用户信息。一般不使用该字段,保留。可以被设置为任何值。
CPI 1字节 CPI(Common Part Indicator,通用组件指示),用作对齐CPCS-PDU尾部到8字节。此字段必须填0x00。
Length 2字节 指示CPCS-PDU净荷长度,以字节为单位。长度字段的最大值是65535字节。一个长度字段被编码为0x00,用于异常中断功能。
CRC 4字节 CRC:循环冗余校验,指CRC域以外的整个AAL5汇聚子层报文的CRC-32值,被用于检测CPCS-PDU中的比特错误。

参考标准

标准 描述
RFC 2364 PPP Over AAL5