PowerPC DS3131 PCI device

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "PowerPC DS3131 PCI device"

Transcription

1 Technical Notes / Classification: Management OMCI 의이해 Understanding of OMCI Release /10/7

2 Copyright 2008 novo networks. All rights reserved. All information contained herein is the property of novo networks. No part of this publication (whether in hardcopy or electronic form) may be reproduced or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior written permission of novo networks. No responsibility is assumed by novo networks for the use thereof nor for the rights of third parties which may be effected in any way by the use thereof. Any representation(s) in this document concerning performance of novo networks product(s) are for informational purposes only and are not warranties of future performance All other trademarks, service marks, registered trademarks, or registered service marks may be the property of their respective owners. All specifications are subject to change without prior notice. Figures from ITU-T G belongs to ITU. 2

3 목차 (Table of Contents) 1. AUDIENCE INTRODUCTION OMCI PROTOCOL MIB DESCRIPTION OPERATIONS SPECIAL CONCEPTS MIB DESCRIPTION 의작성및확장 APPENDIX A. 문서정보 A.1 문서이력 APPENDIX B. REFERENCES

4 1. Audience 본자료는 GPON 시스템의 OMCI Agent Toolkit 을개발하면서얻은경험을공유하고자작성되었다. OMCI 관련작업을하거나, OMCI 에대한기본적인이해를하고싶은분들을위한것이다. 사실 OMCI 의규격자체를처음접하면서, 그내용을완전하게이해하는것은쉽지않은일이다. 게다가 OMCI 는특수분야이기때문에물어볼전문가를찾기도쉽지않기때문에모든것을스스로해결해야만한다. 이러한어려움에도움을주고자하는것이이문서의목적이며, 가능하면쉬운설명을사용하였는데, 어떨지모르겠다. 아무쪼록 OMCI 의이해에도움이되면좋겠다는바람이다. 특별한 background 는필요하지않으나, protocol 의기본적인이해는하고있다는가 정에서설명하였다. 4

5 2. Introduction 범위 본문서가다루고있는주요내용은 ITU-T 의 G 의 Chapter 11, Appendix I 및 II 이며, Class 의설명을위하여 Chapter 9 부분도일부분포함되어있다. OMCI 를왜만들었을까? FTTH 을구성할수있는주요시스템으로는 E-PON, WDM-PON, 그리고 G-PON 과같은시스템이있다. 이중에 GPON 시스템에서채택하여만든것이 OMCI 인데, OMCI 의목적은아주간단하다. 우선 FTTH 시스템은전화국에설치하는 OLT 와가입자단의 ONU/ONT 로 ( 아래부터는 ONU 로부른다 ) 구성이되는데, 일반적으로 OLT 를한번설치하면그제조회사의 ONU 만사용해야한다. 이른바제조사에대한 Lock-in 이발생하게되는데, 장비를구매하는 FTTH 사업자에게는썩기분좋은일이아니다. GPON 의 OMCI 는타사간의 OLT-ONU 연동을보장하여, FTTH 사업자가마음에드는 OLT 제품과 ONU 제품을마음대로사용할수있도록보장하겠다는것이다. A 사 OLT B사 ONU C사 ONU ONU ONU D 사 ONU ONU OMCI 5

6 3. OMCI Protocol G-PON 은 B-PON 에서발전한시스템이며, 이는 ATM 을기반으로하기있기때 문에, OMCI 의 PDU 는모두 53 byte 으로되어있다. 왼쪽부터하나씩알아보자. Figure 11-1/G GEM Header GEM Header 는 GPON 의 H/W 부분에서사용하므로 OMCI 에서는큰의미가없다. Transaction correlation identifier Transaction correlation identifier 는간단하게 TID 라고부르는데, 용도는간단하다. OLT 에서 ONU 로여러개의 Request 를동시에보내는경우, 돌아온 Response 가어떤 Request 의것인지알수있도록 OLT 나름대로의숫자를적어보내는것이다. 이를위해 ONU 는 OLT 로부터받은숫자를그대로돌려주도록되어있다. 약간의기능을추가하여 TID 의첫번째 Bit 를 Priority 용도로사용하고있는데, 1 인경우에 High Priority 로 ONU 가처리하도록되어있다. 그러나대부분의경우, ONU 에서오래걸리는 OMCI Request 가별로없기때문에, 실제로의미는크게없어보인다. (Retransmission 와관련된 TID 에대한설명은 6.Special concepts에서이어진다.) Message Type Message Type 은아래와같이 4 가지로구분되어있는데, 이또한아주간단하다. Figure 11-2/G 오른쪽부터설명을하면 MT 는 Message type 이다 ( 또? = 그렇다. 이름이동일하다. 이런 ) MT 는 5 bit 이니총 32 개의종류를나타낼수있는데 4 부터 28 까지사용 한다. 다음의 Table 은 Message type 의 encoding 값이다. 6

7 언뜻보면어려워보이지만, 하나씩살펴보면매우간단하다. 예를들어 MT = 4 라고하는것은 Create 을의미하고, 이는 OLT 가 ONU 에뭔가를만들라고하는 것이다. 7

8 다음은 6 번 bit 인데, 이를이해하기위해 Create operation 의동작을살펴보자. 1. Create Request OLT 3. Create Response ONU 2. Create MIB 그림과같이 OLT 가 ONU 에 CREATE Request 를보내고, ONU 는 MIB 에생성한 이후에 OLT 에게 CREATE Response 를보내 transaction 이완료되는형태이다. Message Type 만보면 CREATE Request 와 CREATE Response 가동일하기때문에, 이를구분하여주기위하여 AK bit 를사용한다. AK 가 0이면 Request 이고, 1 이면 Response 가되는것이다. 규격에서는 Response 와 Acknowledgement 를동일한의미로함께사용하고있다. 7 번 bit 인 AR 은 Acknowledgement Request 의약자로, Acknowledgement 즉 response 의요청여부를나타낸다. AR 이 1이면 ONU 는 Response 를보내고, 0 이면보내지않는다. 마지막으로 8번 bit 인 DB 는 Reserved bit 로항상 0을사용한다. Device Identifier Device Identifier 는 0x0A 로 fix 되어있다. Message Identifier Message Identifier 는 4 byte 으로되어있으며이는아래와같이 ME (Managed Entity) 의 Class 와 Instance ID 로구분된다. ME Class (2 octet) ME Instance (2 octet) 8

9 우선 ME Class 와 Instance 의개념을설명하기전에실제시스템의모습과 MIB 의 형태에대해서알아보자. slot 1 slot 2 slot 3 Equipped Equipped Blank 위시스템을보면 Slot 이 3 개있고, 1 번과 2 번에는 Circuit pack, 즉유니트가실 장되어있다. 3 번은비워져있는상태이다. 이를 MIB 에서나타내면아래와 같이표현된다. Class 2. ONT Data Instance 0x Cardholder 0x0001 0x0002 0x Circuit pack 0x0001 0x0002 참고로, MIB 은 Instance 의모임을말하는것으로 ONU 내부에는오른쪽 Box 부분 만구현된다. 2. ONT Data 는나중에설명하기로하고, 5. Cardholder 를보면실제시스템과같이 Instance 가 3개존재한다. 6. Circuit pack 은 Cardholder 에실장되는유니트를말하는데, 시스템과같이 Instance 가 2개존재함을알수있다. Slot 3 는 Blank 이다. 이번에는 MIB 이위와같이구성되어있다는가정아래, OLT 에서 ONU 의정보를읽어오는경우를살펴보자. 그중에서 Slot 1 에어떤 Circuit Pack 이실장되어있는지를알아보자. OLT 에서 Slot1 의 Circuit pack 에해당하는 Instance 에 GET Request 를보내게된다. 그렇다면 Circuit pack 의 Instance 0x0001 을지칭은어떻게하는가? 간단하다. ME Class ID 인 6과 ME Instance ID 인 0x0001 을주면해결된다. 이두가지를합친것이바로 Message Identifier 이다. 쉽게말해, Message Identifier 는 ONU 의 MIB 상에서하나의 ME Instance 를지칭하 기위한것이다. 9

10 Message Contents Message Contents 부분은 Message Type 과 AK field 에따라서그형태가달라진다. 예를들어 Create Request, Create Response, Get Request, Get Response 별로다른형태를가지게된다. 이부분은양이많기때문에 5.Operations에서알아보도록하자. OMCI Trailer OMCI Trailer 는 8 byte 으로써, 앞의 4 byte 은 0x 을사용하고, 나머지 4 byte 은 32-bit CRC 를사용한다. 여기의 CRC 는 ITU-T Rec. I 임으로주의하도록한다. 이로써 OMCI 의 53 byte 의각부분별의의미에대해이해가되었을것으로예상된다. 결국중요한부분은 TID, Message Type, Message Identifier, Message Contents 의 4부분에불과하다. 10

11 4. MIB Description 이제는 ONU 의 MIB 정보에대해조금더자세히알필요가있다. MIB description 이란 MIB 이어떤식으로구성이되어있는지에대한표준규격을 말한다. 이름은거창하지만하나씩살펴보면아주쉽다. 전 Section 에서살펴본 MIB Instance 의내부를열어보면아래의그림과같이되어 있다. Class 2. ONT Data Instance 0x Cardholder 0x0001 0x0002 0x Circuit pack 0x0001 0x0002 Managed entity id 0x0002 Type 24 Number of ports 4 Serial number 2209 Version 3.1 g Instance 는하나이상의 attribute 로구성이되어있다. 위의그림에서는 6. Circuit Pack 의 Instance 0x0002 의내부의모습을본것인데 attribute 가 5개표시되어있다. 동그라미안에서왼쪽에있는것은 attribute 이름이고오른쪽에있는것은 attribute 의값이다. 예를들어 2번째 Type 의값은 24 이고, 3 번째 Number of ports 는 4 이다. Type 에서 24 의의미는 10/100 Base-T type 임으로, 결과적으로이 Circuit pack 은 4-port 용 10/100 Base-T Card 임을알수있다. 이와같이각 Class 별로 Attribute 의정보를서술해놓은것이바로 MIB description 이다. 아래는 Circuit Pack class 의 MIB description 이다. 이해를돕기위해주요부분만포함하였다. 이제, 각부분을살펴보기로하자 Circuit Pack This managed entity models a circuit pack that is equipped in an ONT slot. For ONTs with integrated interfaces, this managed entity may be used to distinguish available types of interfaces. 11

12 Relationships An instance of this managed entity is contained by an instance of the cardholder managed entity Attributes Managed entity id: This attribute uniquely identifies each instance of this managed entity. Its value is the same as that of the cardholder managed entity containing this circuit pack instance. (R, Set-by-create (if applicable)) (mandatory) (2 bytes) Type: This attribute identifies the circuit pack type. This attribute is a code as defined in table /G The value 255 means unknown or undefined, i.e., the inserted circuit pack is not recognized by the ONT or is not mapped to an entry in table /G In the latter case, the equipment ID attribute may contain inventory information. Upon autonomous ME instantiation, the ONT sets this attribute to 0 or to the type of the circuit pack that is physically present. (R, Set-by-create (if applicable)) (mandatory) (1 byte) Number of ports: This attribute is the number of access ports on the circuit pack. If the port mapping package-g is supported for this circuit pack, this attribute should be set to the total number of ports of all types. (R) (optional) (1 byte) Serial number: The serial number is unique for each circuit pack. Note that the serial number may contain the vendor id and/or version number. For integrated ONTs, this value is identical to the value of the serial number attribute of the ONT-G managed entity. Upon creation in the absence of a physical circuit pack, this attribute comprises all spaces. (R) (mandatory) (8 bytes) Version: This attribute is a string that identifies the version of the circuit pack as defined by the vendor. The value 0 indicates that version information is not available or applicable. For integrated ONTs, this value is identical to the value of the version attribute of the ONT-G managed entity. Upon creation in the absence of a physical circuit pack, this attribute comprises all spaces. (R) (mandatory) (14 bytes) Actions Vendor id: This attribute identifies the Administrative state: This attribute locks (1) and unlocks (0) the functions Operational state: This attribute indicates whether or not the circuit pack is capable of Get, set Create, delete: Optional, only when plug-and-play is supported. Reboot: Reboot the circuit pack. 12

13 Notifications (ITU-T G p61) Class Circuit Pack 은 Class 의이름이다. 그아래에는관련설명이있다. 사실 Class 이름은사람을위한것이며 OLT 와 ONU 간의통신에는 Class ID 만을사용한다. Class ID 는아래의 table 에정의되어있는데, 예제인 Circuit Pack 은 6 번임으로알수있다. 13

14 Relationships Relationships 부분은다른 Class 와의관계를나타내는것으로, Cardholder class 와연 결된다고적혀있다. Attributes Attributes 부분에는각 attribute 에대한 description 이포함되어있다. 모든 Class 에는 Managed entity id 가포함되며, 항상맨처음에서술되어있다. Attribute 에는이름과설명이포함되어있다. Attribute 의이름또한, Class 의이름과마찬가지로사람을위해서만든것이다. Class 와다른점은 attribute 의 encoding 은 MIB description 의순서대로하는것이다. 예를들어, Circuit Pack class 의첫번째 attribute 는 Type 이고, 두번째 attribute 는 Number of Ports 이다. ( 참고로 Managed Entity id 는 Message Identifier field 를사용한다 ) Type 1 byte 가오고, 그다음 Number of Ports 의 1 byte 가오게된다. 이를해석하기위해서는 OLT 와 ONU 가동일한 MIB description 규격을가지고있어야한다. 이에는길이, optional 여부등이포함되며각각의설명은아래에있다. 참고로, OMCI 에서사용할수있는 attribute 의최대수는 16 개이기때문에 MIB description 의 attribute 는항상 16 개를넘지않는다. 물론 Managed Entity id 는제외하고이다. 14

15 각 Attribute 의마지막부분을보면 3 개의괄호 ( ) 가항상표시되어있다. 이부분 (R, Set-by-create (if applicable)) (mandatory) (2 bytes) 우선맨마지막의괄호는해당 attribute 의길이를나타낸다. (2 byte) 는 attribute 의길이가 2 byte 라는것을의미한다. 그앞의 (mandatory) 는이 attribute 가항상존재해야한다는것을의미한다. 이에반해 (optional) 은존재할수도있고존재하지않을수도있음을의미한다. 이부분에대해서는 Optional attribute 부분의설명을참조한다. Permission (R, Set-by-create (if applicable)) 부분이 permission 인데여기에서 (if applicable) 은큰의미가없기때문에, (R, Set-by-create) 으로이해하면된다. R and Set-by-create 이라는의미인데, 여기서 R 은 Read 할수있음을나타내고, Set-by-create 은 ME Instance 를 Create 시포함하는 attribute 를의미한다. W 는 Write 할수있는 attribute 이다. 예를들어, Read 를할수없는 attribute 에대해 OLT 가 GET request 를내리면, ONU 는 error 를 return 하게된다. Set 을할수없는 attribute 에대해 SET request 를내리면마찬가지로 error 를 return 하게된다. 비슷하게 CREATE Request 에는모든 Set-by-create attribute 가포함되어야한다. Actions 해당 Class 에서사용할수있는 Operation 을의미한다. 위의예제는 GET, SET, CREATE, DELETE, REBOOT operation 이가능하다는것을알수있다. 각 Operation 의미는 5.Operations부분에서소개된다. Notifications Notification 에는 3가지가있다 - AVC, Alarm, TCA. AVC 는 attribute 의값이변경된경우에 OLT 에게이를알려주는것이다. Alarm 은경보이고, TCA 는 PM 의값이 threshold 를넘어설때발생하는 notification 을말한다. 위의예제를보면 Circuit Pack class 는 AVC 와 Alarm 을지원함을알수있다. 자이제, AVC, Alarm, TCA 에대해서조금더자세히알아보자. 15

16 AVC AVC 는 attribute 의값이변경되는경우에이를 OLT 에알려주는 Notification 이다. (OLT 에의해서변경된경우에는이를알려주지않는다 ) Circuit Pack 예제의 MIB description 을보면 7 번째의 attribute 인 Operational State 의값이변경되는경우에이를 OLT 에게알려주도록되어있다. AVC 의내용은변경된 attribute list 와 attribute 의새로운값을보내준다. Attribute list 는 mask 를사용하는데 16 개를표현하기위하여총 2 byte 를사용한다. 아래그림과같이해당 bit 가 1이면관련 attribute 가포함됨을의미한다. 이 attribute mask 는차후에설명될 GET, SET, CREATE 에서도동일하게사용된다. 예를들어, 0x80 0x00 은 Attribute 1 번이라는것을의미하고, ( b) 0x81 0x10 은 attribute 1 번, 8 번그리고 12 번이라는것을의미한다. ( b) Alarm Alarm 은 ONU 경보의발생과해제를 OLT 에게알려주는역할을한다. Circuit Pack 의경우를보면 0부터 5까지총 6개의 Alarm 이정의되어있으며, 208 부터 223 까지는비표준화된부분으로배정되어있다. Alarm 의 PDU 는아래그림과같이 28 byte 를사용하여총 224 개의 alarm 의 ON/OFF 를표시할수있다. Alarm PDU 에는 Alarm Sequence Number 가포함되는데, 처음에는 1 부터시작하여 발생할때마다 1 씩증가시킨다. 255 가넘는경우에는 1 부터다시시작하게된 다. 16

17 TCA 마지막인 TCA 는다음예제에서설명하기로한다. TCA 를이해하기위해서는 PM 을먼저알아야하기때문이다. PM 여기서 MIB description 의예제를하나더살펴보기로하자. PM (Performance Monitoring) 관련된 GEM port performance monitoring history data 이다 GEM port performance monitoring history data This managed entity collects performance monitoring data associated with a GEM port network CTP. Instances of this managed entity are created and deleted by the OLT. For a complete discussion of generic PM architecture, refer to clause I.1.9/G Relationships An instance of this managed entity is associated with an instance of the GEM port network CTP managed entity. Attributes Managed entity id: This attribute uniquely identifies each instance of this managed entity. Through an identical ID, this managed entity is implicitly linked to an instance of the GEM port network CTP. (R, Set-by-create) (mandatory) (2 bytes) Interval end time: This attribute identifies the most recently finished 15-minute interval. (R) (mandatory) (1 byte) Threshold data 1/2 id: This attribute points to an instance of the threshold data 1 managed entity that contains PM threshold values. Since no threshold value attribute number exceeds 7, a threshold data 2 ME is optional. (R, W, Set-bycreate) (mandatory) (2 bytes) Lost packets: This attribute counts background GEM frame loss. It does not distinguish between packets lost because of header bit errors or buffer overflows; it records only loss of information. (R) (mandatory) (4 bytes) Misinserted packets: This attribute counts GEM frames misrouted to this GEM port. (R) (mandatory) (4 bytes) Received packets: This attribute counts GEM frames that were received correctly at the monitored GEM port. (R) (mandatory) (5 bytes) 17

18 Actions Received blocks: This attribute counts GEM blocks that were received correctly at the monitored GEM port. (R) (mandatory) (5 bytes) Transmitted blocks: This attribute counts GEM blocks originated by the transmitting end point (i.e., backward reporting is assumed). (R) (mandatory) (5 bytes) Impaired blocks: This severely errored data block counter is incremented whenever one of the following events takes place: the number of misinserted packets reaches its threshold, the number of bipolar violations reaches its threshold, or the number of lost packets reaches its threshold. Threshold values are based on vendor-operator negotiation. (R) (mandatory) (4 bytes) Create, delete, get, set Get current data (optional) Notifications 다행히도 Circuit Pack 의예제와크게다르지않다. 차이점이라고하면단지 PM 이라는특성뿐이고, 이제부터이를하나씩알아보도록하자. PM 이라는것은 port 의상태를말한다. 예를들어수신받은 packet 의수와같은것이다. PM history 란이 port 의상태의기록을저장하는곳이다. 일반적으로 15 분단위로내용을 PM history 에저장하게된다. ID PM history 는 port 당하나씩존재하기때문에 PM history 의 ID 는 port 의 ID 를그대로사용한다. PM history 의 ID 를보고어떤 port 의것인지알수있도록말이다. 문서에서는 GEM port network CTP 라는거창한용어를사용하고있는데, 이는결국 port 를의미하는것이다. TCA (again) Notifications 부분을보면지난예제에서없었던 TCA 가포함되어있다. Table 의모양은 Alarm 과비슷한데 Threshold value attribute # 라는것이추가되어있다. 자세한의미를설명하기전에우선 TCA 가무엇인지이해를해보자. 매우간단하다. 18

19 Lost packets attribute 는 port 에서잃어버린 packet 의수를 count 하는곳이다. 예를들어, 이 count 가 1000 을넘어서는경우에 OLT 가알고싶다고하자. 이때, 이런일을부탁할수있는곳이바로 TCA 이다 이라는것을 threshold 라고부르는것이고, TCA 는바로이 threshold 를넘어섰다는의미의경보이다. (Threshold Crossing Alarm) 그러면 threshold 값은 MIB instance 의어디에있는것인가? 우선 table 의 0 번째 TCA 를살펴보자. Lost Packets 라고쓰여있다. 그다음 column 에 Threshold value attribute # 라고되어있는데, threshold 값이아닌 index 같은것이있는것같다. 도대체 threshold 값은어디있는것인가? 아래의그림을보면이해가될것이다. Threshold data 1 Managed entity id Threshold data 1/2 id Lost Packets GEM port performance monitoring history data 0x100 0x Managed entity id 0x30 Threshold value 1 Threshold value Threshold value 7 (optional) Threshold data 2 Managed entity id 0x30 Threshold value 8 Threshold value Threshold value 14 Threshold data 1 / Threshold data 2 예제 Class MIB description 의 attribute 3 번째를보면 Threshold data 1/2 id 라는 attribute 가보인다. 그림에서와같이이 attribute 는새로운 Class 인 Threshold data 1 과 Threshold data 2 의 instance 를가리킨다. 바로이곳이 TCA 에사용되는 Threshold 값을저장되어있는곳이다. TCA notification table 의 1 번째 entry 의 Threshold value attribute # 에서 1 이라는의미는바로 threshold 의값이 Threshold value 1attribute 에있다는것을의미한다. 아하. Class 가 2 개로나누어져있는이유는 CREATE 으로한번에설정할수있도록 attribute 가 7 개로한정되어있기때문이다. 19

20 이제다시 TCA 로돌아가자. 흥미롭게도 TCA 의전송은 Alarm 의 PDU 를그대로사용한다. 이유는 TCA 와 Alarm 을동시에사용하는 ME 가거의없기때문이다. 혹있다면 Number 를겹치지않게사용하게된다. 이러한이유로일반적으로발생만있는 TCA 와는달리 OMCI 에서는 TCA 의발생 / 해제의상태가존재하게된다. TCA 는 15 분단위로 Clear 된다. 이로써 MIB description 을어떻게읽는지살펴보았다. 자신이생겼다면 G 의 Chapter 9 를섭렵해보기바란다. 20

21 5. Operations 이제각 Operation 에대해알아보기로하자. OMCI Protocol 에서잠시미루었던 Message Contents 부분에대한설명도포함된다. Appendix II.2 Message Layout 부분을함께보면서아래의내용을확인하는것을추천한다. CREATE CREATE operation 은 OLT 가 ONU 에 ME instance 를생성할때사용한다. 각 ME Class 의설명을보면, ONU 에서자동으로 create 되는지, OLT 가 create 을하는지여부가설명되어있다. 마찬가지로 Class 의 Actions 부분을보면 CREATE 이포함되어있다. 만약, CREATE action 이없는 instance 가 CREATE 요청을받으면 ONU 는 error 를 return 한다. CREATE request 를살펴보면, ME Class ID 와 Instance ID 로생성할 instance 를지정한다. 아울러 Create 에필요한 attribute 의내용을보내주게된다. ME Class 의설명을보면 Set-by-Create 이라고되어있는부분이있는데이 attribute 의값을모두포함하여전달하게된다. 설령그 attribute 가 optional 이고 ONU 에서구현하지않는것이라할지라도포함되어야하며, 이러한경우해당 attribute 의영역은 0 으로채워지게된다. CREATE request 를받은 ONU 는, 해당 ME Instance 를생성한후에 CREATE response 를보낸다. 21

22 CREATE Response 의 message contents 부분을보면 Result field 가있다. 성공인경우에는 0000 을사용하여정상적으로생성되었다는것을나타낸다. 나머지는 error 를나타내는데, 그의미는아래와같으며다른 Operation 에서동일하게사용한다. [ Error Result ] Command processing error 아래의 'Command not supported' 나 'Parameter error' 에해당하지않는 error 가발생하 였음을의미한다. Command not supported CREATE action 이지원되지않는 ME instance 를생성하는경우이다. Get, Set, Delete, Test, Alarm, Reboot, Get Next 등의 command 도동일하게적용된다. Parameter error 수신한 Request 의정보가올바르지않은경우이다. 예를들어, Create request 에서사용된 attribute 의값이정상적이지않은경우가이에해당된다. Error 가발생하는경우어떤 attribute 가원인인지를표시하기위하여 Attribute execution mask 가사용되며, 이에대한설명은바로아래에있다. 22

23 Unknown managed entity 지원되지않는 ME Class ID 를사용한경우이다. Unknown managed entity instance Create 이외의경우에는, 지정한 ME Instance ID 가존재하지않는다는것을의미한다. 예를들어, 존재하지않는 ME Instance 의 attribute 를 Get 하는경우가이에해당한다. CREATE request 의경우에는 Valid 하지않은 Class 의 ID 를생성하고자하는경우에이 error 가발생하게된다. Device busy ONU 의처리용량이넘쳐 timeout 이발생하는경우이다. Attribute(s) failed or unknown Create 에서는사용하지않고, Get, Set. Get current 에서발생하는 error 이다. 구현되지않은 optional attribute 를 access 하는경우에해당 error 가발생한다. 혹은 invalid 한값을 set 하는경우에발생한다. 이 error 가발생하는경우에, 16 개중어떤 attribute 가문제인지알수없기때문에그정보를알려주는 Optional attribute mask 와 Attribute execution mask 를사용한다. Attribute Execution mask 는바로아래에서, Optional attribute mask 는 Set operation 부분에서설명이이어진다. Instance exists Create 하려는 Instance 가이미존재하는경우이다. Create 이외에는사용하지않 는다. [ Attribute execution mask ] Attribute execution mask field 는 Result code 가 0011 혹은 1001, 즉 parameter error 혹은 attribute(s) failed or unknown 인경우에만의미를가진다. CREATE request 의경우에 Parameter error 는수신한 attribute 의값이잘못되었다는것을의미하며 Attribute execution mask 는어떤 attribute 가잘못되었는지는알려준다. 2 byte 를사용하고있는데이는총 16 개의 attribute 를표시하기위함이다. 문제가있는 attribute 의 bit 1 의값을가지고, 정상인 attribute 는 0을가지게된다. 동시에여러개의 attribute 에문제가있는경우에는, 문제있는모든 bit 에 1이표시된다. 23

24 DELETE Delete 는 OLT 가 ONU 의 instance 를삭제하는경우에사용한다. ME Class 에 Delete action 이포함되어있어야정상적으로동작한다. SET Set 은 OLT 가 ONU 의 Attribute 값을변경하는 operation 이다. 다른 Operation 과마찬가지로 instance 를지정하기위하여 ME Class 와 Instance ID 를사용한다. Attribute 의 Set 은하나이상의 attribute 를동시에할수있다. 이를위하여어떤 attribute 들을 Set 하는지표현할수있도록 Attribute mask 2 byte 를사용한다. 1 로설정된 attribute 의값들이다음부분에순서대로 encoding 된다. ONU 는해당 Instance 를찾아원하는 attribute 의값을변경하고 SET response 를 보내준다. 만약, 문제가발생하면 Create 과비슷하게 Result code 에 error code 가 전달된다. Optional Attribute mask Optional attribute 중에서 ONU 에서구현되지않은 attribute 를 SET 하는경우에는 attribute(s) failed or unknown 의 error 가발생하며, 어떤 attribute 가문제인지를표시하기위하여 Optional Attribute mask 를사용한다. 문제가있는 attribute 의 bit 가 1 로표시된다. Attribute Execution mask 는 Create 에서와동일하게 OLT 로부터 invalid 한값을받 은경우에이를알리기위하여사용한다. GET Get operation 은 ONU 의 attribute 값을읽어올때사용한다. 요청하는 attribute 의 list 는 Attribute mask 를사용하여설정하게된다. ONU 는요청받은 attribute 들의값을 GET response 에담아보내준다. 그런데, 혹시 OLT 에서 attribute mask 를잘못설정해서 Attribute 들의전체크기가 GET response 에서담을수있는 Data 보다큰경우에는어떻게하는가? 두가지방법이있다. ONU 는담을수있는만큼의 Attribute 들의값만 GET response 로보내주는것이 24

25 한가지방법이다. OLT 는 Get request 의 attribute mask 와비교하여어떤 attribute 가빠져있는지알수있으므로필요한부분을추가로요청하여처리하게된다. 다른방법은 error 를 return 하는방법이다. OLT 는자신이보낸 attribute mask 에문제가있는것을인식하고, 이를줄여서 GET request 를다시보내는방식이다. 선택은구현하는사람에게맡겨져있다. GET ALL ALARMS GetAllAlarms 는 OLT 가 ONU 의 Alarm 상태에대한 Sync 를다시맞추는데사용한다. OLT 는 ONU 의경보에대한상태를항상유지하고있어야하는데, 이상태를 Alarm Sequence number 를사용하여유지하게된다. ONU 는경보를보내면서 Alarm Sequence number 를증가시킨다. OLT 도수신할때마다값을증가시키는데통신장애등의이유로이 Alarm Sequence number 가달라지는경우에, Alarm 의 sync 가깨졌다고판단한다. 이러한경우에 OLT 는 ONU 의 alarm 정보를다시가져오기위한동작을한다. 이때사용하는것이 GetAllAlarms 이다. OLT 는아래의그림과같이, ONU 에게 GetAllAlarms request 를보낸다. 이때 ARC 를선택할수있다. ARC 에대해서는아래를참조한다. ONU 는 GetAllAlarms response 로 commands 의개수를보내준다. Command 의개수는발생된경보가있는 ME instance 의개수를의미한다. OLT 는이개수만큼 GetAllAlarms Next Request 를보내고 ONU 는각 sequence no 에해당하는 Alarm 의정보를보내준다. OLT ONU GetAllAlarms request ARC=<1 0> GetAllAlarms response no of commands GetAllAlarms Next request seq no = 0 GetAllAlarms Next response Alarms GetAllAlarms Next request seq no = 1 GetAllAlarms Next response Alarms... GetAllAlarms Next request seq no = n GetAllAlarms Next response Alarms 25

26 ARC ARC 란 Alarm Report Control 의약자로써, 아래의그림과같이 ARC 가 enabled 되면 Alarm 이발생해도 OLT 에게보고하지않는기능을말한다. ARC 는 ARC_interval 과함께사용하는데 ARC timer 라고이해하면된다. 1~254 분까지설정가능하며, timeout 이발생한다음, Alarm 이없는상태가되면 ARC 가 0으로자동변경된다. ARC_interval 을 0으로설정하면 Alarm 이 clear 될때, ARC 를 0으로변경한다. ARC_interval 이 255 이면 timeout 기능을사용하지않는다는의미이다. OLT disabled ARC = 0 Alarm Alarm Storage OLT enabled X ARC = 1 ARC_interval Alarm Alarm Storage ONU 는 GetAllAlarms 에서 ARC 에관계없이모든 Alarm 을요청할수있기때문 에, 이런경우를위해 Alarm 의상태를늘유지하고있어야한다. (Alarm Storage 의용도 ) Alarm Sequence number 와의관계 Alarm Sequence number 는 alarm 이발생할때마다증가하는 sequence number 를말한다. 이 Alarm Sequence number 는 GetAllAlarms request 를받으면 1 부터다시 reset 하여사용한다. 이렇게하는이유는간단하다. GetAllAlarms 를수행하고있는동안에새로운 Alarm 이발생할수있는데, OLT 는새로발생한 Alarm notification 을 GetAllAlarms 가끝난후에 Alarm MIB 에적용시켜야하기때문이다. 그러기위해서는어떤 notification 부터가새로시작한것인지알아야하는데, 그런이유로 Alarm Sequence number 를다시 1부터사용하도록하는것이다. 26

27 MIB Upload MIB Upload 는 OLT 가 ONU 의 MIB 정보를모두가져올때사용한다. ONU 의모든 Instance 를 OLT 에게알려주는것이다. ( 보고하지않도록되어있는 Class 는제외이다. 예, SIP config portal) Protocol 은간단하다. OLT 는 ONU 에게 Instance 가총몇개이냐고물어본다. 예를들어, ONU 가 10 개라고답을하면, OLT 는 1번째것줘, 2 번째것줘, 하면서 10 번을물어보면서모든 Instance 의값을읽어오게된다. 이러한 Protocol 이아래의그림이다. OLT ONU MIB Upload MIB Upload response no of subsequent commands MIB Upload Next cmd seq no = 0 MIB Upload Next response Attribute values MIB Upload Next cmd seq no = 1 MIB Upload Next response Attribute values... MIB Upload Next cmd seq no = n MIB Upload Next response Attribute values 그런데, 그림을보면 MIB Upload response 에서 no of instances 대신에 no of subsequence commands 라고표시되어있다. 왜다른용어를사용했을까? 이것또한간단하다. MIB Upload Next response 에담을수있는크기는 26 byte 인데, instance 의 attribute 들의총합이이것보다크다면여러번에나누어서담아야한다. 그래서 MIB Upload Next command 를불러야하는숫자라는의미로서 no of instances 대신에사용하는것이다. 27

28 MIB Reset MIB Reset 은 ONT 의 MIB 상태를초기화하는것이다. OLT 가생성한 Instance 들은모두초기화된다. 일반적으로 OLT 는최초에 ONU 에게 MIB Reset 를보낸후에, MIB Upload 를수행하는방식을사용한다. ALARM Alarm 은 ONU 에서 OLT 로경보의발생및해제를알려주는 notification 이다. 자세한설명을이미 ME Class 부분에서하였기때문에 PDU 를이해하는데큰문제는없을것으로보인다. Attribute Value Change (AVC) AVC 는 Attribute 값의변경을 ONU 가 OLT 에게알려주는 notification 이다. 자세한설명을이미 ME Class 부분에서하였기때문에 PDU 를이해하는데큰문제는없을것으로보인다. TEST TEST operation 은말그대로시험을할때사용한다. 예를들어 Circuit Pack 이정상적으로동작하는지여부를시험하거나, ping test 를하거나, 특정 port 의 voltage 를측정하는경우이다. Test 는주로 OLT 가시작하는데, 간혹 ONU 가스스로시험을하는경우도있다. OLT 가시작하는시험의 procedure 는아래와같다. OLT ONU Test test = self-test Test Response Result Test Result Result (failed passed not completed) OLT 는 ONT 에게 TEST request 를보낸다. 이때시험의종류를적어서보낸다. ONU 는 TEST Response 에서정상적으로시험이시작되었음을알린다. 시험의결과는차후에 TEST Result Notification 으로전달된다. Test PDU 의 format 은현재 3 가지를사용하고있다. ONT-G 및 Circuit Pack 용, IP host config data 용그리고 POTS UNI and PPTP ISDN UNI 용이다. TEST Response 는 format 에상관없이동일 28

29 한것을사용하지만 TEST Result notification 은 test 종류에따라서 5 가지형태를 띈다. 자세한내용은규격을참고하길바란다. 위와같이일반적으로 Test 는 OLT 의요청에의해시작된다. 그러나, self-test 의 경우에는 ONU 에의해스스로시작될수도있는데, 아래와같이 ONU 가시험을 하고그결과를 OLT 에게알려주는방식을사용한다. OLT Test Result Result (failed passed not completed) ONU tid = 0 TEST Result notification 의 format 은동일한것을사용하기때문에 ONU 가스스로발생시켰다는의미를표시하기위하여 TID (Transaction correlation identifier) 에 0을사용한다. OLT 에서시작된 Test 의경우에는 TEST Request 에사용한 TID 를 TEST Result notification 에서그대로사용하게된다. SW Image Download S/W Image 0 1 S/W Image 는 2개가존재한다고가정하고있다. 0 번과 1번이있는데, 이중에하나를현재수행하고있다는가정이다. 독특한개념은현재수행하고있는 Image 와 Reboot 이되었을때수행할 Image 의선택이따로되어있다는점이다. 공식용어를살펴보면, 현재수행하고있는것을 Active 라고하고, Reboot 시수행할 Image 를 Commit 이라고부른다. 현재실행중이 Image 와다음에실행할 Image 가다를수있는것이다. 여기에 Valid 라는간단한개념이하나더사용되는데, Image 의상태가정상여부를나타낸다. 특이한점은 ONU 의 memory 가작다는가정아래 Download 가시작되면 Image 의상태는 invalid 로된다는사실이다. ( 구현상으로보면 8K 단위로 Flash 에구우라는이야기로들린다 ) 29

30 S/W Image Equipment CP (1) CP (2) CP (3) S/W Image S/W Image S/W Image 위의그림은 Equipment 에서사용하는 S/W Image 를보여준다. 상단에 Equipment(ONT-G) 에서사용하는 Main S/W Image 는물론이고, 하단에는각 Circuit Pack 의 S/W Image 도 download 할수있도록되어있다. Circuit Pack 은단위로각 2개의 S/W Image Instance 를사용하고있다. Circuit Pack 이 3개임으로 2 X 3 = 총 6개의 S/W Image ME Instance 를사용하고있다. Instance ID 는 2 byte 를사용하는데, 앞의것이 ONT-G, Slot no 와같이장소를의미하고, 뒤의것이 Instance 의번호를의미한다. (0 혹은 1) Multiple target download S/W Image download 는일반적으로한번에하나의 instance 를받도록되어있다. 그러나, 종류가같은 Circuit Pack 의경우에는동일한 S/W Image 를반복적으로 down 받아야하는문제가있다. 이러한문제를해결하기위하여한번만 S/W Image 를전송하고여러개의 Circuit Pack 을동시에 Upgrade 할수있는기능을제공한다. 이것을바로 Multiple download 라고한다. ( 하나만받는것은 single download 이다 ) 최대 9 개의 Instance 를동시에 Upgrade 를할수있으며, 동일한 Circuit Pack 의 instance 0 과 instance 1 을동시에받을수도있도록되어있다. Multiple download 는 ONU 의 Optional feature 이다. 이제 S/W Download Protocol 을살펴보도록하자. Protocol 이복잡해보이지만, 사용하는개념을이해하면의외로간단하다. 30

31 Image Segment Segment Segment Segment Section Section Section Section Section Protocol 에서, Image 는여러개의 Segment 로이루어지며, Segment 는다시여러개의 Section 으로이루어진다고가정한다. 각 Section 의크기는 Download Section PDU 인 31 byte 으로 fix 되어있다. 이에반해몇개의 Section 을모아하나의 Segment 를만들지는 OLT 와 ONU 가 Negotiation 을통하여 Run-time 상에정하게된다. 이를 Window Size 혹은 Section Size 라고부른다. 최대값은 256 를넘을수없게되어있다. 참고로, 각 Section 의크기는 31 byte 임으로 Segment 의최대크기는 31 X 256 = 7936 byte 이다 ( 규격에는 8K = 8192 라고되어있다 ) Image 의전송은 Segment 단위로일어난다. OLT 는하나의 Segment 의전송이완료된것을확인하고다음 Segment 의전송을시작한다. Segment 내의 Section 은처음부터순차적으로 ONU 로보내진다. ONU 는 ACK 를맨끝의 section 에대해한번만하는데, 이때실패를하게되면해당 Segment 의 Section 을처음부터다시보내는방식을사용한다. 결국 Packet 의재전송은 Segment 내에서만일어난다. 모든 Segment 의내용이 ONU 에전달되면 OLT 는 End Software download 를보내 마무리를한다. CRC-32 의값이정상적이면 ONU 는성공하였음을 OLT 에알려 준다. 자이제 Protocol 을조금더자세히알아보자. Protocol 은크게 3 단계로나뉜다 - Start 단계, Download 단계, End 단계. OLT ONU (Start) Start S/W Download image Size, win size -1 Start S/W Download response image Size, win size -1 31

32 우선 Start 단계이다. Start S/W Download 를 ONU 에보낸다. 이때 Image 의크기와 Windows Size 를보낸다. 이 windows size 가 ONU 의처리능력보다크다면 ONU 는더작은숫자를 OLT 에게전달하고, OLT 는이것을 windows size 로사용한다. 이 Procedure 를 windows size negotiation 이라고부른다. 그림에보면 win size 대신에 win size -1 을사용하는데, 이것또한간단하다. win size 가 0 이라는것은사용하지않기때문에 PDU encoding 시에는 0~255 대신에 1~256 을사용한다는의미이다. OLT ONU Download Section section no = 0 Segment 1 Download Section section no = 1... Download Section section no = N Download Section response success, section no last section where N = (window size -1) Download Section section no = 0 Segment 2 Download Section section no = 1... Download Section section no = N Download Section response success, section no last section where N = (window size -1)... Download Section section no = 0 Segment, Last Download Section section no = 1... Download Section section no = N Download Section response success, section no last section where N = (window size -1) 다음은 Download 단계이다. Segment 1 부터마지막 Segment 까지순서대로보낸다. 각 Segment 단위를보면 Window size 만큼 data 를잘라서 Download section PDU 에실어 ONU 로보낸다. ONU 는맨마지막 section data 를수신하면, 성공여부를 Download section response 로알려준다. 성공하면 OLT 는다음 Segment 를보낸다. 혹시라도실패하게되 32

33 면, OLT 는해당 Segment 의 section 을처음부터다시보내게된다. 이렇게하여, 마지막 Segment 를다보내면 End 단계로접어든다. OLT ONU (End) End S/W Download CRC32, image size END S/W Download response success End 단계에서는 OLT 가 End S/W Download 를보내게된다. 이때 CRC32 와 image size 를보내주는데, ONU 는계산한 CRC32 와수신한값을비교하여성공여부를 OLT 에게알려준다. 성공하면 ONU 는해당 Image 를실제로 upgrade 하게된다. 참고 ) Figure /G 의그림은 S/W Download 관련 State diagram 을나타낸것이다. 개인적으로이그림에서이해가잘되지않는부분이있었는데, 그것은위의동그라미친 action 부분이었다. 처음에는이것이 reboot 하고 activate(0) 하고 commit(0) 한다는 ' 순서 ' 의의미라고생각을해서이해가안되었었는데, 결국이는 reboot 혹은 activate(0) 혹은 commit(0) 인 OR 를나타내는것이었다. Activate Image OMCI 의 S/W Image 에서 Active 란의미는현재실행중인 S/W Image 를말한다. Activate Image 는선택한 instance 의 image 를실행하라는의미이다. Image 는당연히 valid 상태이어야한다. 33

34 Commit Image Commit 는다음에 reboot 혹은초기화시에실행할 Image 를나타낸다. Commit Image 는선택한 instance 의 image 를다음에실행하도록설정하라는의미이다. Image 는당연히 valid 상태이어야한다. Synchronize Time interval number min 30 min 45 min start time now PM history data interval end time Lost packets Misinserted packets Received packets... Synchronize Time 하면장비간의시간을맞추는것으로들리지는실제로는 PM 과관련된내용이다. ONU 는 15 분단위로 PM history 를저장하게된다. 그러면언제부터 15 분을측정하는것인가하는의문이생긴다. 이를 PM 의 Start time 이라고부르는데, 그기준을정하는것이바로 Synchronize Time 이다. OLT 가 ONU 에게 Synchronize Time 을보내면그때부터 15 분단위로 PM 을저장하게된다. Interval end time (Interval number/count) PM Class 의 attribute 를보면 interval end time 이항상포함되어있다. 이것은 counter 들의내용이언제의 15min 것인지나타내는것이다. 위의그림에서보면 now 가현재시점일경우 interval end time 은바로전 15min 을가리키게된다. 적혀진숫자는각 15 분을구분하기위해사용하는 interval count 의값이다. Synchronize Time 을 ONU 가받으면 interval count 를 0으로 clear 시킨다. Reboot Reboot 은 Equipment(ONT-G) 나 Circuit Pack 을재시작하라는요청이다. ONT 는 Reboot Response 를보내고해당 equipment 혹은 Circuit Pack 을재시작한다. 34

35 Get Next Get Next 를이해하기위해서는우선 Table attribute 의특성을이해해야한다. Table attribute Table attribute 는 MIB description 의 attribute 길이에 8N 과같이되어있는 attribute 를말한다. Attribute 이름에는일반 attribute 와구분하기위하여항상 table 을포함하고있다. Table attribute 는 OMCI operation 에서허용하는 Data 의크기보다커질수있기때 문에, ( 예를들어 Get operation 의 Max 는 25 byte 이다 ) 약간의다른방법으로 attribute 의값을 access 한다. [ GET ] GET 하는방법은간단하다. GET operation 의 mask 에 Table attribute 가포함되어있는경우에는 attribute 의값을전달하는대신에총길이를 return 한다. 예를들어 8N 의 table 에 5개의 entry 가있다면 8 X 5 = 40 이 return 된다. OLT 는 GET- NEXT 를반복적으로불러 29 byte 만큼씩 data 를받는방식으로 Table attribute 의값을읽어들인다. OLT 는 ONU 의 memory 소진을막기위하여하나의 GET- NEXT 가종료된후에, 다른 table 의 GET-NEXT 를시작하는것을권장한다. [ SET ] SET 하는방법은약간더복잡하다. Table 을변경할수있는 operation 은 3 가지가있는데, 이는 Modify, Add, Delete 이다. 그러나 OMCI Operation 에는 SET 밖에없기때문에조금독특한방법으로처리한다. Permission 이 W 가포함되어있는 table attribute 의경우를보면, 항상 index 가맨처음에포함되어있다. 이를통해서 table 의 entry 를선택하게된다. 즉 Modify 에해당한다. Add/Delete 가필요한경우에는 index 와함께혹은그다음의 attribute 내에 add/delete 여부를적을수있도록되어있다. 가끔씩 add 와 modify 가함께되어있는경우도있는데, 사용한 index 의 entry 가존재하면 modify 이고, 그렇지않으면 add 로인식하는방식이다. 그러나이러한 SET 의방식은표준이라기보다는 ME 마다다르게구현되어있기때문에 MIB description 을참조하여하나씩구현해야한다. [ CREATE ] Table attribute 는 CREATE operation 으로생성할수없기때문에 Set-by-create 35

36 permission 을가지지못한다. [ AVC ] AVC 의경우에 Table attribute 는 mask 에표시만하고값은보내지않는다. OLT 가값이필요한경우에는 GET operation 을사용하여값을가져가도록되어있다. (GET-NEXT 이용 ) 아래는 MAC bridge port filter table data 의 MAC filter table 의예제이다, MAC filter table: This attribute lists MAC destination addresses associated with the bridge port, each with an allow/disallow forwarding indicator for traffic flowing out of the bridge port. In this way, the upstream traffic is filtered on the ANI-side bridge ports, and the downstream traffic is filtered on the UNI-side bridge ports. Each entry contains: The entry number, an index into this attribute list (1 byte) Filter byte (1 byte) MAC address (6 bytes) The bits of the filter byte are assigned as follows: Bit Name Setting 1 Filter/forward 0: forward 1: filter 2..7 Reserved 0 8 Add/remove 0: remove this entry (set operation) 1: add this entry Upon ME instantiation, the ONT sets this attribute to an empty table. One OMCI set message can convey a maximum of three table entries. However, OMCI does not provide robust exception handling when more than one entry is included in a set command, and multiple entries per set operation are not recommended. (R, W) (mandatory) (8N bytes, where N is the number of entries in the list) 맨끝의 8N 은 8 X N 의 table attribute 라는것은나타낸다. Attribute 의이름에도권장대로 table 이포함되어있다. (MAC filter table) Entry 를구성하는 8 byte 를살펴보면, SET operation 을위해첫번째 byte 를 index 로사용하고있다. Add/Delete 를위하여 2번째 Filter byte 의 8번 bit 를사용하고있음을알수있다. 36

37 Get Next 의 Protocol 위에서간단하게설명한 Get Next 의 Procedure 를알아보면아래와같다. OLT ONU Get Request attribute mask Get Response size Get Next Request attr mask, seq no = 0 Get Next Response attr mask, seq no = 0, value Get Next Request attr mask, seq no = 1 Get Next Response attr mask, seq no = 1, value... Get Next Request attr mask, seq no = L Get Next Response attr mask, seq no = L, value Table attribute 의값을읽으면 attribute 값대신에길이를보내준다. 길이는항상 4 byte 이다. OLT 는반복적으로 Get Next Request 를 sequence no 0 부터순차적으로보내고 ONU 는그에대한값을보내준다. Get Next 를수행하고있는동안 Table attribute 의값이변할수있기때문에 ONU 는이를복사하여사용한다. Protocol 상에는 attribute mask 가포함되어있어, 여러개의 table attribute 를동시에가져올수있도록되어있으나, ONU 입장에서보면이를복사하여야되는부담때문에동시에여러개의 table attribute 를가져오는것은권장하지않고있다. 37

38 Get Current 2 30 min 45 min now PM history data interval end time Lost packets Misinserted packets Received packets... PM current data interval end time Lost packets Misinserted... packets Received packets... Get Current 는 PM 과관련된 Operation 이다. Synchronize Time 에서본 PM history data 를한번더살펴보자. 그림에서와같이 PM history data 는 15 분전의 counter 값을가지고있다. 이에반해현재의 counter 값또한가지고있을수있다. 바로 PM current data 로표시된오른쪽부분인데, OMCI 에서는 PM current data 를 access 하기위해 class 나 instance 를추가로만들지않고 Get current 라는 operation 을사용하여이를해결하고있다. 쉽게말해 PM history data history 에대해 Get current operation 을내리면 PM history data 가아닌 PM current data 를돌려주게되는방식이다. 일반적으로 Get current 는 optional 기능이다. 이로써 OMCI 의모든 operation 에대한이해를마쳤다. 어느정도자신감이생겼다면, 흩어져있는생각들의조각을잘맞추어서커다란그림을그려보기바란다. 조각을잘이해했다고생각하더라도전체로만들면말이안되는경우가종종있기때문이다. 38

39 6. Special concepts OMCI 전반에서사용되는독특한개념들에대해서알아보기로하자. Optional Attribute 의의미 Optional Attribute 란 implementation 시에구현해도되고안해도되는 attribute 를의미한다. 어떤장비에서는존재하고, 어떤장비에서는존재하지않을수있는 attribute 를말하는것이다. 마찬가지로 ONU 장비내에서도시간이나상황에따라서 attribute 가존재할수도존재하지않을수도있다. 여기서는이러한 Optional attribute 의구현여부가 OLT-ONU 의연동에어떤영향을미치는지살펴보자. 가장기본적인것은 Optional attribute 의구현여부가 Attribute mask 에서사용하는 Attribute number 에대한영향이다. 결론은간단하다. 아무영향이없다는것이다. Class Mandatory Optional Mandatory Instance Mandatory Optional Mandatory 예를들어, 어떤 Class 가왼쪽의그림과같이 3개의 attribute 를가지고있다고하자. Mandatory attribute 이후에 Optional attribute 가있으며그다음에 Mandatory attribute 가있다. Optional field 를구현한경우에 MIB 은오른쪽과같은모습을가지게된다. Attribute mask 에서사용하는 Attribute number 는각각 1, 2, 3 을사용한다. 그렇다면 Optional field 를구현하지않은경우에 3 번째의 attribute number 에어떤 영향이있을까? 아래의그림을보면간단하다. 1 Mandatory 1 Mandatory 2 Mandatory Mandatory 왼쪽의경우에는 Attribute number 가 2 번이된다는가정이고, 오른쪽은그대로 3 번이된다는가정이다. 어떤것이답일까? 39

40 정답은오른쪽이다. Attribute 의구현여부에상관없이 Attribute 의 number 는변 경되지않는다. 이런이유로 CREATE request 때 Optional Set-by-Create attribute 부분은구현여부와 관계없이항상사용되어서보내진다. GET/SET request 의경우에는구현하지않 는 Optional attribute 를요청하면 fail 이발생하는것과대조된다. Retransmission OMCI 에서재전송은간단한구조로되어있다. OLT 가 ONU 에게 Request 를보내면, ONU 는 Acknowledge 인 Response 를보낸다. OLT 가주어진시간내에 Response 를받지못하면 OLT 는다시 Request 를보내게된다. OLT ONU request X response (ack) timeout! request Retransmission timeout 이나몇번의재전송을할지는모두 implementation-dependent 한부분이다. 추가적으로 OLT 는 response 가도착하기전에새로운 request 를보낼수있도록설계되어있다. 결국, 여러개의 request 가동시에 ONU 에서처리될수있다는의미이다. 그런데이런경우수신한 response 가어떤 request 의결과인지알수없기때문에, 이를구분하기위하여 TID (Transaction correlation identifier) 를사용한다. OLT 는각 request 별로다른 TID 를보내고, ONU 는 response 에수신받은 TID 를돌려주게된다. 40

41 OLT ONU request tid = 1 request tid = 2 response (ack) tid = 1 response (ack) tid = 2 그러면재전송이일어나는경우에는 OLT 는 TID 에어떤값을사용할까? 이전의 TID 를사용할수도있고, 새로운 TID 를부여할수도있을것이다. 답은 CREATE 이나 SET 과같이 MIB 을변경하는 operation 의경우를고려해보면알수있다. 만약새로운 TID 를사용하는경우에서의 CREATE operation 을살펴보자. Loss 가발생하여 CREATE Response 가없어졌다고가정해보자. OLT 는 timeout 발생후 CREATE 을다시보내게되는데, ONU 입장에서는두번받았기때문에실패라고결과를보내게된다. OLT 는 CREATE 이실패되었다고생각하고 ONU 는 CREATE 이성공되었다고생각하게되는것이다. 이러한상황을막기위하여 OLT 는재전송시에항상이전의 TID 를그대로사용하게된다. ONU 는이미처리한 Request 의 TID 이면실제로처리는하지않고이전에보낸 Response 를보내주는방식으로동작한다. 이를위해서 ONU 는실행한 TID 와 Response 의내용을일정기간동안기억하고있어야한다. ONU 에서는중복실행을막아주는중요한부분이다. MIB data sync OLT 는 ONU 의 MIB 정보를가지고있어야하고, 이를항상 ONU 의 MIB 과동일하게유지하고있어야한다. 그러면, OLT 는어떻게 MIB 이동기화되었다는것을알수있을까? ONT Data 의 MIB data sync attribute 의값이그역할을한다. MIB data sync attribute 는 OLT 에의해서 Instance 가생성되거나삭제되는경우에증가하게된다. 예를들어, OLT 가하나의 Instance 를생성하면자신이가지고있는 MIB data sync 값을증가시킨다. 마찬가지로 ONU 는 Instance 생성한후자신의 MIB data sync 값을증가시키게된다. OLT 는 ONU 의 MIB data sync 값을읽어 41

42 와서이두값이다른경우에는 MIB 의 sync 가깨진것으로보고 MIB sync procedure 인 MIB upload 를수행하게된다. MIB data sync 값은 OLT 에의해 attribute 의값이변경되는경우에도증가하며, S/W Download 의시작과정상종료시점에서도증가하게된다. MIB 이변경되어도 MIB data sync 값이증가하지않는경우도있는데, ONU 에서자동으로 instance 가생성혹은삭제되는경우가이에해당한다. 마찬가지로 attribute 의값이 ONU 에서자동으로변경되는경우에는 MIB data sync 값이증가하지않는다. 단, 이경우에 AVC 는발생하게된다. 문제는이 AVC 가 Loss 되는경우인데, 규격에서는 OLT 가변할수있는 attribute 를주기적으로 polling 을해서알아내야된다라고되어있다. 조금성의없는규격이다. MIB data sync 는 1 에서부터 255 까지증가한후에다시 1 로돌아온다. 맨처음 초기화되었을때 0 을가지고있으며, 그외의경우에 0 은오류의의미로사용 된다. 42

43 7. MIB description 의작성및확장 OMCI MIB description 을추가하거나 Private 용도로확장하는경우에그의미와주 의할점에대해서알아보기로하자. OMCI 규격만들때제한사항 Attribute 의개수는총 16 개를넘을수없다. Managed Entity Id 는제외이다. 각 Attribute의최대크기는 25 를넘을수없다. GET Operation 을할수없으니까. 만약넘는다면 Table Attributes 를사용해야한다. 구분을위해 attribute name 에 table 을사용한다. Set-by-Create 된 attribute 의총길이의합계는 32 를넘을수없다. (ME id 제외 ) Create operation 의한계때문이다. Table Attribute 는 Set-by-Create 을할수없다 Table Attribute 의각 entry 의 W attribute 의총크기는 30 를넘을수없다. Set operation 의한계때문이다. Attribute 확장과연동의관계 그렇다면 OMCI 기본규격에서 attribute 를확장하여사용하면어떤연동의문제 가발생할까? OLT 에서확장하는경우에 ONU 에서확장하는경우로구분할수있겠다. 물론둘다확장하는경우도배제할수없으나, 이부분은나중에고려해보자. OLT 가확장하는경우에는 GET/SET request 에서추가된 attribute mask 를사용할 43

44 가능성이높다. ONU 에는이 attribute 가존재하지않기때문에 error 가발생하게 된다. OLT 는 attribute 의 error 에대한어느정도예상을하고있기때문에대처 가가능할것이다. ONU 가확장되는경우에는 MIB upload 시에해당 attribute 가 OLT 에보고되게된 다. OLT 에서이를수신하여무시할가능성이높으므로문제가되지않는다. 그외에는 OLT 의확장과같이큰문제가없어보인다. 문제가되는부분은 OLT 와 ONU 가동일한 attribute 를확장하는경우이다. 이와유사한것이 private 하게확장한 attribute 의부분이 OMCI 규격이확장되면서사용되는경우이다. 이러한경우가발생하면동일한 attribute number 에대해서길이및의미가달라지기때문에호환성의문제가발생하게된다. 이를방지하기위해서권장하는방법은 Private attribute 를 16 번부터앞으로사용하는방법이다. OMCI 의차후규격이해당 Attribute 의장소를사용할때까지는안전한방법이다. 하지만이런방법보다는 Private Class 를추가하여사용하는방법이연동에는더바람직한방법이라고생각한다. 이로써 OMCI 의간단한설명이완료되었습니다. 더깊이공부하실분은규격을보면, 더많은정보를얻으실수있을겁니다. 도움이되기를바라고, 끝까지읽어주셔서고맙습니다. 44

45 Appendix A. 문서정보 A.1 문서이력 문서목적 OMCI 규격의이해를돕는다. 작성자 제임스 / 도움주신분 김흥원, 김용석, 최형주, 엄지성, 백승우, 김인태, 김정미 그외크고작은도움을주신분들께감사드립니다. 작성이력 최초작성 :

46 Appendix B. References ITU-T G Gigabit-capable Passive Optical Networks (GPON): General characteristics ITU-T G Gigabit-capable Passive Optical Networks (G-PON): ONT management and control interface specification omcitk 1.1 OMCI agent toolkit manual, novo networks 46