2008년 3월 22일 토요일

Dynamips / Dynagen Tutorial 번역/요약

비공개 상태에서 번역을 하다가 완성본 상태로 공개를 하려했었는데
중간에 한국에 다녀오느라 공백이 있다보니 내용에 대한 감각도 떨어지고,
막상 번역을 하려니 적당한 단어를 찾는 데 소요되는 시간이 많아지는 것같아
일단 작업을 중단하고 공개로 전환한다. 물론 여전히 조금씩은 update하고 있는 중이다.

Tutorial Summary

Introduction
  • Dynamips는 Cisco 1700, 2600, 3600, 3700, 7200 Series Router Hardware Platform을 emulate하고, Standard IOS image들을 구동시킨다.
  • Dynamips는 Simple Virtual Switch를 제공하긴 하지만, Catalyst Switch들을 emulate하지는 않는다. (NM-16ESW[16-port 10/100 EtherSwitch Network Module]을 emulate해준다.)
  • Dynagen은 Dynamips와의 Communication을 위해 "Hypervisor" Mode를 사용하는 Frontend for Dynamips이다.
  • Workstation에서 구동되고 있는 Dynagen을 가지고 Back-End Server에서 구동되고 있는 Dynamips와 Communication하며 Client/Server Mode로 작동시킬 수 있다.
    Dynagen은 또한 여러 대의 Computer들을 가로지르는 커다란 Virtual Network들을 분산시키기 위한 다수의 Dynamips Server들을 동시에 control할 수 있다.
    물론 Dynamips와 Dynagen을 동일한 System에서 구동시키는 것도 가능하다.

Installing
  • Python으로 작성된 Dynagen은 Python을 지원하는 어떠한 Platform에서도 구동된다. 즉, 거의 모든 Platform에서 사용가능하다.
    Dynagen의 Windows Installer Package에는 Dynamips와 (Python을 별도로 설치할 필요가 없도록 미리) compile된 Dynagen이 포함되어 있다.
  • 우선 Dynamips를 구동시키고자 하는 System에는 libpcap(Linux)이나 winpcap 4.0이상(Windows)이 설치되어 있어야한다. 이것들은 Bridging Router Interfaces를 Physical Network Cards에 제공하는 데 사용된다.
  • Windows 사용자Dynamips/Dynagen을 구동시키기 위해 필요한 모든 것을 제공하는  Windows Installer Package(Dynagen Homepage에서 Download)를 설치하면 된다.
    Linux 사용자Dynamips BinaryDynagen Tarball을 Download하여 압축을 해제하고 적절한  곳에 위치시킨  후, PATH가 설정된 곳(Ex. /usr/local/bin)에 DynamipsDynagen의 실행파일의 Symbolic Link를 만들어 준다.
    최신 Build의 Dynamips
    Blog에서, Dynagen은 Homepage의 Interim Build Section에서 찾을 수 있다.

IOS Image

  • Dynamips는 real Cisco IOS images를 구동시킨다.
  • Windows에서는 C:\Program Files\Dynamips\images가 default로 정해져 있는 image 위치이다. 여기에 있지 않다고 사용할 수 없는 것은 아니지만, Sample Lab들은 이곳을 참조하도록 구성되어있다.
    Linux/Unix System에서는 image를 저장할 위치(Ex. /opt/images)를 지정하고 그곳에 image를 위치시키면 된다.
  • Cisco IOS image는 압축되어있다. 이 압축된 image들은 그 자체로써도 Dynamips와 잘 동작한다.
    (예외: Cisco 2600 Series Router들의 image는 Dynamips와 동작하기 위해 반드시 압축을 해제해야만한다.)
    그렇지만 실제 Router에서와 마찬가지로 압축해제 과정으로 인해 Boot Process는 상당히 지연된다.
    그러므로 사전에 image의 압축을 해제하는 것이 좋다.
    Linux/Unix/Cygwin에서는 unzip을 이용하여 다음과 같이 압축을 해제할 수 있다:
    Ex.) unzip -p c7200-g6ik8-mz.124-2.T1.bin > c7200-g6ik8-mz.124-2.T1.image
    원래 압축되기 전의 원본이름은 더 간단하게 되어 있지만 그대로 사용하면 image들을 구분하기에 충분하지 못하므로 위와같이 압축된 Binary에서 사용한 이름에 Extension만 image로 바꿔주는 것이 좋다.
    이렇게 명령을 주면 unzip으로부터 경고메시지를 받게 되지만, 무시해도 된다.
    Windows에서는 WinRar를 이용하여 간단하게 압축을 해제할 수 있다.

Resource Utilization

  • Dynamips는 Emulation작업을 수행하기 위해 상당량의 RAM과 CPU를 사용한다.
    만약 실제 Cisco 7200 Router 상에서 256MB RAM을 요구하는 IOS image를 사용하고자 한다면 이 image를 사용하는 Virtual Router Instance는 256MB RAM을 차지하게 된다.
    Dynamips는 또한 JIT Translations Cache를 위해 Default로 64MB RAM(Unix) / 16MB RAM(Windows)을 할당한다.
  • Default로서 Dynamips는 Router의 Virtual Memory를 위해 Memory Mapped Files를 사용하기 때문에 보통 실제 System에서 사용되는 RAM의 양은 현저하게 적을 것이다. 작업 Directory 안에서 Virtual Router의 RAM size와 동일한 크기의 임시 "ram" Files를 볼 수 있을 것이다.
    만약 System에 충분한 양의 RAM을 갖고 있다면, 그리고 자신이 무엇을 하는지를 알고 있다면, 자신의 labs의 Instance들을 위한 mmap을 disable시키기 위해 device default 또는 router Section에서 "mmap=false"로 설정하라.
  • Dynamips는 또한, Router CPU를 instructin-by-instruction으로 emulating하고 있기 때문에, 다량의 CPU 자원을 사용한다. 당초에 Dynamips로서는 언제 Virtual Router의 CPU가 idle 상태가 되는 지 알 방법을 갖고 있지 않으므로 실제 작업을 수행하는 instructions를 실행하듯이 IOS의 idle routines를 구성하는 모든 instructions를 충실하게 실행하게된다. 그렇지만 주어진 IOS image를 위한 "Idle-PC" process를 통해 CPU 사용은 극적으로 줄어들게 될 것이다.

Configuring your Telnet Client
  • Dynagen은 CLI로부터 직접 Virtual Router Console에 접속할 수 있도록 해주는 Console command를 포함하고 있다. 그렇지만 우선 어떤 Telnet client를 사용할 것인지를 dynagen.ini(Windows System의 경우 C:\Program Files\Dynagen에, Unix System의 경우 Dynagen의 Tarball을 풀어 놓은 곳에 위치)에 설정해줘야만 한다. 여기에서 적절한 Line을 uncomment시키거나 원하는 Telnet client를 사용하기 위한 내용을 추가시켜준다.

Network Files
  • Dynagen은 모든 Router, Switch 그리고 Virtual lab을 구성하는 Interconnections의 설정을 저장하기 위해 하나의 단일 "network file"을 사용한다. "Dynagen Sample Labs"에서 몇몇 sample network file들을 찾아볼 수 있다.

Runnig Simple Lab #1

  • Virtual lab을 실행시키기 위해, 먼저 local machine에 Dynamips Server를 구동시킨다.('listening on port 7200'로 구동되는 것이 Default)
  • 이렇게 Dynamips Server가 구동된 상태에서 Dynagen이 simple1.net file을 읽어들이면 이 가상의 Network가 시작된다.
  • Dynamips Server를 구동시키고 Dynagen이 network file을 읽어들이도록 하는 구체적인 방법은 운영체제에 따라 달라진다. 자세한 내용은 영문 Tutorial을 참조.
  • 이 상태에서 Dynagen이 simple1.net을 다 읽어들이고 나면 "Warning: Starting [Routers] with no idle-pc value"와 같은 경고 메시지가 출력되면서 Virtual lab이 시작되고 Dynagen management console이 열린다.(Prompt는 =>)

댓글 2개:

  1. 저도 비슷하게 작업을 합니다. 그 덕에 번역하다가 공개를 못한 글도 꽤 많습니다.

    답글삭제
  2. @도아 - 2008/05/13 12:23
    이 튜토리얼 같은 경우는 다른 사람들에게 보여주기 위한 목적보다는 제가 나중에 편하게 찾아보기 위해서 그리고 아무래도 번역을 하면서 읽으면 좀더 정독할 수밖에 없다는 점에서 시작한 것인데 자꾸 공백이 생기고 보니 내용에 대한 감각을 완전히 상실해 버리게 되었습니다.

    그래도 대신 공백을 갖고 다시보니 오역도 스스로 발견할 수 있는 장점도 있긴 합니다.

    답글삭제