ORAN传输封装类型

ORAN协议中,目前使用两种封装类型:

  1. 以太网封装
  2. IP/UDP封装

1. 以太网封装

U平面消息和C平面消息都可以使用以太网作为传输机制。在这种情况下,消息通过标准以太网帧传输。见下图。

支持的帧格式是Ethernet II/DIX帧,具有type length字段的类型解释。不支持使用LLC的长度解释和多路数据复用,LLC是逻辑链路控制,Logic Link Control,指IEEE 802.2 LLC标准,该标准规定了数据链路层中LLC子层的实现。

每个以太网接口分配一个全局管理的单播MAC地址。对于基本帧,以太网终端支持最多1500字节的MAC Client Data字段,对于巨帧,支持最多9000字节。

为确保支持QoS(Quality of Service,即服务质量。主要指传输带宽、时延、数据丢包率等),应支持IEEE 802.1Q中定义的3bit Priority Code Point(PCP,优先权码点)字段(该字段作为VLAN Tag字段中的子字段),这意味着应支持traffic的VLAN标记能力,并且是M平面可配置的(但对于某些网络配置,例如LLS-C1,可以省略使用VLAN标记)。根据标准的要求,始终会收到优先级标记的帧(即,具有VLAN ID=0标记的帧)。传输优先级标记的帧是可选功能。

U平面和C平面的MAC地址解析通过ORAN MP协议中指定的M平面过程执行,而不管目的地节点是否支持IP。

O-DU和O-RU应支持中间L2交换机MAC地址学习,以避免U平面和/或C平面大量涌入,拓扑LLS-C1不需要支持。MAC地址学习是通过测试以太网帧交换的结果,在ORAN MP协议中规定的M平面步骤“以太网连接检查”期间完成的。

此外,eCPRI头和payload都包含在以太网数据字段中。对于这种封装,应使用eCPRI Ethertype或IEEE 1914.3 Ethertype。

2. IP/UDP封装

U平面消息和C平面消息都可以使用IP/UDP作为传输机制。在这种情况下,应根据RFC791(互联网协议)支持IPv4,和/或根据RFC2460支持IPv6(对于RFC2460,IPv4和IPv6都是可选的,见表8-2)。封装机制由“IPv4”或“IPv6” Ethertype标识。分别见下图。

ORAN传输封装类型_第1张图片

ORAN设备不应发送具有任何IPv4 header选项字段的IPv4数据包,或"Next Header"值是一个扩展header的IPv6数据包,或"Next Header = 59"的IPv6数据包。如果在接收包中检测到上述三种情况的数据包,数据包将在接收设备上被悄悄丢弃(尽管日志中可能会记录丢弃数据包的存在)。对于IPv6,如果"Next Header"中的值不是一个扩展header,且不等于59,则表示header中的下一项是高层header,数据包应由接收方处理(参考RFC2460)。

基于IP的应用程序可以绑定到虚拟接口地址或物理接口地址。每个配置的物理和逻辑(即VLAN)接口应配置一个单独的子网。作为一种选择,还可以支持别名IP地址(即同一接口上的多个IP地址)。如果支持,可以将它们分配给逻辑和物理接口以及虚拟接口(环回接口)。

由于严格的带宽和紧凑的延迟要求,ORAN数据包不得使用IPv4或IPv6分割(接收到这样的数据包应被悄悄丢弃)。可配置的最小MTU应符合相关标准,即,对于IPv4,标准为RFC791,对于IPv6,标准为RFC2460。

仅当发送节点和接收节点支持IPv4时,才应根据RFC826,通过ARP完成MAC地址解析,并通过L2交换机MAC地址学习减少数据泛滥。

当使用IP/UDP封装时,UDP目标端口字段应标识封装的协议。UDP目标端口字段应在初始化期间通过M平面配置进行设置。当eCPRI协议或IEEE1914.3定义各自的UDP目标端口时,这些端口将成为M平面配置的默认端口。

在出口处,发送节点应根据相关标准为传输的UDP报文设置校验和(checksum):

  • 对于IPv4 UDP报文,checksum字段可以被填充适当的值,以表示校验和有效,或填充为0,以表示未计算校验和(见RFC768)。
  • 对于IPv6 UDP报文,checksum字段必须被填充适当的值(见RFC2460)。

在入口处,如果checksum字段包含适当的值,则接收节点可以(不必须)验证UDP校验和。

注:虽然上面3个图中的数字说明了标准以太网数据包,但在当前版本协议中,不排除使用巨帧(长度最多9000字节)。

3. 传输Header

ORAN允许在以太网payload中使用多个不同的传输header,以进一步描述如何在C平面和U平面中处理应用程序数据。在每种情况下,传输header的长度都是8字节,并提供基本的数据路由能力,包括数据流类型的描述、发送和接收端口ID、支持在单个以太网数据包中连接多个应用程序消息的能力,以及序列编号。

传输header包括以下两种:

  • eCPRI传输header
  • 1914.3传输header(RoE)

eCPRI传输header

ORAN传输封装类型_第2张图片

eCPRI传输header包括上图中定义的7个字段。其中部分字段还可以细分为子字段。

1)ecpriVersion (eCPRI protocol revision)

指示eCPRI协议版本号。注:此字段是eCPRI common header的一部分。

        0001b:eCPRI版本1.0, 1.1, 1.2和2.0。其中,eCPRI消息的解释应遵循最高为2.0版本的eCPRI协议。

        0000b和0010b-1111b:为后续的eCPRI协议修订保留。

注:当前应保证ecpriVersion字段始终设置为0001b。

2)ecpriReserved (eCPRI reserved)

为eCPRI后续使用保留。注:此字段是eCPRI common header的一部分。

注:当前应保证ecpriVersion字段始终设置为000b。

3)ecpriConcatenation (eCPRI concatenation indicator)

指示何时使用eCPRI连接(允许在一个以太网数据包中包含多条eCPRI消息)。注:此字段是eCPRI common header的一部分。

        0b:没有连接,只有一个eCPRI数据包。

        1b:使用连接,可能有多个eCPRI数据包。

4)ecpriMessage (eCPRI message type)

表示消息类型传递的服务类型。注:此字段是eCPRI common header的一部分。

在当前协议版本中,仅支持“0000 0000b”,“0000 0010b”和“0000 0101b” 。

        0000 0000b:IQ数据消息,即U平面消息

        0000 0010b:实时控制数据消息,即C平面消息

        0000 0101b:传输网络延迟测量消息(在测量传输方法一节中详细描述完整的消息格式)

5)ecpriPayload (eCPRI payload size)

指示相应eCPRI消息中payload部分的大小,以字节表示。不包括eCPRI消息之后的任何填充字节。支持的最大payload是2^16-1字节,但是实际的大小可能进一步受到底层传输网络(以太网或UDP/IP)的最大payload大小的限制。注:此字段是eCPRI common header的一部分。

ORAN传输封装类型_第3张图片

6)ecpriRtcid / ecpriPcid (real time control data / IQ data transfer message series identifier)

此参数是一个eAxC标识符(即,eAxC ID),用于标识与每个C平面(ecpriRtcid)消息或U平面(ecpriPcid)消息相关的特定数据流。它模拟了CPRI的“AxC”(天线载波)值,因此在这里被称为“eAxC”(“e”表示“扩展”以适应多个频带和多个分量载波)。多个O-DU处理器可能共享单个eAxC。

通常,对于O-RU,不同eAxC ID用于不同的天线(Cat-A)或不同的层(Cat-B)。

一个端点可以通过M平面参数来指示支持mixed numerologies的能力;Section Type 3消息可用于从该端点有能力支持的numerologies列表中选择一个numerology(通过frameStructure字段)。在这种情况下,单个eAxC ID可用于具有不同特征(framestructure, cpLength, timeOffset, freqOffset)的信道,例如,具有不同numerology的信道和PRACH信道可以共享相同的eAxC ID。

或者,端点可能更简单,通过M平面参数声明不支持mixed numerologies,以此来支持单一numerology,并且可以使用Section Type 3消息为frameStructure以外的参数传递不同于M平面配置的值,此时frameStructure是M平面配置的固定值。在这种情况下,每个mixed numerology信道(frameStructure)将使用唯一的eAxC ID,即具有不同numerologies的信道将使用不同的eAxC ID,简单来说,15kHz和30kHz子载波间隔的信道不能共享eAxC ID,15kHz PUSCH与非15kHz的PRACH不能共享eAxC ID。

端点可以声明不支持Section Type 3,在这种情况下,其适用于PDSCH/PUSCH等信道。

分配给O-RU的端点的eAxC ID值用于识别O-RU内部的端点,并且该eAxC ID值在O-RU内相同方向(Tx或Rx)的所有端点中应是唯一的。也就是说,在O-RU内部,DL的所有端点中eAxC ID不可以重复,UL的所有端点中eAxC ID也不可以重复,但是DL和UL端点可以使用相同的eAxC ID。

原则上,一个O-RU的端点可以与多个物理和虚拟前传接口(以太网端口和VLAN)相关联,但eAxC ID值应是唯一的,并且不能用于寻址不同的端点。一个O-RU端点与多个前传接口的关联受限于O-RU的设计,该限制由O-RU通过M平面报告——与给定端点无关的前传接口不得通过M平面被配置,且不能通过该接口将C平面和U平面消息传输到端点。即,对于O-RU通过M平面报告的关联前传接口以外的其他接口,不得用于到该端点的C平面和U平面消息传输。

此外,未通过M平面配置的前传接口,也不得用于到端点的C平面和U平面消息传输。换句话说,O-DU应遵守M平面上传达的O-RU限制。

O-DU可以决定使用相同的eAxC ID值来寻址不同O-RU上的端点,但分配给一个O-RU的eAxC ID值,在O-RU内部相同方向(DL或UL)的所有端点内,应是唯一的。

需要注意的是,存在这样一些O-RU,在同一eAxC ID内,对于描述U平面DL的C平面消息和描述U平面UL的C平面消息,不支持独立序列检查,这在ecpriSeqid一节中有规定。这一O-RU能力限制可由O-RU发出信令,并由O-DU根据M平面协议v03.00进行解释。如果O-RU和O-DU中的一个或两个仅支持M平面协议的早期版本,则打算使用此类O-RU的网络运营商和供应商应确保O-DU可以用其他非标准化的方式解释O-RU的能力限制,即通过离线讨论。为了与此类O-RU进行交互,O-DU应避免在相同的eAxC ID内,对于描述U平面DL的C平面消息和描述U平面UL的C平面消息,对O-RU要求独立序列检查。可以通过以下两种方式解决:

1)为描述U平面DL的C平面消息和描述U平面UL的C平面消息使用不同的eAxC ID;

2)如果O-DU选择使用相同的eAxC ID,则为描述U平面DL的C平面消息和描述U平面UL的C平面消息使用共享序列生成器,如ecpriSeqid一节中所述。

然而,对于O-DU来说,支持这种行为以便与此类O-RU进行交互,是可选的。需要注意的是,不兼容的操作可能会导致数据中断和不正确的错误报告(误报)。

本文档未定义关于同时通过多个前传接口向端点传输或从端点传入C平面和U平面消息的行为。例如,在UL中,如果将一个端点分配给多个前传端口,对任何给定消息,无法指示端点使用哪个前传端口。也就是说,O-RU必须知道使用哪个唯一的前传端口向O-DU发送UL的U平面消息。

此外,在DL中,当使用多个链路时,无法为每个eAxC ID容纳多个延迟窗。

因此,应通过M平面为一个端点精确分配一个前传接口,保证一对一的关系。但不同的端点可以使用不同的前传接口(端口),因此,O-RU作为一个整体可以使用多个前传端口。通过不同的eAxC ID区分。

eAxC ID子字段

一个eAxC ID包括以下子字段:

1)一个band和sector标识符(BandSector_ID)

2)一个component-carrier(分量载波、成员载波)标识符(CC_ID)

3)一个空间流标识符(RU_Port_ID)

4)一个分布式单元(DU)标识符(DU_Port_ID)

注:此参数特定于 eCPRI Message Type = 2 (C-Plane) 和 Message Type = 0 (U-Plane) 的消息。在本文档中,一个eAxC一次仅包含一个空间流,即,每个子载波一个波束(beam)。当在O-RU中预编码时,每个eAxC一次仅包含一层。但TxD (LTE TM2)除外,在这种情况下,单个eAxC (单个ecpriRtcid和ecpriPcid) 表示所有层。例如,在7-2x Cat B中,使用4层或8层传输时,每层应具有不同的eAxC ID。

bit分配细分如下:

1)DU_Port_ID:用于区分O-DU的处理单元(例如,不同的基带卡)。预计O-DU将通过C平面消息指定这些bit位,并且当O-RU生成具有相同sectionId的UL U平面消息时,将C平面中指定的bit位添加到UL U平面消息的传输header中。

2)BandSector_ID:聚合小区标识符(区分O-RU支持的频带和扇区)。

3)CC_ID:区分O-RU支持的载波分量(载波成员)。

4)RU_Port_ID:指定逻辑流,例如数据层或空间流,以及独立的numerologies(例如,PRACH)或需要特殊天线分配(例如,SRS)的信令信道。

作为eAxC ID的一部分,DU_Port_ID,BandSector_ID,CC_ID和RU_Port_ID的分配,由O-DU通过M平面单独完成。此外,在eAxC ID的四个子字段中的任何一个字段内,O-RU不需要明确定义任何bit级的分配。

上述每个字段的位宽是可变的,并通过M平面消息传递进行设置。这是为了允许灵活性,因为对于任何给定的O-RU,并非所有字段都同时需要其最大范围。预计M平面消息将为O-RU和O-DU配置,使得四个字段中每个字段都具有适当的位宽,并且执行实际分配的SMO将确保分配全部16 bit(带或不带填充)。

SMO:Service Management & Orchestration Framework

7)ecpriSeqid (message identifier)

此参数在两个不同级别上提供唯一的消息标识和排序。

第一个8bit是序列ID,用于标识一个eAxC消息流内部的消息顺序。序列ID字段为每个下行U平面eAxC、上行U平面eAxC、下行C平面eAxC和上行C平面eAxC单独递增和循环,即使它们共享相同的eAxC ID。例如,即使上下行U平面使用相同的eAxC ID,序列ID也会分开生成。序列ID用于验证是否已接收到所有消息,并对接收到的无序消息进行重新排序。

第二个8bit是子序列ID,当发生radio-transport-level(eCPRI或IEEE-1914.3)分段时,子序列ID用于验证排序和执行重新排序。Radio-transport(eCPRI或IEEE-1914.3)分段是一种分割U面消息的方法,此时该U平面消息包含的section中,存在一个或多个超过基础协议规定的最大数据包长度或消息长度的section。子序列ID字段包括一个7bit子序列计数器和一个单bit字段,称为E-bit。对于U平面消息的每个分段,子序列编号从零开始递增。E bit用于指示无线传输(radio-transport)级分段的最后一条消息。除U平面分段的最后一条消息外,其始终设置为零。在C平面消息的情况下,不允许无线传输(radio-transport)分段,因此子序列ID应设置为零,E bit应设置为1。关于分段过程的描述,参见分段章节。

注:作为无线传输级分段的替代方案,可以实现application分段。在这种情况下,应用程序可以负责确保所有传输消息不会太长(适合必要的传输payload大小)。当使用“应用层分段”时,子序列标识符应始终设置为“0”,E bit设置为“1”(参见分段章节)。

下图展示了如何为C平面和U平面消息生成序列号,以及如何检查序列号。如图所示,

1. 是O-DU发给O-RU的下行C平面消息的序列计数生成器

2. 是O-DU发给O-RU的上行C平面消息的序列计数生成器

3. 是O-RU发给O-DU的上行C平面消息的序列计数检查器

4. 是O-DU发给O-RU的下行U平面消息的序列计数生成器

5. 是O-RU发给O-DU的上行U平面消息的序列计数检查器

6. 是O-DU发给O-RU的下行C平面消息的序列计数检查器,与1相对应

7. 是O-DU发给O-RU的下行U平面消息的序列计数检查器,与4相对应

8. 是O-DU发给O-RU的上行C平面消息的序列计数检查器,与2相对应

9. 是O-RU发给O-DU的上行C平面消息的序列计数生成器,与3相对应

10. 是O-RU发给O-DU的上行U平面消息的序列计数生成器,与5相对应

ORAN传输封装类型_第4张图片

对于上行和下行,O-DU必须分别产生序列计数器。

O-RU在每个端点上生成序列计数器和检查序列计数器,但在C平面和U平面上是分开的。

对于上图,可以总结为以下几点:

a)每个eAxC(ecpriRtcid或ecpriPcid)的序列ID是唯一的:不同的eAxC值有自己的序列ID生成,即不同的eAxC ID可以使用相同的序列ID。

b)序列ID由O-DU或O-RU中的前传接口发射器生成。

c)用于描述下行U平面的C平面消息的序列生成器和检查器,和用于描述上行U平面的C平面消息的序列生成器和检查器,两者是相互独立的。

可以总结为下表:

ORAN传输封装类型_第5张图片

如ecpriRtcid/ecpriPcid一节所述,在同一eAxC ID内,对于描述下行U平面的C平面消息和描述上行U平面的C平面消息,存在不支持独立序列检查器的O-RU。为了与此类O-RU进行互操作,O-DU可以选择使用相同的eAxC ID,但对于描述下行U平面的C平面消息和描述上行U平面的C平面消息,则共享序列生成器,如下图所述。

ORAN传输封装类型_第6张图片

O-DU到O-RU的上下行C平面消息共享序列计数生成器,O-RU同样对上下行C平面消息使用共享序列计数检查器,解析后分别应用于接收端点和发射端点。

对于上下行U平面消息,以及O-RU到O-DU的C平面消息,则使用独立的序列计数生成器和独立的序列计数检查器。

可以总结为下表:

ORAN传输封装类型_第7张图片

ecpriSeqid的子字段分配如下:

1914.3传输Header

ORAN传输封装类型_第8张图片

作为替代eCPRI的传输header,可以使用IEEE 1914.3。其定义如上图所示,接下来详细描述每个字段。

1)RoEsubType (sub type / message type)

该字段表示IEEE 1914.3标准中以太网无线封装和映射(RoE)子类型范围内的payload类型。RoE允许使用子类型映射表(如下)将128到191之间的RoE子类型映射到外部组织和公司。此表有两个字段。

        OUI/CID字段使用唯一的公司ID(CID)值。对于本文件,应使用IEEE分配给xRAN(0xFAEB6E)的OUI/CID。

        Payload结构映射字段将RoE子类型分配给O-RAN消息类型。当payload结构映射字段设置为0xFFFF时,表示RoE子类型未映射到O-RAN消息类型。

ORAN传输封装类型_第9张图片

给定的O-RAN实现可以选择固定(默认)映射,或者,可以选择使用IEEE 1914.3中描述的控制包配置子类型映射表。

注:上表表明O-RAN使用IEEE定义的xRAN子类型映射;未来需要与IEEE进行讨论,将其转换为O-RAN子类型映射。

        128:U平面,无连接,一个以太网数据包中仅有一条RoE消息

        129:U平面,有连接,一个以太网数据包中可能有多条RoE消息

        130:C平面,无连接

        131:C平面,有链接

2)RoEflowID (flow identifier)

RoEflowID是一种可以标识端点之间特定流的机制。有效值范围是0~0xFE,0xFF是为RoE控制数据包保留的。O-RAN当前不使用此字段。

3)RoElength (length)

此字段是消息中payload部分的大小,以字节为单位。Payload长度字段的值是O-RAN common header之后的字节总数,以8bit为单位。该字段不包括以太网FCS或之后的字节。

4)RoEorderInfo (order information)

此字段分为以下7个子字段。

ORAN传输封装类型_第10张图片

1)DU_Port_ID:用于区分O-DU的处理单元(例如,不同的基带卡)。预计O-DU将通过C平面消息指定这些bit位,并且当O-RU生成具有相同sectionId的UL U平面消息时,将C平面中指定的bit位添加到UL U平面消息的传输header中。

2)BandSector_ID:聚合小区标识符(区分O-RU支持的频带和扇区)。

3)CC_ID:区分O-RU支持的载波分量(载波成员)。

4)RU_Port_ID:用于在O-RU上区分空间流或beam。

5)Sequence_ID:消息排序的唯一序列号。

6)E_Bit:标记与此section相关的最后一条消息。用于无线传输层分段。

7)Subsequence_ID:消息排序的唯一子序列号。用于无线传输层分段。

参考 《O-RAN-WG4.CUS.0-v08.00.pdf》

你可能感兴趣的:(ORAN,网络,网络协议)