1992.12.19

SUBJECT: X.25개요
 
STATUS OF THIS MEMO :
가장 잘알려져있고 가장널리 사용되는 표준 프로토콜인 X.25의 이해를 위해 정리한다. 
  1. Overview of X.25
 
        X.25는 CCITT에 의해 제안되어 졌으며, ISO의 처음 3 layer 즉,
        physical, datalink, network layer를 정의하고 있고
        local area network 이나 LAN에 대응하는 wide area network이나 WAN을
        통한 통신을 위해 사용되어진다.
 
        X.25는 1976년에 승인되었으며, 그이후 2번교정되었다(80년, 86년)
 
        X.25는 보통 PSDN (Packet Switched data Network)에 연결되고, 이러한
        network은 X.25 패킷의 원거리 통신에 대한 신뢰성을 제공한다.
        PSDN은 보통 membership과 연결비용에 더하여 X.25의 각 Kbyte에 대해
        비용을 청구한다.
 
  2. X.25 Defines DTE/DCE Connection

	X.25는 DTE (Data Terminal Equipment)와 DCE (Data Communication Equipment
	)를 정의하고 있으며, PSDN의 내부적인 작업에 대하여는 정의하지 않는다.
	
	DCE는 PSDN에 의해 제공되며, X.25의 3 layer를 수행하는 전형적인 패킷
	스위치인데, 이 패킷 스위치는 programmable하며 routing정보를 가지고 있다.

	DTE는 computer system의 하나의 part로서, X.25의 3 layer를 수행한다.
	Sun workstation은 X.25의 3 layer를 위해 SunNet X.25 제품을 제공한다.
	첫번째 layer(physical)는 모뎀과 함께 MCP를 사용하거나, 모뎀과 함께
	serial 통신 port인 TTYA나 TTYB를 사용하여 수행되고,
	두번째 layer(datalink)와 세번째 layer(packet)는 커널내에 있는 software에
	의해 수행된다.

  3. The 3 Layers of X.25

     ◎ Physical Layer

	Physical layer는 DTE/DCE의 전기적 특성과, connector의 각 pin에대한 
	위치와 	connector의 크기등에 대한 기계적 특성에 관계되어 지는데,
	전기적인 특성은 X.21과 X.21 bis에 정의되어 있으며, 이것은 synchronous
	clocking, transmit and receive signals, voltage/current requirement
	(RS232/RS449)등의 define을 말한다.
	Phical layer는 DTE와 DCE사이에 data의 "bits"와 "binary ones and zeros"
	를 보낸다.

     ◎ Data Link Layer

	Data Link Layer는 layer 1에서 layer 2의 frame으로 정보의 "bit"들을 
	모으는 기능을 하는데, 이것은 DTE와 DCE 사이에 신뢰성 있는 정보를 전송
	할 수 있게 한다.
	layer 2는 frame의 전송을 위해 HDLC protocol을 사용하는데, 각 frame들은
	CRC checksum과 함께 전송되고, receive하는 종단은 checksum을 다시 계산
	하여 원래의 것과 비교하여 수신하므로 신뢰성을 제공한다.
	만약 checksum이 일치하면 받아들여 지고, 일치하지 않으면 무시되어 지는데
	각 frame들은 순차적인 번호를 가지고 있어 sender와 receiver가 성공적으로
	전송을 할 수 있다.

     ◎ Packet Layer

	이 layer에서 하나의 시스템에서 다른 시스템으로의 데이타의 전송을 하게
	되고, destination machine에 call을 요청, connection을 설정하게 되는데,
	이것은 DTE에서 DTE로의 두 종점간의 연결을 말한다. 
	packet layer는 연결을 설정하고난 다음, data packet을 보내게 되는데,
	이것은 DTE와 DCE사이에서 발생하게 된다.
	packet layer는 한번에 하나의 data packet window를 sending하는 것에 의해
	흐름제어를 하며, 하나의 physical link를 통해 4096까지의 virtual
	connection을 제공한다.

	  * Establish Connection ( Full duplex )
	    - connection requeast  (PSE)
	    - setup connection
	    - send data
	    - connection close          

        X.25의 가상회선 서비스(virtual-circuit service)는 두가지형의 가상회선을
        제공하는데 가상콜과 영구적가상회선이다.
        가상콜(virtual call)은 SVC(Switched Virtual Circuits)라고도하며 X.21의
        것과 유사한 call설정과 클리어링 프로시저를 이용하여 동적으로 가상회선을
        설정하며, 
        영구적 가상회선(PVC : Permanent Virtual Circuits)은 영구적인것으로
        Network가 배정한 가상회선이다. data전송은 가상콜을 수반하는 것처럼
        발생되지만 콜설정 또는 클리어링이 요구되지 않는다

         +----------+
         | User     |<-------------------------------> To remote
         | Process  |                                  user process
         |----------|                             +----------+
         |          |<--------------------------->|          |
         | Packet   |<--------------------------->| Packet   |
         |----------| Multi-channel logical I/F   |----------|
         | Link     |                             | Link     |
         | access   |<--------------------------->| access   |
         |----------| Lap-B link-level logical I/F|----------|
         |          |                             |          |
         | Physical |<===========================>| Physical |
         +----------+ X.21 physical interface     +----------+

                 < 그림 >  X.25 INTERFACE


         --------------------------------------------------------------------
                      패   킷   형                              서비스
         -----------------------------------------       --------------------
          DCE에서 DTE로            DTE에서 DCE로            SVC       PVC
         --------------------------------------------------------------------
                   Call Setup and Clearing
          Incoming call            Call request              X
          Call connected           Call accepted             X
          Clear indication         Clear request             X
          DCE clear confirmation   DTE clear confirmation    X

                   Data and Interrupt
          DCE data                 DTE data                  X        X
          DCE interrupt            DTE interrupt             X        X
          DCE interrupt confirm.   DTE interrupt confirm.    X        X

                   Flow Control and Reset
          DCE RR                   DTE RR                    X        X
          DCE RNR                  DTE RNR                   X        X
                                   DTE REJ                   X        X
          Reset indication         Reset request             X        X
          DCE reset confirmation   DTE reset confirmation    X        X

                   Restart
          Restart indication       Request request           X        X

                   Diagnostic
          Diagnostic                                         X        X
         --------------------------------------------------------------------
          * RR : Receive Ready
                     < 표 >   X.25 패킷형

  4. Setup procedure

        가상콜(SVC)에서의 일의 순서는 다음과 같으며 PVC에서의 일의 진행순서는
        위의 표에서 처럼 "Call Setup and Clearing"부분이 생략된다.

	1) Call Request패킷을 이것의 DCE에 보냄으로써 B로의 가상회선을 요청한다.
           패킷은 근원지와 목적지 주소와같이 가상회선 번호(그룹, 채널)를 포함
           하고 있다. 들어가고 나가는 데이타전송은 가상회선 번호로 확인할수 있다
        2) 네트워크는 이 콜요청을 B의 DCE로 경로배정한다
        3) B의 DCE는 콜 요청을 받고 B에게 Call indication패킷을 보낸다. 이 패킷은
           지역적으로 사용되지 않은 일련의 번호들로부터 B의 DCE에 의하여 선택된
           어떤 다른 가상회선 번호를 제외하고는 Call Request패킷과 같은 형식을
           갖는다
        4) B는 Call indication패킷의 번호처럼 똑같은 가상회선 번호를 나타내는
           Call Accepted패킷을 보냄으로써 콜의 수락을 표시한다
        5) A는 Call request패킷과 같은 똑같은 가상회선 번호를 갖는 Call Connected
           패킷을 받게된다
        6) A와 B는 그들 각자의 가상회선 번호들을 이용하여 데이타와 제어패킷들을 
           보낸다
        7) A(또는 B)는 가상회선의 종료를 위하여 Clear request패킷을 보내고,
           Local Clear Confirmation패킷을 받는다
        8) B(또는 A)는 Clear Indication패킷을 받고 Clear Confirmation패킷을 보낸다


                     machine A                        machine B
                        |                                 |
                    CALL REQUEST  ________                |
                        |                 ---------> CALL INDICATION 
                        |                                 |
                        |                 __________ Call ACCEPTED	
                    CALL CONNECTED <------                |
                        |                                 |
                        |                                 |
                      DATA        ________                |
                        |                 ---------->   DATA 
                        |                                 |
                                     ...
                        |                                 |
                        |                 ____________   RR
                       RR         <--------               |
                        |                                 |
                                    ...

                    CLEAR REQUEST ________                |
                        |                 ----------> CLEAR INDICATION
                    CLEAR CONFIRMATION                    |
                                                      CLEAR CONFIRMATION
                                                          |

                    < 그림 > 일의 순서 - X.25 가상콜


  5. X.25 Packet Layer

	1) Multiplexing
	    X.25는 logical channel number를 사용하여, multiplex vitual connect-
	    ion을 제공하는데, 하나의 physical link를 통하여 4096까지의 virtual
	    connection을 제공한다.

            아래그림은 가상회선의 address할당을 묘사한 것이며, 번호 0은 항상 
            Restart와 진단용 패킷을 위해 유보된다. 
            PVC(영구적 가상회선)는 1로 시작하는 번호들을 배당받게 되고, SVC는
            low에서 high까지를 define하게 된다





            Virtual
            circuit  ------
            number     |
                     1 |----------
                       |  PVC (Permenent virtual circuits)
                   High|----------
                       |
                   Low |----------==============
                       |  One-way incoming    |
                       |  virtual calls       | Assignment by DCE
                   High|----------            |
                       |                      v
                   Low |----------
                       |  Two-way
                       |  virtual calls
                   High|----------
                       |                      ^
                   Low |----------            |
                       |  One-way outgoing    | Assignment by DTE
                       |  virtual calls       |
                   High|----------==============
                       |
                       |
                   4095---

                 < 그림 >  가상회선 번호 할당 

	2) Connection Establishment
	    X.25 network에 있는 각 node는 unique한 X.121 address를 가지며,
	    telephone call과 유사한 방법으로 어떤 node에 대한 call을 한다.
	3) Data Transfer and Flow Control
            X.25 패킷 레벨에서의 흐름제어는 형식과 프로시져에 있어서 LINK
            Access 계층에서의 흐름제어와 사실상 동일하며, 슬라이딩 윈도우
            프로토콜이 사용된다
            default window의 크기는 2이며 7bit field를 이용하여 127까지 설정
            할수 있다.

	    connection의 설정후 X.25는 data를 주고 받는데, window를 사용하여
	    flow control을 하게 된다. 예를들어 X.25의 window의 크기가 7이라면 
	    sender는 한번에 7개까지의 frame을 보낼수 있는데, receiver는 반드시
	    sender가 추가적인 packet을 보내기전에 acknowledge를 보내야 한다.
	    만약 receiver가 busy상태여서 추가적인 packet을 받을 수 없다면,
	    RNR을 sender로 보내고 receiver가 받을 준비가 되어 있다면, RR을
	    sender에게 보낸다.

	4) Diagnostic Codes
	    X.25 packet layer는 문제의 검출과 resolution을 위해 diagnostic code
	    를 제공하는데, 예를들어 X.25에 연결하고자 할때 line up이 되지않거나
	    running되지 않는다면, 0x43의 diganostic code를 돌려받게 되는데,
	    Invalid Called DTE address를 나타낸다.

        5) Reset and Restart
            X.25는 에러를 회복시키는 2가지 기법을 제공하는데, reset기법은 
            가상회선을 다시 초기화 시키는데 사용된다. 이것은 종점들 사이에서 
            순서번호들이 0으로 정해진다는것을 의미한다
            Reset은 패킷의 손실, 순서번호 에러, 과잉밀집 또는 network 내부 가상
            회선의 손실을 포함하는 많은 에러조건들에 의하여 야기될수 있다.
            DTE 또는 DCE는 Reset Request 또는 Reset Indication으로 Reset을 초기화
            할수 있고 수령자는 Reset Confirmation으로 응답하게 된다. 
            누가 Reset을 초기화 했건간에 DCE는 다른종점에 통보할 책임이 있다
            보다 심각한 에러조건은 Restart의 요청이다. Restart Request 패킷을
            보내는 것은 모든 능동적 가상콜 상태에서 Clear Request를 보내는 것과
            모든 능동적 영구 가상회선상에 Reset Request를 보내는것과 같다.
            Restart가 발생되면 다시 DTE나 DCE는 동작을 초기화 시킨다.

     ◎ X.121 Addressing

	!     DNIC    !        NTN    !
        -------------------------------
	! 3 ! 10 ! 6- !  1000-  !  00 ! 
	-------------------------------
          !   !     !      !        !______ Sub Address
	  !   !     !      !________ Network terminal Number
	  !   !     !_______________ Network Number 6 = Tymnet
	  !   !_____________________ Country Code 10, 11, 12 = US
	  !_________________________ World Zone 3 = North America

	* DNIC  :  Data Network Identification Code
	* NTN   :  Network Terminal Number
	* X.121 Address는 4 자리의 DNIC number와 10 자리까지의 NTN number로
	  구성된는데, NTN의 마지막 두자리는 sub-addressing으로 사용된다.

	    
     ◎ 3 Phases of X.25
	1) Call Set-Up (Connection Establishment)
	   두개의 노드가 X.25를 통하여 통신을 하고자 할때, 하나의 노드는
	   caller DTE이고 다른하나는 called DCE이다.
	   caller DTE는 PSN(Packet Swtching Node)에 X.25 CALL REQUEST packet을 보내는데, 이 packet은
	   destination node나 called DCE의 X.121 address를 가진다.
	   PSN은 CALL REQUEST packet을 destination에 보내기 위해 어떻게 route
	   할 것인가를 결정하고, CALL REQUEST를 받는 called DCE는 CALL ACCEPT
	   packet을 return함으로서 call을 accept하던지, CLEAR REQUEST packet을
	   보냄에 의해 call을 거절할 수 있다.
	2) Data Transfer Phase
	   Data는 DTE와 DCE사이에 전송되는데, 한번 data packet을 DCE가 받으면
	   PSN은 remote의 DTE에 data packet을 전송하는 책임을 진다.
	3) CALL Clearing (Connection De-establishment)
	   모든 data의 전송이나 작업의 완료후 caller DTE나 called DCE는 작업의
	   완료를 알리게 되는데, 이것은 CLEAR REQUEST packet을 보냄으로서
	   수행된다.
	   call이 clear되면 logical channel(LCN)이나 buffer와 같이 call과 함께
	   지정되었던 모든 resource들은 X.25로 되돌려 지게됩니다.


    ◎ Data Packet

	1) data packet은 두 노드들 사이에서 정보의 전송을 위해 사용되며, 
	   receiving application이나 PAD와 같은 device에 의해 interprete되는
	   특별한 control 정보를 위해 사용할 수도 있다.
	   만약 Q bit가 "1"이면 그 data는 특별한 control 정보임을 나타내고, "0"
	   이면 일반적인 사용자를 나타낸다.
	2) 두 노드들 사이에 data가 전송될때, window 의 크기는 receiving acknow-
	   ledgement없이 한번에 보낼 수 있는 data packet수를 결정한다.

    ◎ Reset packet

	1) data가 전송되어 지는동안 만약 DTE나 DCE가 packet sequence error와
	   같은 어떤 에러를 검출하게 되면 RESET REQUEST PACKET이 양쪽으로
	   보내지게 된다.
	2) RESET operation이 수행되게 되면 buffer의 flush로 인해 outstanding된
	   data의 일부는 손실되며, sender에 의해 재송신된다.

  6. X.25 Data Link Layer

	1) Reliable Transmission
	   data link layer는 DTE에서 DCE로 신뢰성 있는 데이타의 전송을 제공한다.
	   data는 HDLC information frame으로 번역되고 각 frame은 순차적으로
	   receiver에 의해 요청되어 진다.
	   요청받지 않은 frame들은 일정한 시간이 지난후 재전송 되어지며, 만약
	   frame의 어떤 부분을 받지못해 receiver가 특별히 요청할 경우도 sender
	   가 frame을 재전송하게 된다.
	2) Link Level Connection Establishment
	   connection은 DTE와 DCE사이에 설정되며, X.25는 LAPB나 Link Access
	   Procedure( Balanced mode )를 사용하며, 이 mode의 operation은 sender와
	   receiver가 command나 response를 보낼수 있게 한다.
	   참고로 SDLC는 primary/secondary mode의 operation을 사용하는데, 이것은
	   primary station이 command를 보내고 secondary station이 response를
	   보내는 것을 말한다.
	3) Data Transfer and Flow Control
	   data는 I-frame이라 불러지는 HDLC information frame을 사용하여 전송
	   되며, 각 I-frame은 N(R)과 N(S) count를 가지고 있는데 N(R)은 다음에
	   receive될 I-frame을 가르키고, N(S)는 다음에 send될 I-frame을 가르킨다.
	   flow control은 packet layer와 유사하여 RNR과 RR을 사용한다.
	4) Recoverable and Irrecoverable conditions
	   data link layer는 특별한 REJECT frame을 보냄에 의해 frame의 lost나
	   damage를 복구한다. 

	HDLC frame structure
	-----------------------------------------------------------------
	|   Flag    |Address|Control|Information|Frame Check|   Flag    | 
	| 01111110  |Field  |Field  |Field      |Sequence   | 01111110  |
	-----------------------------------------------------------------