3 min read

NGAP와 함께 보는 ASN.1 - 4th

NGAP와 함께 보는 ASN.1 - 4th
Photo by Markus Spiske / Unsplash

IE들의 정의

NGAP-IEs 모듈에서는 NGAP-CommonDataTypes부터 NGAP-Containers에 이르는 정의들을 포함하여 NGAP에서 사용하는 IE (information element)들에 대한 정의를 포함한다. 5,000 라인이 넘는 막대한 분량이지만 사실 정의해야 할 IE들의 가짓수가 많은 것이지, 정의하는 구조 자체는 IE마다 거의 비슷하다.

여기서는 NR-CGI IE를 예로 들어 설명한다. NR CGI (asn.1 표기로는 NR-CGI) IE는 5G NR의 각 cell들을 식별하기 위한 식별자다. IE 정의에 PLMN까지 포함하기 때문에 global 범위로 유일성을 가진다. 표준에서는 다음의 두 필드로 구성된다.

  • PLMN identity - 3-octet string
  • NR cell identity - 36-bit string

asn.1에서의 NR-CGI 정의는 다음과 같다.

NR-CGI ::= SEQUENCE {
  pLMNIdentity    PLMNIdentity,
  nRCellIdentity  NRCellIdentity,
  iE-Extensions   ProtocolExtensionContainer { {NR-CGI-ExtIEs} }  OPTIONAL,
  ...
}

PLMNIdentity ::= OCTET STRING (SIZE(3))

NRCellIdentity ::= BIT STRING (SIZE(36))

표준에서와 동일하게 정의한 모습을 볼 수 있다. 마지막에 추가된 iE-Extensions는 향후 확장을 위한 것이다. ProtocolExtensionContainer 형식으로 정의하며, 여기에 넣을 수 있는 데이터는 NR-CGI-ExtIEs 셋에 정의한다.

NR-CGI-ExtIEs information object set은 다음과 같다. 보시는 바와 같이 아직 구체적으로 정의된 확장은 없다.

NR-CGI-ExtIEs NGAP-PROTOCOL-EXTENSION ::= {
  ...
}

ProtocolExtensionContainerNGAP-Containers 모듈에 정의된 구조체로, 지난 번에 보았던 ProtocolIE-Container와 유사한 구조이기 때문에 설명을 생략했던 내용이다.

ProtocolExtensionContainer {NGAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
  SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
    ProtocolExtensionField {{ExtensionSetParam}}

ProtocolExtensionField {NGAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
  id              NGAP-PROTOCOL-EXTENSION.&id           ({ExtensionSetParam}),
  criticality     NGAP-PROTOCOL-EXTENSION.&criticality  ({ExtensionSetParam}{@id}),
  extensionValue  NGAP-PROTOCOL-EXTENSION.&Extension    ({ExtensionSetParam}{@id})
}

그리고 위 두 개 정의에 공통적으로 나오는 NGAP-PROTOCOL-EXTENSION가 있는데, 두 정의에 포함될 수 있는 자료 구조를 정의한 information object class에 대한 것이다. ValueExtension으로 바뀐 점만 빼면 NGAP-PROTOCOL-IES class와 동일하다.

NGAP-PROTOCOL-EXTENSION ::= CLASS {
  &id           ProtocolExtensionID UNIQUE,
  &criticality  Criticality,
  &Extension,
  &presence     Presence
}
WITH SYNTAX {
  ID           &id
  CRITICALITY  &criticality
  EXTENSION    &Extension
  PRESENCE     &presence
}

다시 NR-CGI IE를 보면, 해당 IE에 대한 정의는 처음에 설명한 내용이 전부이다. 여기에 더하여, NR-CGI IE들의 배열은 어떻게 정의할까? 일부 메시지에서는 NR CGI List IE를 사용하고 있으며 이에 대한 정의는 다음과 같다.

NR-CGIList ::= SEQUENCE (SIZE(1..maxnoofCellsingNB)) OF NR-CGI

참고로 maxnoofCellsingNB 값은 NGAP-Constants 모듈에서 16384 값으로 정의되어 있다.

IE들의 정의 체계를 정리하면 개별 정보 요소 (PLMNIdentity)들을 정의하고, 각 정보 요소를 SEQUENCE로 묶은 IE를 하며 여기에 향후 확장을 위한 Extension 정의를 추가한다. 추가로 IE 자체가 IE들의 배열인 경우 SEQUENCE .. OF의 형태로 추가로 정의하게 된다.

— END OF POST.