ATM on Linux 패키지 설치와 구성 방법
(How to Install and Configure ATM on Linux package)

    김재명(한국전자통신연구원) / jaemkim@etri.re.kr

 

 

요약

    ATM은 하드웨어 기반의 링크 레벨의 고속, 고성능 통신기술로 기존 네트워크와의 인터워킹을 위해 부가적인 ATM 처리 소프트웨어가 필요하다. ATM on Linux 패키지는 최근 UNIX와 거의 동일한 기능을 제공하는 무료로 배포되는 Linux 운영체계 상에서 동작 가능한 ATM 처리 소프트웨어로 IETF 표준인 Classical IP over ATM 기능과 ATM Forum이 표준으로 채택한 LAN Emulation 기능을 제공하는 무료 패키지이다. 본 기술문서에서는 급속하게 발전되고 있는 Linux 운영체계 상에서 이 패키지를 설치하고 구성하여, 다양한 스위치에서 Classical IPOA 및 LANE의 기능을 시험한 결과를 토대로 이 패키지의 활용 여부에 대해 설명한다.

 

목차

    1. 개요
    2. 설치
      2.1. 안정 커널
      2.2. 개발자 커널
      2.3. PCA-200E 카드의 커널 모듈 설정
      2.4. ATM on Linux 패키지의 설치
      2.5. 설치된 소프트웨어의 검증
    3. 구성
      3.1. Classical IP over ATM
      3.2. LAN Emulation
    4. 결론

 

1. 개요

    ATM 기술이 파급이 지연 되고 있는 이유는 기술을 사용하기 위해 필요한 장비 및 부품이 고가이고, 사용자의 요구가 성숙되지 않았으며, ATM을 사용해야만 하는 킬러(killer) 응용 프로그램이 존재하지 않은 것이 이유이다. 그러나, 현재 ATM 기술은 고속 백본 기술로 위치를 확보하고 있으며, 표준의 정립 등 거의 완성 단계에 들어가고 있으므로 계속되는 ATM 기술의 사용 증가가 있을 것으로 예상된다.

    이러한 ATM 기술을 개방된 플랫폼에 이식하여서 사용이 확산될 수 있도록 하는 것은 기술을 개발하고자 하는 개발자나 이용자의 노력이 필요한 부분이다. 그런 의미에서 ATM on Linux는 Werner Almesber와 Heiikki Vatiainen등의 노력으로 공개되어 무료로 이용 가능한 IPOA와 LANE을 지원하는 ATM 패키지이다.

    현재 ATM on Linux 소프트웨어는 Werner Almsberger에 의해 개발되었고 유지보수 되고 있다. 이 소프트웨어는 크게 2가지가 있다. 하나는 개발자 커널을 지원하는 atm-0.38 버전과 안정 커널을 지원하는 atm-0.31가 있다. 전자는 UNI 4.0 등의 최근의 표준화된 기술을 수용하기 위한 버전이고, 후자는 처음에 교육 목적으로 만들어진 비교적 안정된 버전이다.

    이 패키지에서 지원하는 ATM 카드(NIC:Network Interface Card)의 드라이버는 (표 1)과 같다. Efficient Network사와 Zeitnet사의 카드는 이 패키지를 개발하는 프로젝트에 직접 사용하고 있으므로, 기능의 추가 등이 활발하게 진행되고 있다. 나머지의 카드 드라이버는 자원자의 노력으로 유지되고 있다. 현재 실험에 사용하는 ATM 카드는 ZeitNet사의 ZN, Fore System사의 PCA-200E, Texas Instrument의 TNETA 1570이며, 스위치는 ASX-200, Virata 7000, HANbit ACE 64이다. 참고로 TNETA 1570은 평가 보드로 MAC주소의 지원 등 기능이 부족하여 실제의 기능을 실험하는데는 부적합하다.

     

버전

지원커널

지원ATM카드

~ atm-0.31

Linux-2.0.29

Efficient ENI-155P
SMC ATM power 155
TI TNETA1570
Zeitnet ZN1221/1225
IDT 77901/77903 155 M or 25M
FORE PCA-200E

atm-0.32 ~ atm0.38

Linux-2.1.105

Efficient ENI-155P
Zeitnet ZN1221/1225

     
    (표1) Linux-ATM 지원 커널 및 ATM 카드

    Linux-ATM 소프트웨어는 (표2)를 참조하여 구할 수 있으며, 안정 버전 커널을 위한 최종 버전은 linux-2.0.29이고 ATM 패키지는 atm-0.31버전까지만 지원되고, 개발자 버전 커널의 최신 버전은 linux-2.1.105와 atm-0.38이다. 안정 버전의 경우 커널에서의 최종 버전은 linux-2.0.35이나 2.0.29버전 이후로 네트워크 관련 부분이 크게 변경되어 커널 패치가 안 되기 때문이다. 참고로 최근 안정 버전에 patch가능한 비공식 파일을 http://www.tcm.hut.fi/~justus/linux-atm/에서 배포하고 있다.
     

프로그램이름

위         치

RedHat-4.2.5

ftp://ftp.kreonet.re.kr/pub/Linux/hangul/AlzzaLinux/Alzzalinux-4.2.5

Linux-2.0.29
Linux-2.0.105

ftp://ftp.cs.helsinki.fi/pub/Software/linux/Kernel/v2.0/linux-2.0.29.tar.gz
ftp://ftp.cs.helsinki.fi/pub/Software/linux/Kernel/v2.1/linux-2.1.105.tar.gz

Atm-0.31
Atm-0.38

ftp://lrcftp.epfl.ch/pub/linux/atm/dist/atm-0.31.tar.gz
ftp://lrcftp.epfl.ch/pub/linux/atm/dist/atm-0.38.tar.gz

Fore PCA200e-0.2 firmware image

ftp://os.inf.tu-dresden.de/pub/pca200e/pca_200e-0.2.tar.gz
ftp://os.inf.tu-dresden.de/pub/pca200e/pca200e.bin

     
    (표2) 프로그램 위치

    본 기술문서에서는 ATM망에 사용하기 위해 Linux 운영체계 기반 PC에 ATM 패키지를 구성하는 방법, ATM을 지원하는 소프트웨어 및 디바이스 드라이버를 설치하는 방법 및 IP 네트워크 트래픽이 전달될 수 있도록 연결 설정하는 방법, IPOA 및 LAN Emulation 기능을 시험하기 위해 패키지를 구성하는 방법 및 현재 개

    발중인 HANbit ACE 64 교환기상에서  IPOA 서버를 구축하는 방법을 기술한다. 또한, 이러한 경험을 기초로 ATM on Linux 패키지의 관련 과제 사용성 여부에 대해 설명한다.

 

2. 설치

    개발자 커널과 안정 커널의 설치 방법이 약간 다르므로 두 부분으로 나누어서 설명한다. 또한, PCA200E 카드의 드라이버를 모듈로 커널에 설치하는 방법과, ATM on Linux 패키지를 설치하는 방법에 대해 설명한다. 자세한 내용은 패키지 내에 USAGE 파일을 참고하여 설치한다.[1] 설치는 root 권한을 가진 사용자가 /usr/src 디렉토리에서 작업을 하게 되며, 명령어는 %로 나타낸다.

    2.1 안정 커널

      (1) 가져온 커널과 패키지를 푼다
           % tar xvzf linux-2.0.29.tar.gz; tar xvzf atm-0.31.tar.gz; cd linux
      (2) ATM 패키지가 동작 가능한 커널을 재생성하기 위해 패키지내에 있는 patch를
           커널에 적용시킨다.
           % patch -s -p1 <../atm/atm.patch
      (3) 목적 파일, 상호 의존 관계 파일 등을 깨끗이 정리한다.
           % make mrproper
      (4) 커널에 대한 각종 장치 등의 동작  옵션을 설정하기 위해 config를 수행한다.
           config를 수행하는 명령으로는 3가지가 있는데, 텍스트 형태로 물어오는 config,
           메뉴 형태로 나오는 menuconfig, 그리고 X 윈도우에서 설정 가능한 xconfig가
           있다. 여기서는 사용이 간단한 menuconfig를 사용을 권한다.
           % make menuconfig

        위의 명령어를 수행하면 각종 옵션이 메뉴로 제공되는데 다음의 옵션을 선택한다
        (i)
        Loadable Modules Option : FORE 드라이버와 같이 커널 모듈로 동작할 때
            필요하다.
        (ii)
        Networking Options : TCP/IP Networking, ATM, LANE Support 등의 기능을
             활성화 시킨다. ATM의 경우 다음의 부옵션을 선택한다.

          Asynchronous Transfer Mode (ATM) (CONFIG_ATM)
                Enable single-copy
                   Extended debugging for single-copy
                Classical IP over ATM with ATMARP
                Classical IP over ATM with PVC
                Application REQested IP over ATM
                LANE support

        (iii) Network Device Support Options : 장착한 ATM, Ethernet 등 네트워크
             디바이스 드라이버를 선택한다. PCA-200E 카드는 커널모듈로 지원하므로
             선택할 필요가 없다.

      (5) 커널 컴파일을 수행한다.
           % make dep; make clean; make zlilo
           이 명령의 수행 결과로 시스템맵 파일과 커널 오브젝트가 루트(/) 디렉토리에
           생성된다.
      (6) 커널 모듈을 컴파일하고 설치를 수행한다.
           % make modules; make modules_install
           그 결과는 /lib/modules/`uname -r` 디렉토리에 생성된다.
      (7) 생성된 시스템맵과 커널 오젝트를 /boot 디렉토리로 옮기고, /etc/lilo.conf 파일의
           image, label 라인을 수정한 후 재부팅한다.
           % cd /;mv System.map vmlinuz /boot
           % vi /etc/lilo.conf 수정
           % sync;sync; reboot

    2.2 개발자 커널

      (1) 가져온 프로그램을 tar명령을 사용하여 /usr/src에 푼다.
           % tar xvzf atm-0.38.tar.gz; tar xvzf linux-2.1.105.tar.gz; cd linux
      (2) 생성된linux 디렉토리로 변경한 후 커널을 다음 명령어로 패치시킨다.
           % patch -p1 < ../atm/atm.patch
      (3) 커널을 재 컴파일하는 절차를 시행한다.
           % make mrproper
           % make menuconfig

        위의 명령의 결과로 설정할 목록이 나타나는데 다음의 목록과 부목록을 선택한다.

        (i) Code maturity level options
            [*] Prompt for development and/or incomplete code/drivers
        (ii) Networking options
            [*] Asynchronous Transfer Mode (ATM, EXPERIMENTAL)
            [*]    Classical IP over ATM
            <*>   LAN Emulation (LANE) support
            (iii) Network device support
            <*> ZeitNet ZN1221/ZN1225

        (i)은 개발자 커널을 위한 옵션으로 ATM이 개발중인 소프트웨어이므로 반드시 설정하여야 (ii)와 (iii) 항목이 나타난다. (ii)는 지원하는 ATM 서비스를 선택하는 항목이며 최근 버전에서는 IPOA와 LANE만 지원하고 있으며, (iii)은 사용할 ATM 카드를 지정한다.
        이외에도 Ethernet Card 등 드라이버와 각종 기능에 대한 추가, 삭제, 변경이 필요한 부분을 선택한다.

      (4) 다음으로 커널 및 커널 모듈 컴파일한다.
           % make dep; make bzlilo; make modules;make modules_install
           여기서 bzlilo을 사용하여야 압축된 커널 파일을 생성하므로 부팅이 가능하다.
      (5) 생성된 커널은 루트 디렉토리 밑에 System.map과 vmlinuz라는 이름으로 맵 파일과
           커널 파일이 생기므로 /etc/lilo.conf 파일을 수정하여 lilo 명령어를 실행시킨 후
           에러가 발견되지 않을 경우 재부팅한다.

           % lilo; sync; reboot

    2.3 PCA200E 카드의 커널 모듈 설정

      (1) 가져온 디바이스 드라이버를 /usr/src에 푼 다음 firmware인 pca200e.bin을 그
           디렉토리로 옮긴다.
           % tar xvzf pca_200e-0.2.tar.gz
           % mv pca200e.bin pca_200e
      (2) 설치된 Linux 커널의 include 패스를 설정하기 위해 Makefile을 수정한다.
           % vi Makefile
           INCLUDEPATH를 수정하여 커널의 include가 참조될 수 있도록 한다.
      (3) 컴파일 한 결과, 커널 모듈인 pca200e.o를 커널 모듈 디렉토리로 복사한다.
           % make clean;make all
           % mv pca200e.o /lib/modules/2.0.29/net/
           참고로 제공된 Makefile이 현재의 shell 버전이 맞지 않아 에러를 내므로
           make clean;make all 명령어를 반복 시행시킨다.
      (4) 커널 모듈이 동작하기 위해서는 모듈 명령어를 사용하여 실행한다.
           % insmod  pca200e

    2.4 ATM on Linux 패키지 설치[2]

      패키지에 들어있는 주요한 디렉토리 및 내용 아래와 같다.

        /usr/src/atm/sigd         시그날링 데몬
        /usr/src/atm/ilmid         ILMI 주소 등록 데몬
        /usr/src/atm/arpd         ATM ARP 처리 데몬
        /usr/src/atm/aqp          사용자 QoS 요청 IP over ATM  데몬
        /usr/src/atm/saal          Signalling AAL 기능 처리 라이브러리(SSCOP, SSCF, SAAL)
        /usr/src/atm/qgen         Q.2931 메시지 처리
        /usr/src/atm/ip IP over   ATM
        /usr/src/atm/led            LANE 데몬
        /usr/src/atm/lane          LANE 서버
        /usr/src/atm/debug       디버깅 도구
        /usr/src/atm/lib            응용 및 데몬에 필요한 라이브러리
        /usr/src/atm/maint        ATM 관리 프로그램
        /usr/src/atm/test           각종 시험 프로그램
        /usr/src/atm/doc          사용자 설명서
        /usr/src/atm/man          매뉴얼 페이지
        /usr/src/atm/extra         ANS, tcpdump 패치 파일 등

      (1) 먼저 atm 디렉토리에 있는 UNI 버전을 나타내는 변수를 변경한다. 
           default로 UNI 3.0이 되어 있으므로 UNI 3.1로 변경한다.
           % vi Rules.make
           STANDARDS=UNI30을 UNI31로 변경한다.
      (2) 각종 명령어를 만들기 위해 패키지를 컴파일하고 설치한다.
           % make depend; make ; make install
           그 결과 명령어는 /usr/local/sbin , 매뉴얼 페이지는 /usr/local/man 에 저장된다.
      (3) 설치된 명령어가 쉘에서 인식 가능하도록 하기 위해 PATH에 /usr/local/sbin 패스를
           추가한다. bash 쉘을 사용하는 경우에는 ~/.bash_profile을 수정하면 된다.
      (4) 패키지가 제대로 동작하기 위해서는 몇 개의 스크립트 파일이 필요한데 이를
           설치하기 위해 다음의 명령을 수행한다.
           % cd config; make Redhat-4.0
           결과로 아래의 파일이 Linux 관리디렉토리에 각각 복사된다.

        /etc/hosts.atm
        /etc/sysconfig/atm
        /etc/rc.d/init.d/atm
        /etc/atmsigd.conf
        /etc/sysconfig/network-scripts/ifcfg-atm0
        /etc/sysconfig/network-scripts/ifup-atm

      참고로 실행중에 패스 및 모드가 제대로 설정되어 있지 않은 경우가 있으므로 chmod +x atm 실행하고, /etc/rc.d/init.d/functions 스크립트 파일에 PATH=$PATH:/usr/local/sbin을 추가한다.

      (5)  atm을 실행시키거나 중지시킨다. ATM 디바이스 드라이버가 커널모듈로 설정된
           경우에는 먼저 커널 모듈을 기동시켜야 한다.
           % ./atm start or stop
           참고로 실행 중지를 반복할 경우 ifup-atm 스크립트에서 atm인터페이스가 이미
           설정된 경우 atmarp -c $DEVICE 명령어는 실패하여 exit하므로 무조건 다음 명령어
           실행가능하도록 한다.

    2.5 설치된 소프트웨어의 검증

      설치한 패키지들이 정상적으로 설치가 완료되었는지를 확인하는 작업이 필요하다. 이는 드라이버의 적재 여부, 스크립트의 실행으로 알 수 있다.

      (1) 드라이버의 확인
           % dmesg  또는 % lsmod
           전자의 경우 드라이버가 커널에 포함된 경우 ATM 카드에 해당하는 메시지가 출력
           되어야 하며, 후자의 경우 커널 모듈의 적재 여부를 확인할 수 있다.
      (2) 각종 데몬의 실행 확인
           % ps -a
           스크립트의 실행으로 시그널링 데몬, ilmi 데몬, ATMARP 데몬 등을 실행하는데,
           이 명령으로 프로세서의 존재여부를 확인할 수 있다.
      (3) 네트워크 인터페이스와 라우팅 데이블의 확인
           % ifconfig; route
      (4) /proc/atm 파일의 확인
           % cat /proc/atm/devices
           ATM 카드에 대한 정보를 확인할 수 있으며, 이 외에도 ATM 패키지와 관련된
           특수 파일인 arequipa, arp, , lec, pvc, svc가 있으며, 이는 사용 기능에 따라
           실행 시의 정보를 기록 하고 있다.

 

3. 구성

    3.1 Classical IP over ATM[2]

      Classical IP over ATM은 CIP 혹은 IPOA라 부르는데, Ethernet, LAN, 전용선, X.25, FR, ATM 등 다양한 링크 네트워크에 IP(Internet Protocol)를 사용하기 위한 방법이다. IP는 비연결 패킷을 사용하는 반면 ATM은 연결지향 셀을 사용하고, IP는 방송 LAN 기반하의 망에 사용하는 반면 ATM은 점대점 연결 방식을 사용하므로 IP와 ATM은 근본적으로 차이가 있다. 이러한 근본적인 차이점 때문에 크기가 다른 프레임 연결 문제를 해결하는 방법으로 ATM 셀에 IP 패킷을 encapsulation하도록 AAL5를 사용하고, 다수의 네트워크 계층 프로토콜이 같은 ATM VC에 사용될 때 패킷을 식별하기 위해서 LLC/SNAP encapsulation을 사용한다.

      Classical IPOA는 다음과 같은 특징이 있다.
      1) IP는 Ethernet, FR 등 다양한 링크 계층 기술에 적용 운용된다.
      2) 분리된 주소공간과 라우팅 프로토콜을 사용하므로 IP 라우터와 ATM 스위치의 분리
          사용이 가능하다. 또한, 주소 공간이 다르므로 ARP와 유사한 주소 해결 메커니즘이
          필요하며, ATM 스위치와 프로토콜 변경이 필요 없다. 라우팅 프로토콜은 ATM은
          PNNI 등을 사용하고 IP 는 OSPF, BGP 등을 사용한다
      3) 원래 링크 계층은 서브넷을 가지므로 IPOA에서는 LIS(Logical IP Subnet)라 하고,
          같은 LIS내에서 IP스테이션은 직접 SVC 또는 PVC로 통신가능하고, 다른 LIS간
          통신은 라우터를 통해 이루어진다. 여기서, 다수의LIS를 사용하는 이유는 관리 요구
          사항의 측면에서 보안 필터링, 호스트가 지원해야 할 동시 VC 수의 감소, 네트워크
          서버에 대한 부하 감소를 목적으로 한다.

      두 IP 스테이션이 ATM망을 통해 통신하기 위해서는 IP와 ATM 주소를 매핑할 필요가 있으며 이러한 주소 해결을 위해 ATMARP 프로토콜[4]을 사용한다. 그 동작은 호스트가 살면 ATM과 IP 주소를 ATMARP 서버에 등록하고 주소 변환 서비스를 수행한다. IPOA의 단점은 LIS가 다른 경우 같은 물리 계층을 사용함에도 불구하고, 다른 VC를 사용하여 라우터를 통해 통신해야 하므로 원래의QoS(Quality of Service)를 상실하게 된다는 것이다.

      IPOA를 실행시키기 위해 /etc/rc.d/init.d/atm 스크립트로 시작 시키게 되면 /etc/sysconfig/atm 환경 파일 중 IPATM, LANE 변수를 참조하여 관련 프로그램을 실행 시킨다. IP over ATM인 경우 네트워크 인터페이스 생성하고 정보 저장하는 /etc/sysconfig/network-script/ifup-atm 스크립트를 호출한다. 이 스크립트는 /etc/sysconfig/network-script/ifcfg-atm0파일에 있는 환경 변수를 참고하여 설정한다. (표3)은 두 단말 시스템간에 IPOA를 설정하는 명령어와 환경 변수를 나타낸 것이다. 여기서 kim-e과 jaykim-e은 IP 주소이고, kim-a와 jaykim-a는 ATM 주소를 말하며 각각 /etc/hosts와 /etc/hosts.atm 파일에 기록되어 있다.

       

명령어

jaykim-e

Kim-e

1. IPOA 실행

IPATM =yes

IPATM =yes

2. IP 주소 설정
   (ifcfg-atm0)

DEVICE=atm0
IPADDR=129.253.91.53
NETMASK=255.255.255.0
NETWORK=129.253.91.0
BROADCAST=129.253.91.255

DEVICE=atm0
IPADDR=129.253.91.53
NETMASK=255.255.255.0
NETWORK=129.253.91.0
BROADCAST=129.253.91.255

3. back-to-back
(init.d/atm)

네트워크와 단말을 구별하기 위해 시그날링 데몬(atmsigd)에 네트워크측을 나타내는 -N 옵션을 추가한다.

4. PVC의 ARP
   테이블 설정

atmarp -s kim-e 0.51

atmarp -s jaykim-e 0.52

5. 스위치의
    PVC 설정

*FORE인 경우
  Configuration vcc> new  1B1  0  51  1B2  0  52
  Configuration vcc> new  1B2  0  52  1B1  0  51
*Virata인 경우
 > pvccreate d1 51 d2 52
*Back-to-Back인 경우 양쪽 VPI/VCI는 동일해야 한다.

6. SVC의
    ARP테이블     설정

atmarp -s kim-e kim-a

atmarp -s jaykim-e jaykim-a

       

      (표 3) IPOA 구성 방법

      IPOA는 ATMARP 서버가 있는 경우와 없는 경우, 연결 설정을 PVC로 하는 경우와 SVC로 하는 경우 및 두 단말간에 ATM 스위치가 있는 경우와 없는 경우로 나눌 수 있으며, 이 조합에 따라 설정 방법이 상이 하다.

      가.  스위치가 없는 경우

      스위치가 없이도 IPOA를 시험할 수 있는데 이를 back-to-back 연결이라 한다. Back-to-back연결인 경우 네트워크와 단말이 구별되어야 하므로 한쪽을 네트워크측으로 다른 한쪽을 단말측으로 지정해 주어야 하고, 수신단과 송신단을 서로 교차하여 접속 가능하다. 연결 설정 시 연결을 관리자를 통해 하면 PVC 라하고 제어 시그널링을 통해 하면 SVC라 하는데 back-to-back 연결의 경우도 둘다 가능하나 주의할 것은 서로가 정보를 알고 있어야 하므로, PVC의 경우 VPI(Virtual Path Identifier)와 VCI(Virtual Circuit Identifier)가 동일하여야 하고, SVC인 경우 ATM주소가 미리 알려져 있어야 한다.

      나. ATMARP서버를 설정하는 경우

      ATMARP 서버를 단말에 설치하고자 하는 경우에 IP  주소 설정시 ifcfg-atm0 환경 설정파일 중 “ARPSRV=”  변수를 설정함으로써 가능하다. 변수의 값으로는 ATM 주소 혹은 공백이 들어가는데 공백인 경우 자신이 ATM 서버임을 나타내고, ATM 주소가 들어가는 경우는 이 주소가 ATMARP 서버의 주소이다.

      다.  스위치가 있는 경우

      SVC를 사용할 때 호스트는 ATM 스위치에 연결된 다른 호스트와 연결 설정을 하고 싶다는 정보를 보내야 하는데 이러한 정보 및 절차를 시그널링이라 한다. ATM Forum에서는 호스트와 스위치간에 UNI(User Network Interface) 시그널링이 표준을 제공하고 있으며 버전 3.0, 3.1 및 4.0이 있으나, 버전 3.1이 현재 널리 사용되고 있는 시그널링이다.  우리가 보유중인 FORE 스위치와 Virara 스위치 및 Linux-ATM 패키지는 UNI 3.0 버전을 지원하나, 우리가 정합하고자 하는 HANbit ACE64 교환기는 UNI 3.1 버전만을 지원이므로 UNI 3.1으로 설정하여야 한다.

      FORE 스위치의 경우 UNI 3.0과 UNI 3.1을 자동 인식(UNI 3.x 버전이라 부름)하여 처리하므로 UNI 3.1 및 UNI 3.x로 설정이 가능하여야 한다. 시그널링 변경은 atm 디렉토리의 Rules.make의 STANDARDS 변수를 변경한다. UNI 3.1의 경우는 “STANDARDS=-DUNI31 “로, UNI 3.x의 경우”STANDARDS=-DUNI31 -DALLOW_UNI30” 으로 설정하여 컴파일하면 된다.

      PVC의 경우는 SVC설정에 비해 단말과 스위치에 명령어로 설정하여야 한다. 먼저 호스트 측에서는 ATMARP 서버에 통신하고자 하는 상대방 IP주소와 그에 해당하는 VPI(Virtual Path Identifier)와 VCI(Virtual Channel Identifier)를 입력해야 하며 그 형식은 다음과 같다.

        % atmarp -s ip_addr [itf.]vpi.vci [qos qos] [temp] [pub]

      스위치쪽에서도 입력과 출력 VPI와 VCI를 상호 연결해야 하는데 FORE 스위치의 경우 다음과 같다.

        conf  vcc new <iport> <ivpi> <ivci> <oport> <ovpi> <ovci> [-upc <index>] [-name <name>]

      여기서 iport, oport는 호스트가 연결되어 있는 입력 및 출력 포트 번호를 의미하며, <ivpi>와 <ivci>는 각각 입력 및 출력 호스트에서 지정한 VCI, VPI 값이다.

      ATM 패키지가 ARPSRV로 동작하는 경우 atm-0.31의 오류로 서버가 아닌 단말간에 ATM 주소가 해결되지 않아 통신이 안 되는 경우를 제외하고, IPOA 클라언트 및 서버 기능을 잘 해주고 있음이 확인되었다.

      라. HANbit ACE 64와의 연결

      ACE교환기와 연결하기 위해서는 포트에 대한 ATM주소를 등록하는 ilmi 기능이 필요하다. ilmi의 주소 자동 등록 기능은 교환기는 네트워크 프리픽스를 받고 단말 인식 번호(ESI-End System Identifier)를 주어서 완전한 ATM 주소를 인식하는 기능을 한다.

      그러나. ACE 교환기는 ILMI 주소 자동 등록 기능과 대부분의 사설 ATM 교환기가 제공해 주는 AESA NSAP ATM 주소를 구현 중에 있으므로, ATM 주소는 운용시스템의 명령을 통해 설정하고, ATM 주소는 native E.164주소나  Embedded E.164 주소를 사용하여 설정한다. 참고로 atm-0.31 패키지에서는 이러한 주소체계가 버그가 있는 상태이므로 개발자 커널에서 atm-0.38을 이용하여야 한다.

      주소 자동 등록 기능이 제공되지 않더라도 시험하는 방법은 /etc/hosts.atm 파일에 E.164 주소에 대한 이름을 설정하고 atm 실행 파일에 ilmid을 실행하는 대신 “atmaddr -a” 명령어를 사용하여 수동으로 설정한다. 또한 ACE 교환기의 가입자 포트에 대한 E.164 주소를 수동으로 부여한다. ACE 교환기에서 수동 설정 절차는 다음과 같다.

      (1) B-ISDN 주소를 부여하기에 앞서 네트워크 식별 코드, 국가 코드, 트렁크 코드,
           Official 코드를 추가 시킨다.

           > ADD-NID:555,SELF,1,;
           > ADD-CC:82,KOREA,DOMESTIC,,8,15,;
           > ADD-TC:142,INTERNAL_TC,,8,15,;
           > ADD-OFC:,860,INTERNAL,,7,12;

      (2) 호스트가 물려있는 ALS(ATM Local Switch)의 IM(Interface Module : 가입자 포트로
           2개가 지원 된다)을 확인하여 B-ISDN 번호를 부여한다. 이는 호스트에서 부여한
           ATM번호와 일치하여야 한다.

           > CRTE-BSN:,8609991,0,0,0,UNI31,,,,,;
           > CRTE-BSN:,8609992,0,1,0,UNI31,,,,,;

      (3) ACE 교환기가 사용하고 있는 광케이블 모드는 SM(Single Mode) 케이블이므로
           MM(Multi-Mode) 케이블을 지원하는 카드와 접속하기 위해서는 감쇄기(10dB)를
           사용하여 모드를 변경시킨다.

      (4) 설정이 완료된 후 ping, telnet 등 IP 응용 프로그램을 사용하여 시험을 한다.
           이러한 간단한 응용 프로그램이 실행되면, ttcp_atm, netperf 등의 ATM 성능 측정
           프로그램을 사용하여 속도를 측정하여 보는 것도 좋은 방법이다.

      보다 자세한 디버깅 기법으로는 데몬 프로세스의 상태를 출력하여 보거나, 시그널 입출력을 조사하여 디버깅 한다. 교환기 측에서는 운용 시스템에 나타나는 메시지를 보거나 혹은 신호를 처리하는 프로세서(CCCP)의 출력 메시지를 보고 상태를 확인할 수 있다.

      위와 같이 설정 설정하여 시험한 결과 ACE교환기와 단말간 링크의 SAAL (Signaling AAL)이 살지 않는 상황까지 확인하였다. 게속되는 디버깅이 있을 예정이다.

    3.2 LAN Emulation[3]

      ATM이 미래의 광대역 멀티미디어 서비스에는 cost-effective한 기술이지만, 기존의 LAN응용 프로그램이 자연스럽게 ATM상에서 실행되기 위해서는 기존 LAN과 적절한 인터워킹이 제공되어야 한다. 그 방법으로 ATM이 기존 LAN에 연결된 것처럼 네트워크 계층 프로토콜을 적용하여 기존 LAN 서비스를 에뮬레이트하도록 ATM 프로토콜을 제공하는 것이다. 즉 기존 LAN 기술의 MAC 서비스를 에뮬레이트하여 상위 계층 프로토콜은 수정 없이 사용 가능하도록 하는 방법이다. 구현은 ATM-to-Legacy LAN 브리지와 ATM 단말의 네트워크 계층 아래의 디바이스 드라이버에서 구현된다. 즉 IP의 경우 NDIS(Network Driver Interface Specification), IPX 의 경우 ODI(Open Datalink Interface)에 밑에 구현된다. (그림 1)은 LANE의 프로토콜 계층을 나타낸 것이다.

      LANE 서비스의 기본 기능은 ATM 상에서 비연결 서비스 제공이며, 공유 미디어를 사용하는 LAN과는 달리 데이터를 전달하기 위해서는 목적지와의 연결 설정이 시그널링 프로토콜을 통해 이루어 져야 한다. 여기서 중요한 문제는 연결될 링크의 대역폭 관리를 어떻게 할 것인가 인데, IP는 BE(best effort) 서비스를 하므로 이에 상응하는 ATM ABR(Available Bit rate) 서비스를 제공한다. 이는 LAN 뿐 아니라 폭주 데이터 트래픽 특성을 갖는 응용에 적합하다. 그러나, LANE은 기존 LAN간에 translational 브리징을 제공하지 않으며, 모든 MAC 계층 기능을 수행하지 않는다. 예를 들면, 충돌 감지와 같은 MAC 기능을 수행하지 않는다.

       

      (그림) LANE의 프로토콜 계층

      LANE 구조는 ATM 단말에 위치하여 LAN 시스템에 대한 proxy로서 서비스를 제공하는 LEC, 주소 해결 프로토콜(LE-ARP) 기능을 제공하는 LES 및 모든 LEC에 멀티캐스트 트래픽을 전달(forward)하기 위한 BUS(Broadcast/Unkno-
      wn Server)로 되어 있다.

      메시지 전달 동작은 먼저,  LEC은 목적지 MAC 주소와 data direct VC간 매핑을 위해 “address resolution table”을 관리한다. 상위 계층으로부터 데이터를 받으면 먼저 data direct VC상에 목적지 LEC으로 메시지를 보낸다. 다음으로, 목적지 MAC이 테이블에 없으면 소스 LEC은 목적지 LEC의 ATM 주소를 얻기 위해 LES(LANE Server)로 LE-ARP 요청을 한다. 그런 다음, 목적지 LEC ATM 주소를 받으면 LEC은 테이블을 갱신하고 그 주소로 data direct VC를 설정한다. 또한 동시에 해결이 안된 목적지 MAC 주소를 BUS로 보내고 BUS는 그 메시지를 모든 LEC에 방송한다.  Multicast MAC 주소는 BUS로 만 전송된다.[5]

      ATM on Linux의 LANE은 LECS(LANE Configuration Server), LES, BUS, LEC 기능을 제공하고 있으며, LECS의 설정 파일은 현재 디렉토리의 .lecs_conf, LES 및 BUS는 현재 디렉토리의 .lanvars 파일을 참고하여 설정한다. IPOA와 마찬가지로 /etc/sysconfig/atm 환경 변수를 참조하여 시작하며, LANE 인터페이스를 설정하기 위한 환경변수 파일인 /etc/sysconfig/network-script/ifcfg-lec0를 참고하는 ifup-lec0 파일을 호출 한다. 또한 atm 스크립트에서 atm 환경 변수를 참고하여 LECS, LES, BUS, LEC의 동작에 필요한 명령어를 시행시키다.

      LECS 환경 파일(.lecs_conf)은 LECS가 동작하는데 필요한 ATM 주소 및 Emulated LAN에 대한 정보(이름, LAN타입 등)를 지정해 주는 파일이다. LANE에서는 여기서 서버의 ATM 주소를 구별하기 위해 ATM의 SEL 필드를 사용하여 구분하게 된다.  여기서 LECS와 LES는 0x01, BUS는 0x2, LEC은 0x09를 사용한다.  LES 및 BUS 환경 파일(.lanvars)은 LES의 ATM 주소인 S1과 BUS의 ATM 주소인 S6는 반드시 기록해 주어야 한다.  LEC 인터페이스 환경 변수 파일(ifcfg-lec0)은 IPOA 의 ifcfg-atm0  인터페이스와  유사하며 zeppelin에 의해 lec0 인터페이스가 생성된다.

       

구분

Kim

Jaykim

1. 기능

LECS
LEC

LES
BUS
LEC

2. 형상파일의 설정

.lecs_conf

.lanvars

3. 실행

Lecs

les
bus

4. 주소설정

/etc/sysconfig/network-scripts/ifcfg-lec0

5. LEC 실행

zeppelin -c lecs_atm &
atm_lecs : LECS의 ATM주소(hosts.atm 참조)

       

      (표 4) LANE의 실행

      (표 4)는 두 시스템이 하나의 에뮬레이티드 LAN으로 동작하는데 필요한 설정을 표로 정리해 놓은 것이다. 설정이 완료되었을 경우 ps, ifconfig, rout, ping, telnet 등으로 동작 확인이 가능하며, /proc/atm/svc 및 lec 등 특수 파일 참조하여 동작 상태를 확인할 수 있다. IPOA와 LANE에 필요한 환경변수 파일과 스크립트 파일은 (부록 A)을 참조하기 바란다.

      LANE의 시험 결과 LES, BUS, LEC 기능의 동작은 어느 정도 안정적이나 LECS의 경우 default ATM 주소로 연결을 요구하는 경우가 발생하고, LEC 프로그램을 인터페이스가 설정되기 전에 시작한 경우 무한 루프에 빠지는 경우가 있다.

 

4. 결 론

    ATM 네트워크 상에서 IPOA 및 LANE 기능을 ATM 단말 및 서버로 ATM 패키지를 Linux 기반의 PC에 설치하여 구성 및 시험하는 방법을 설명하고 실제적으로 시험을 수행하였다. 다양한 스위치를 이용하여 LANE 및 IPOA 기능을 시험하는 목적은 다음의 두 가지이다.

    (1) 무료이며 원천 코드가 제공되는 ATM on Linux 패키지가 공중 ATM 교환기에 사용
         가능 여부
    (2) 현재 개발중인 ATM 교환기에 장착하여 ATMARP 서버 기능을 제공하기 위해 다양한
         플랫폼 이용 가능 여부

    ATM on Linux는 상업적인 목적이 없이 개발되었기 때문에 안정성, 커널과의 인터페이스, 관리 프로그램 등 부족한 부분이 많이 있지만 최적화하여 보완하면 사용 가능한 것으로 판단되며, Linux가 SPARC, PowerPC, Alpha 등의 프로세서에서 동작이 가능할 뿐 아니라, 입출력 버스로서 PCI 버스를 사용하므로 플랫폼에 무관하다. 또한, 인텔 프로세서를 사용한 PC기반 Linux에서의 서버 기능 시험은 만족할 만하다. 따라서, 현재 교환기에 사용되는 프로세서가 PCI 버스 기반의 고성능 프로세서이므로 ATM on Linux 패키지를 잘 활용하면 고가의 ATM 패키지를 구입하지 않고 성능이 좋은 서버로 구성이 가능하리라 생각된다.

 

〈참고문헌〉

    1) Werner Almesber, Usage instructions - ATM on Linux, release 0.31.
    2) Hassan Ahmed, Ross Callon, Andrew Malis, and John Moy, IP Switching for Scalable
        IP Services,  Proceedings of the IEEE, Vol.85, No.12, Dec. 1998, pp.1984-1997.
    3) Kai-Ueung Siu and Raj Jain, A Brief Overview of ATM Protocol Layers, LAN Emulation,
        and Traffic Management, Computer Communication Review, ACM SIGCOMM, Vol.25,
        No.2, Apr. 1995, pp.6 - 20.
    4) Mark Laubach, Classical IP and ARP over ATM, RFC1577, January 1994.
    5) ATM Forum, “LAN Emulation Over ATM - Version 1.0,”     
    ftp://ftp.atmforum.com/pub/specs/af-lane-0021.000.ps.

부록 A.

1. /etc/hosts

    47.0005.80FFE1000000F21514E5.0020D4100A08.00    klee-a
    47.0005.80FFE1000000F21514E5.0020D4100A70.00    park-a
    # HANbit ACE64
    #45.000.821428600152f00000000.0020D4100A08.00    atmf
    #45.000.821428600151f00000000.0020D4100A70.00    park
    +821428609151           park-e
    +821428609152           klee-e

2. /etc/sysconfig/atm

    ATM=yes             # enable ATM support at all
    IPATM=yes          # Classical IP over ATM (using ATMARP)
    AREQUIPA=no     # Application REQUested IP over ATM
    LANE=no            # LAN Emulation (client; doesn’t work yet)
    LECS=yes           # LAN Emulation Configuration Server
    LES=no              # LAN Emulation Server
    BUS=no              # LAN Emulation Broadcast & Unknown Server
    # ILMIQOS=”ubr:pcr=100kbps”  # optional: QOS to use on the ILMI VC

3. /etc/sysconfig/network-scripts/ifcfg-atm0

    DEVICE=atm0                  # device name
    IPADDR=129.253.90.152   ##MYIPADDR##    # hosts’s IP address on the ATM LIS
    NETMASK=255.255.255.0   # netmask (e.g. EPFL uses 8 host bits)
    NETWORK=129.253.90.0    # network (e.g. EPFL’s experimental ATM LIS)
    BROADCAST=129.253.90.255        # broadcast address (not really useful)
    ARPSRV=kim-a            # ATM address of ATMARP server; omit if local
    # ARPSRVQOS=”ubr:max_pcr=100kbps”     # QOS of the ATMARP server VC
    # ARPDEFQOS=”ubr:max_pcr=700kbps”     # default QOS for IP over ATM VCs
    ONBOOT=no               # needs to be loaded by ATM-specific procedure

4. /etc/sysconfig/network-scripts/ifcfg-lec0

    DEVICE=lec0             # device name
    IPADDR=129.253.81.53    # hosts’s IP address on the ATM LIS
    NETMASK=255.255.255.0   # netmask (e.g. EPFL uses 8 host bits)
    NETWORK=129.253.81.0    # network (e.g. EPFL’s experimental ATM LIS)
    BROADCAST=129.253.81.255        # broadcast address (not really useful)
    LECS=lecs_atm           # LECS ATM address
    LEC=kimlec              # LEC ATM address
    ONBOOT=no               # needs to be loaded by ATM-specific procedure

5. /etc/sysconfig/network-scripts/ifup-atm

    #!/bin/sh
    . $1
    PATH=$PATH:/usr/local/sbin
    atmarp -c $DEVICE #### || exit 1
    ifconfig $DEVICE $IPADDR netmask $NETMASK up || exit 1
    route add -net $NETWORK netmask $NETMASK $DEVICE || exit 1
    [ -z “$ARPDEFQOS” ] || atmarp -q $NETWORK $ARPDEFQOS
    [ -z “$ARPSRV” ] || atmarp -s $NETWORK $ARPSRV arpsrv \
    `[ -z “$ARPSRVQOS” ] || echo qos $ARPSRVQOS`

6. /etc/sysconfig/network-scripts/ifup-lec

    PATH=$PATH:/usr/local/sbin
    . $1
    zeppelin -c $LECS &
    ifconfig $DEVICE $IPADDR netmask $NETMASK up || exit 1
    route add -net $NETWORK netmask $NETMASK $DEVICE || exit 1

7. /etc/rc.d/init.d/atm

    #!/bin/sh

    # Source function library.
    . /etc/rc.d/init.d/functions

    if [ ! -f /etc/sysconfig/atm ]; then
        exit 0
    fi

    . /etc/sysconfig/atm

    [ “$ATM” != yes ] && exit 0

    cd /etc/sysconfig/network-scripts

    case “$1” in
        start)
            echo -n “Starting ATM demons: “
            daemon atmsigd -b -l S -D /var/tmp -t 20
            daemon ilmid -b -l I `[ -z “$ILMIQOS” ] || echo -q $ILMIQOS`
            [ “$IPATM” = yes ] && daemon atmarpd -b -l A -m
            # launch LANE demon(s) ...
            [ “$AREQUIPA” = yes ] && daemon arequipad -b -l syslog
            echo
            if [ “$LANE” = yes ]; then
                for n in ifcfg-lec[0-9]; do
                    ./ifup $n
                done
            fi
            if [ “$IPATM” = yes ]; then
                for n in ifcfg-atm[0-9]; do
                    ./ifup $n
                done
            fi
            if [ “$LANE” = yes ]; then

                if [ “$LES” = yes ]; then
                fdaemon les # background daemon
                fi
                if [ “$BUS” = yes ]; then
                fdaemon bus
                fi
                if [ “$LECS” = yes ]; then
                fdaemon lecs
                fi
            if [ “$LANE” = yes ]; then
                for n in ifcfg-lec[0-9]; do
                    ./ifup $n
                done
            fi
            touch /var/lock/subsys/atm
            ;;
        stop)
            if [ “$LANE” = yes ]; then
                for n in ifcfg-lec[0-9]; do
                    ./ifdown $n
                done
            fi
            if [ “$IPATM” = yes ]; then
                for n in ifcfg-atm[0-9]; do
                    ./ifdown $n
            

        done
            fi
            echo -n “Stopping ATM demons: “
            if [ “$IPATM” = yes ]; then
                [ “$AREQUIPA” = yes ] && killproc arequipad
                killproc atmarpd
            fi
            killproc atmsigd        # kill ILMID later, so we don’t get complaints
            killproc ilmid
    killproc lecs
    killproc les
               killproc bus
            echo
            rm -f /var/lock/subsys/network
            ;;
        *)  echo “Usage: atm {start|stop}”
            exit 1
    esac

 

 추가 :

    98년 7월 이 글이 쓰여지고 난 후 약 10개월이 흘렀는데, Linux-atm(http://lrcwww.epfl.ch /linux-atm)이 변화되고 있는 것을 메일(ftp://lrcftp.epfl.ch/pub/linux/atm/)을 통해 눈으로 보고만 있었는데, ATM망에서 동작하는 실험용 서버로 VOD 서버를 설치하게 되었다(1999.4.26).

    기존에 사용하던 linux-2.0.29, atm-0.31로 하려고 하니, 라이브러리 때문에(그 당시 배포판은 RedHat 4.2.5였음) VOD SW가 컴파일이 잘 안 된다고 한다. 그래서, 본이 아니게 최신의 버전을 올리게 되었는데, 0.55버전의 버그가 고쳐진 따끈따끈한 것이어서 그런지 전혀 문제 없이 설치가 되었고, 시험에 필요한 SVC와 PVC IPOA을 이용하여 목적을 달성할 수 있었다.

    사용한 버전은 RedHat 5.2, linux-2.2.1과 atm-0.56버전으로 아주 안정적 이었다. 설정과정에 지원하는 ATM 카드는 ENI, ZeitNet, NICStAR(IDT 77211 ?) 였으며, email에 의하면 linux-2.2.3에서 FORE 카드도 문제 없이 사용할 수 있다고 합니다. 또한  MPOA, 스위칭 등 많은 기능도 추가되어   있다.




▲ top

home으로...