FCAEB
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
光纤通道(FC)协议分析
光纤通道协议(简称 FC 协议)是美国国际信息技术标准委员会(INCITS)于 1998 年开始制定一种高速串行通信协议。
该协议将快速可靠的通道技术和灵活的、可扩展的网络技术有机融合在一起。
FC 协议发展至今,已经能够支持很多上层协议和指令集,例如:MIL-STD-1553B、IP、ATM 等协议以及 HIPPI、IPI、SCSI等指令集。
支持光纤和铜缆等多种物理介质。
FC 协议能够很好地实现全双工、半双工和单工的通信模式。
FC 协议的基本特点是:灵活的拓扑结构、高带宽、高可靠性、低迟延、开放性。
⏹光纤通道分层结构
类似于 OSI 的七层模型结构和 TCP/IP 的四层模型结构,FC协议具有五层模型结构。
FC-0:接口与媒体层,用来定义物理链路及特性;FC-1:传输协议层,定义了编码/解码方案、字节同步和有序集;FC-2:链路控制层,定义了传送成块数据的规则和机制;FC-3:通用服务层;FC-4:协议映射层,定义高层协议映射到低层协议的方法。
⏹FC-0 接口与媒体层研究
FC-0 接口与媒体层即为光纤通道协议的物理层。
该部分主要涉及的是传输介质以及使用的收发器等,即从物理组成方面来定义光纤通道协议的要素。
1.光纤通信原理
光纤通信采用光纤作为传输介质,光作为信息的载体。
它首先要在信号发射端将需要发送的电话、电报、图像和数据等电信号进行光电转换,即将电信号变成光信号,再通过光纤传输到接收方的端口,接收端将接收到的光信号转变成电信号,继而还原成原信号。
图 3-1 为光纤通信系统,可将其分为三个基本组成单元:光发射器、光纤和光接收器。
光发射器由将传输信号进行电光变换的转换装置和将光信号送入光纤的传输装置组成。
光源是其核心部件,由半导体发光二极管 LED 或者激光二极管 LD 组成。
光纤在使用系统中一般以光缆的形式存在。
光接收器由光检测器、放大电路和具有信号恢复功能的解调电路组成。
光发射器和光接收器也称为光端机。
在光纤通信系统中还包括大量的有源、无源光器件。
2.光收发一体模块的选择
所谓的光收发一体模块即是能实现光电、电光转换,具有独立发射驱动和接收放大电路,符合电信传输标准的光电子系统。
光收发一体模块从九十年代开始应用以来,各类光通信的系统接口部分都采用其作为核心器件。
光收发一体模块(Optical Transceiver Module)具有结构小、成本低、可靠性高、性能好等优点。
图 3-2 为光收发模块的原理框图。
光发射部分使用偏置控制电路给激光源提供偏置电流,数据信号进入高速缓冲器整形后,形成调制电流,激光器输出光信号,完成电光转换和数据发送。
调节调制电流和偏置电流可以起到控制光收发模块的消光比和稳定输出功率的作用,此调节电路称之为 APC 自动控制功率电路。
而温度控制电路 ATC 由制冷器和热敏电阻双向控温,用以稳定模块工作时的光源中心波长。
光接收部分主要由PD探测管,前置放大器,主放大器,均衡电路和时钟提取电路组成。
PD 探测管将接收到的光信号转为电信号,完成光电转换,前置放大器用于降低噪声干扰,提高接收灵敏度。
主放大器对信号进行整形放大后,再由判决再生电路和时钟电路将信号还原。
光收发一体模块包括的种类有:
(1) 1x9 双工 SC,ST 连接器光模块
(2) RJ45 电口小型可插拔模块
(3)点对点双向光模块
(4)千兆以太网接口转换器(GBIC)模块
(5)无源光网 PON(G-PON,GE-PON)光模块
(6)小型可插拔收发光模块(SFP)
(7) 10Gb/s 光模块(XFP,SFP+)
目前应用最为广泛且有着巨大发展潜力的是支持热插拔的 SFP 模块。
故从通用性和升级性考虑,本设计采用 SFP 封装的光纤收发模块。
SFP 光模块是一种小封装、可热插拔的光纤收发一体模块。
小封装能够提高线路接口模块的端口密度,可插拔性则为用户更换模块提供方便,有利于升级和维护设备。
SFP 光收发模块采用 LC 光接口,SFP 光收发模块有多模和单模之分,多模 SFP 主要应用于短距离的数据传输,单模 SFP 则主要用于中、长传输距离。
SFP代表了收发模块发展的方向。
而智能 SFP 光模块,即带有数字诊断功能的 SFP 光模块,
则是各厂商技术升级换代的标志性产品,通过光模块自带的数字诊断功能,可以得到光模块的相关状态,从而为我们对光通信产品的调试、使用以及整个网络的维护提供检测手段和方法。
SFP 提供的性能检测手段,可以帮助系统管理预测光模块的寿命、隔离系统故障并在现场安装中验证模块的兼容性等等。
本课题综合多方面考虑采用多模传输的智能 SFP 模块,选定 AVAGO 公司的HFBR-57L5AP,该收发模块兼容光纤通道协议,高速串行信号传输速率可达1.0625Gb/s,工作温度为-10℃~+85℃,传输距离可达 550m,且具有能够实时检测功能的数字诊断功能。
图 3-3 为所选用的光纤收发一体模块原理图。
TD±与 RD±为高速串行信号线,设计时要将其与 SERDES 芯片相连,由于该信号线上传输的信号为高速差分信号,因此在具体 PCB 设计的走线上要满足阻抗匹配。
FPGA 部分连接光纤模块的如下引脚,用于监测和控制光纤模块。
TX_FAULT:激光出现错误时,激活该信号,使其被锁为高电平。
该信号一旦被激活,激光将停止发射。
该信号由 TX_DISABLE 或电源清零。
通过 FPGA 观察该信号。
TX_DISABLE:光学输出无效使能,高电平有效。
RX_LOS:输入信号电源不足时,该信号被激活。
高电平有效,表示调制信号缺失或硬件连接错误(如光件已坏或远程收发器不好使)。
MOD_DEF0:高电平用于指示光模块的存在。
MOD_DEF1,MOD_DEF2:I2C 总线控制信号。
3. 光模块的物理连接方案
光纤通道物理连接界面要求将并行结构的数字系统连接至一个高速串行通信链路,且数据格式为 8b/10b 编码。
当数据从多比特并行字转换成 8 位的字节,继而编码成 10 位的字节,并再将其转换成高速串行数据时,相位噪声(AKA 抖动)的影响将随着时钟频率的提高和字节周期的缩短变得更加明显。
为使 10 比特宽的编码字节串行化,设置在串并行转换器(SERDES)发送端的锁相环(PLL)会将并行数据传输时的钟频率提高 10 或 20 倍,在编码过程将并行数据复用,产生高速串行数据。
嵌入在 SERDES 芯片接收器内的另一个 PLL 可提取将串行数据转换成并行数据所需的时钟。
在光纤收发器模块中也集成了一个复杂的电路,用来将SERDES 的数据输出转换为调制激光器所需的模拟信号,并且将接收
到的光脉冲转换回差分数据输出。
安捷伦科技的(SERDES 芯片)嵌入式 PLL 使用了完善的电荷泵误差信号放大器和位频率检测器,改进了对电源噪声的抗干扰性。
同时在所选的光收发一体模块资料中也给出了较为适合光模块的 SERDES 芯片,以及其接口电路。
本课题选择的是安捷伦科技的 HDMP-1636A,该芯片满足光纤通道的1.0625Gb/s 的传输速率,能将已编码的 8b/10b 码的 10 位数据转换为高速串行数据,也能完成将高速串行数据变为 8b/10b 码的 10 位数据。
其工作主要是从发送和接收两方面来完成的。
发送部分接收10位并行TTL电平数据,并将其串行化形成高速的串行数据流。
接收的 10 位并行数据要求是 8b/10b 编码或是同等码制,这些并行数据在参考时钟(作为发送字节时钟)的上升沿被锁存至输入寄存器。
光纤通道的参考时钟要求为 106.25MHz。
发送部分的锁相环将用户提供的参考时钟锁住,这个时钟然后被 10 倍频来产生用于输出高速串行数据流的时钟。
这个高速数据流直接连至铜质电缆或光纤模块输出。
接收部分接收 1062.5M 波特率的串行数据流并将其恢复成 10 位并行数据。
接收部分的锁相环锁存住输入信号,并将其恢复成串行时钟和数据。
串行数据被转换回 10 位并行数据,同时识别 8b/10b 编码特点来排列字节。
恢复的并行数据对于用户来说都是 TTL 电平输出的。
接收部分也恢复两个接收时钟,并且这两个时钟相位相差 180 度。
对于光纤通道来说,该时钟则为 53.125MHz。
并行数据将被恰当的按照每个时钟的上升沿进行
FC-1 传输协议层研究
FC-1 层定义了串行序列的物理传输编解码、有序集的组成以及端口状态机等。
FC 在该层定义了传输码制,即采用 8b/10b 数据编码传送信息。
1.8b/10b编解码方案
光纤通道中为了增加数据传输的可靠性,采用了传输带宽小、转换密度高以及码字游程长受限的 8b/10b 编解码方案。
它将原 8 位数据编码成为 10 位的字符,增加了数据中的高低电平变换(即 1/0 变换),有利于实现编解码前后的时钟同步,此外还能帮助实现直流平衡,以便接收器的输入没有直流(DC)漂移。
由于采用该码制的链路可以是交流(AC)耦合的形式,因此,设备厂商提供了更大的灵活性。
而且这种编码有利于检测出传输过程中单个和多个比特的误码,同时编码方案中的一些特殊字符为比特流的码组定位和信息识别提供了有力的支
持。
将 8b/10b 编码划分为 3 个模块实现,较好地反映了 8b/10b 编码的特点,实现流程清楚,容易编写代码,图 3-5 为 8b/10b 编码框图。
其具体实现步骤为:
(1)判断是特殊字符还是数据;
(2)若是特殊字符,根据 RD 极性直接取值;
(3)若是数据,根据 RD 极性确定 6bit 的取值;
(4)根据 6bit 编码值确定 4bit 的编码取值。
图 3-6 给出了解码模块的基本结构框图。
8b/10b 解码的难点是将 1024 个数据当中的有效数据字、特殊字和错误字分辨清楚。
在 1024 个数据当中,有 24 个特殊字、440 个有效数据字和 560 个错误字。
因此解码模块可以分成四个主要子模块,即为特殊字解码子模块、错误字检测子模块、有效数据字解码子模块和 RD 及 RD错误计算子模块,用于完成解码、错误检测和 RD 计算等功能。
2.光纤通道有序集研究
光纤通道协议的有序集分为三种:帧界定符,原语信号和原语序列。
其中帧界定符包含帧开始(SOF)和帧结束(EOF),指出帧的起始和终止,指出帧的服务类型,并给出帧在序列中的相对位置并说明帧内数据的有效性。
原语信号是由特殊的 K28.5 编码开始的连续四字节的一组特殊信号,主要用于说明各端口的状态变化和通知事件的发生。
主要的原语信号包括空闲信号(IDLE)和准备完毕信号(R_RDY),空闲信号的传送一方面是说明链路空闲,另一方面则保证链路之间的通畅,不让其他信号传递。
R_RDY 信号主要用于缓冲到缓冲的流控制,用于确认接收方有能力接收更多帧。
表 3-1 为原语编码表。
原语序列是不断发送的有序集,在原语序列协议中用来完成链路初始化和链路层校正。
发送原语序列表明端口的状态在发生变化。
原语序列包括不操作(NOS),离线(OLS),链路故障(LRR),链路复位(LR)等等。
3.端口状态机原理设计
在光纤通道中,端口是通信的基本单元。
所有连接到光纤网络上的设备都必须有光纤端口,这些端口控制数据的传输。
当端口上电或复位后,它必须经过一套严密的握手机制由非激活状态转换为正常工作状态;另外,在数据通信过程中,若发现链路故障、超时、缓冲区溢出、信号丢失或不同步等异常情况时,端口也
要启动特定的协议来进行故障排查、链路恢复等处理。
这就要需要通过端口的状态机工作机制来实现。
端口状态机状态转换的关系如表 3-2 所示。
注意事项:a 表示依赖于激光安全要求,当检测到信号丢失时,发射器可能会进入“脉冲”操作传输模式;b 表示在 FC 端口决定离开 OL1 状态之前,所有的事件被忽略;c 表示检测到一个原语序列协议错误(在该状态下接收到一个不正确的原语序列),链路错误状态块中(LESB)的原语序列协议错误数目加 1;
d 表示当不再识别 NOS 且没有其他能引起状态转换的事件发生时,超时周期开始计时;e表示当不再识别 OLS 且没有其他能引起状态转换的事件发生时,超时周期开始计时;f 表示当 FC 端口试图上线发送 OLS 且没有其他能够引起状态转换的事件发生时,超时周期开始计时;g 表示 FC 端口进入到 AC 状态时,在发送其他传输字之前,要连续发送至少 6 个 IDLES。
端口状态机共有三层链路恢复协议。
即链路初始化协议,链路复位协议以及链路错误协议。
其整个工作过程可以用图 3-7 表示。
链路初始化协议起始于要求初始化的 B 端口的 OL1 状态,此时 B 端口发送OLS;A 端口接收到 OLS 后进入到 OL2 状态,发送 LR;B 端口接收到 LR 后进入到 LR2 状态,发送 LRR;A 端口接收到 LRR 后进入到 LR3 状态,发送IDLE;B端口接收到 IDLE 后进入到 AC 状态,发送 IDLE;A 端口接收到 IDLE 后进入到AC 状态。
至此两个端口共同完成链路初始化。
链路复位协议起始于要求链路复位的 A 端口的 LR1 状态,此时 A 端口发送LR;B 端口接收到 LR 后进入到 LR2 状态,发送 LRR;A 端口接收到 LRR 后进入到 LR3 状态,发送 IDLE;B 端口接收到 IDLE 后进入到 AC 状态,发送IDLE;A端口接收到 IDLE 后进入到 AC 状态。
至此两个端口共同完成链路复位。
链路错误协议起始于发现链路错误的 A 端口,此时 A 端口进入 LF2 状态,发送 NOS;B 端口接收到 NOS 后进入到 LF1 状态,发送 OLS;A 端口接收到 OLS 后进入到 OL2 状态,发送 LR;B 端口接收到 LR 后进入到 LR2 状态,发送 LRR;
A 端口接收到 LRR 后进入到 LR3 状态,发送 IDLE;
B 端口接收到 IDLE 后进入到A
C 状态,发送 IDLE;A 端口接收到 IDLE 后进入到 AC 状态。
至此两个端口共同完成链路错误协议。
FC-2 链路控制层研究
FC-2 链路控制层这是光纤通道协议中最复杂的一层,在 FC 协议的五层架构中,FC-2 层定义了进行端到端的数据块传输的规则和机制,它提供了可供上层协议方便使用的一系列功能,而不理会该协议是什么(SCSI、IP、1553B 等等),对某个特定的协议而言它只需要使用 FC-2 提供的某一部分功能。
FC-2 提供的具体功能包括:不同类型的服务、帧格式的定义、序列的拆分与重组、交换的管理、地址分配、别名定义、并发传送管理、流量控制机制等。
因此,对于这一层的理解要结合顶层协议来设计,根据所需要的部分恰当的进行设计。
1.数据收发和流量控制方法
数据收发部分主要有到两方面内容,一个是端口状态机工作时原语序列的收发,另一个是帧数据的收发。
系统复位后,首先是端口状态机工作,它将按照其原理完成状态转移,并发送特定状态下的原语序列。
目标端口将会有一个原语序列检测逻辑,用于实时的检测原语序列,检测到后,将结果传送到端口状态机,帮助其完成状态转移,直到端口上线处于 AC 激活状态。
帧的收发首先要从SOF 和EOF开始,发送逻辑接收到数据传输的开始信号后,将自动根据所传送的数据类型配置 SOF 和 EOF。
接收逻辑则通过检测 SOF 和 EOF来控制解码工作的开始和停止。
而核心内容帧的收发则要根据顶层协议来定义,流量控制方面采用的是缓冲到缓冲的流量控制。
首先根据接收方缓冲的容量来确定一个配置寄存器,用于存放接收方的容量。
发送控制逻辑设计给出一个计数器,其容量表示当前已发送但还未被确认的帧的数目,每当发送 1 帧的数据,计数器自动加 1;而当接收到 R_RDY 原语信号时,计数器则要自动减 1。
如果这个值小于配置寄存器中设定的值,即未达到接收方的容量,则表示可以继续发送帧;否则,表明目标端口已经没有可用的接收缓冲区,发送控制逻辑将不再发送数据了。
2.CRC校验思想
光纤通道协议在 FC-2 层次定义了数据的校验方式,即采用 CRC 校验。
CRC 校验,全称为循环校验码(Cyclical Redundancy Check,缩写为 CRC),它广泛应用于数据通信和计算机通信中。
光纤通道中采用的 CRC 校验原理,可实现大容量、高速度、高可靠性和高效的信息传输,可以有效地提高系统的检错能力。
在帧的收发过程当中,帧的 CRC 值分别由发送控制逻辑和接收控制逻辑计算。
在计算完数据的 CRC 后,发送控制逻辑将会把该值附到信息的末尾随帧一
并传输出去。
接收控制逻辑则在接收数据的同时计算其 CRC 值,并将计算的结果与收到的信息末尾处的 CRC 进行核对,来判断数据传输的正误。
由于光纤通道协议中定义的帧是面向字节的,所以在对帧内的数据域进行并行 CRC 编解码时,一次要对 8 位数据进行处理。
通过当前 CRC 值与读入数据的运算,得出新的 CRC 值。
一个时钟周期处理 8 位数据的并行算法与串行算法处理8 个时钟周期所得的 CRC 的值是相同的。
通过递推的方法可由串行算法导出并行算法计算前后 CRC 之间的逻辑关系。
CRC 校验码的生成多项式如公式 3-1:这样得到了计算 8 位数据前后 CRC32值之间的逻辑关系。
由此可知,计算后的 CRC 值可由当前 CRC 值与输入数据的异或组合来计算得出。
课题利用了VerilogHDL 的组合逻辑来实现 32 位并行 CRC 校验模块。
其中输入为光纤的 8 位数据和 32 位的 CRC 初值。
输出为计算出来的 CRC32 校验码。
当新的 8 位数据到来时,输入的 CRC 换为上次 CRC 校验计算的结果,二者异或得出来的就是 32 位的 CRC 校验码。
依次得到每个 8 位数据的 CRC 校验码。
最后的输出即为最终的光纤通道协议中帧的 CRC 校验码。
⏹FC-3通用服务层
用于提供一个节点上的多个 Nx 端口进行操作管理的链路服务和其他服务。
为所有通信终端提供一些通用的应用服务器,如时钟同步服务器、别名服务器等,规定了通常的服务类型。
⏹FC-4 协议映射层
光纤通道体系结构的最高层,它定义了低层 FC 协议与 ULP 之间的映射规则。
对于 FC-AE-1553 技术,该层定义了 MIL-STD-1553B 到 FC-AE-1553 的映射。
⏹光纤通道拓扑结构
光纤通道定义了 3 种拓扑结构。
它们是点对点(Point-to-Point)、仲裁环(Arbitrated Loop)和交换型网络(Fabirc)。
点对点连接是 3 种结构中最简单的,如图 2-2 所示,通过光缆直接连接两个设备的端口,能够提供最大带宽并可实现全双工连接,可用于连接有大量持续数据传输要求的结点,如在机载系统中雷达和雷达信号处理器之间进行数据传输。
如图 2-3 为仲裁环连接,仲裁环可以进行 126 个设备的高速连接,数据在
环路的一个方向上传送,在任一时刻仲裁环只有一对端口进行通信,环中的设备只有当环处于空闲状态,才能通过仲裁获得仲裁环的使用权,一个或多个仲裁环路的网状结构可以组成混合结构。
仲裁环可以作为机载系统中外部存储设备间的连接或显示阵列间的连接。
可以采用用集线器式的环模式提高环连接的可靠性,如果加入端口旁路功能,则可对故障结点进行旁路,进一步提高整个环的可靠性。
图 2-4 所示为交换型连接。
交换型网络在三种拓扑结构中功能最强大、可靠性最高、性能最好、带宽最大,可以连接多达 1600 万个设备,而且在同一时刻允许多个设备进行高速通信,但是价格昂贵些。
在一条连接通道中,交换机可同时建立共享连接链路和多条直接连接通道,即可以同时进行分组交换和电路交换。
各终端的端口通过点对点的双向连接与交换机端口互连,每个端口都可以最大速度与交换机的端口建立连接。
光纤通道可以根据需要配置成以上三种方式的混合网络,从而提供最大限度的灵活性。
⏹光纤通道端口类型
在光纤通道协议中,端口是通信的基本单元。
所谓端口是一个节点内部的硬件实体,通过光纤通道链路和相邻的端口进行数据通信。
根据端口位置和拓扑结构的不同,光纤通道协议定义了以下类型的端口:
(1)N 端口。
N 端口是实现整个网络的起点和入口,它是光纤通道协议中最简单的端口,它的功能正确与否直接决定网络是否正常工作。
(2)F 端口在光纤通道交换机中实现,为 N 端口之间提供管理和连接服务,是光纤通道网络中数据的中转者。
(3)L 端口。
L 端口存在于光纤通道环网中,环状网络中的节点共享一个公用连接光纤通道环网,目的是为了降低光纤网络的带宽费用。
(4)NL 端口和 FL 端口。
FL 端口在交换机上实现,它作为一个特殊的节点加入到光纤环网中。
NL 端口位于环结构内,具有 N 端口和 L 端口的双重能力。
⏹光纤通道服务类型
光纤通道定义了 6 类服务。
使用的类别很大程度上依赖所传输的数据类型。
服务类别之间的主要区别是使用不同的流控制类型。
如果两个 N-Port 之间进行通信或者一个 N-Port 要注册到交换式网络,则至少需要 1 类公共服务支持,因为序列和交换需要使用 1 类服务。
在交换式网络注册和 N-Port 注册的过程中,信息进行了交换。
(1)第 1 类服务:专用连接。
第 1 类服务建立的专用连接要由交换机维持和保证。
交换机将会按照源 N 端口的发送顺序将帧发送给目的 N 端口。
(2)第 2 类服务:复用连接。
第 2 类服务是无连接的服务,收到数据帧后需要发送链路控制帧进行确认。
在一个给定的序列内部,发射器会以连续的顺序发送第 2 类数据帧,但是交换机可能不能保证按序传送。
(3)第 3 类服务:数据报。
第 3 类服务是无连接的服务,只支持无确认的传送,在接收到合法的数据帧后不发送任何链路控制帧进行确认。
在一个给定的序列内部,发射器会以连续的顺序发送第 3 类数据帧。
但是,交换机可能不能保证按顺序传送。
(4)第 4 类服务:部分带宽。
利用交换机管理部分带宽分配协议,第 4 类服务使用建立在交换机内部和两个正在通信的 N 端口之间的虚电路来彼此发送帧。
在一个给定的序列内部,发射器会以连续的顺序发送第 4 类数据帧,交换机会以和源 N 端口发送顺序相同的顺序发送帧到目的 N 端口。
(5)第 5 类服务:5 类服务用于同步、即时服务。
但到目前为止还没有被完整的定义,有可能会被废弃。
(6)第 6 类服务:多点传送连接。
第 6 类服务允许一个 N 端口和多个 N 端口建立同时的专用连接。
一旦专用连接建立,它们就要由交换机维持和保证。
第6类的数据流只能由源 N 端口到目的 N 端口。
所有的目的 N 端口会发送适当的链路回应帧给一个多点传送服务器,多点传送服务器会收集这些链路回应帧并返回一个单独的链路回应帧给源 N 端口。
帧由交换机以和源 N 端口发送顺序相同的顺序传送给目的 N 端口。
光纤通道数据单元
光纤通道帧和信令协议定义了 3 种协议数据单元:帧(Frame)、序列(Sequence)和交换(Exchange),它们之间的层次关系如图 2-5 所示。
帧都遵循通用的帧格式,帧格式如图 2-6 所示。
每个帧包括开始分隔符,大小为 24 个字节的固定帧头,多种可操作服务头,从 0 到 2112 个字节的长度灵活的有效载荷,一个帧标准循环冗余码校验和一个结束分隔符。
序列是从一个 N 端口向另一个 N 端口单向传送的一个或多个相关的帧,序列是单向传送的。
交换由一个或多个非并发的序列组成。
交换可。