Czym się różni symulacja od emulacji?

Symulatory sieci stają się coraz bardziej popularne. W świetle nowych rozwiązań testowanie sieci na fizycznym sprzęcie stało się coraz mniej praktykowane – zbyt kosztowe i dość kłopotliwe dla osób ceniących sobie czas i pieniądze. Dlatego też pojawiły się symulatory i sytuacja stała się o wiele prostsza, ponieważ konfigurację urządzeń i ich łączenie można wykonywać na ekranie komputera. Nie ma chyba nic bardziej wygodnego, gdy lecąc samolotem mamy do dyspozycji 20 wirtualnych urządzeń które działają tak jakbyśmy mieli obok siebie całe fizyczne laboratorium z prawdziwymi routerami i przełącznikami.

W przeciągu kilku ostatnich lat dużo się zmieniło w kontekście oprogramowania do symulacji sieci. W tym miejscu przedstawię trzy symulatory: GNS3, EVE-NG i Cisco VIRL. Są one zdecydowanie pewną rewolucją w zakresie możliwości symulacji sieci.

GNS3, EVE-NG i VIRL
GNS3, EVE-NG i VIRL

Nie są one jedyne, jednak ciężko oprzeć się wrażeniu, że to one wychodzą przed szereg na tle innych mniej popularnych. Łączą one za pomocą wirtualnej warstwy fizycznej różne systemy, które pracują na swoich wirtualnych środowiskach. Można w ten sposób stworzyć jedną spójną topologię i przenosić całe sieci na ekran komputera, które działają niemal 1:1.

Wraz z rozwojem symulatorów możliwości są coraz większe. Co za tym idzie zdecydowanie ułatwia to naukę, a przede wszystkim pokazuje, że symulator nie jest już tylko zwykłym programem do przeprowadzania z góry zaplanowanych laboratoriów wyjętych z podręcznika. Powoli staje się on niezbędnym narzędziem do analizy czy sieć działa na pewno tak jak chce tego administrator.

Jeśli sieć zostanie przeniesiona do wirtualnego środowiska, jest zdecydowanie większa szansa na wykrycie potencjalnych błędów w konfiguracji i ułatwi to przeprowadzenie niezbędnych testów. Jest to na pewno duży krok do przodu jeśli chodzi o rozwój teleinformatyki. Bazując na opisanym działaniu symulatorów w tej publikacji skupimy się na jednym – GNS3.

…ale Packet Tracer mi w zupełności wystarcza.

Cofnijmy się dziesięć lat wstecz. Symulowanie sieci pozostawiało wtedy wiele do życzenia. Jako bezpośredni przykład podam Cisco Packet Tracer – jest on rozwijany do tej pory i ma on spore możliwości jednak na pewnym etapie przyswajania wiedzy nie może być traktowany jako wyznacznik tego jak działa sprzęt sieciowy i stworzona przez nas sieć.

Cisco Packet Tracer

Packet Tracer nie emuluje bezpośrednio systemów na jakich pracują aktywne elementy sieci, a jest on jedynie tylko dobrze napisanym programem w którym możemy mieć namiastkę prawdziwych urządzeń sieciowych. W dalszej części wyjaśnimy sobie czym się różni symulator od emulatora.

Symulacja całego środowiska powinna być jak najbardziej zbliżona do warunków rzeczywistych, tak jakby miała ona zacząć działać w środowisku produkcyjnym. Ma ona za zadanie wskazać wszelkie potencjalne błędy konfiguracyjne i stworzyć łatwe do testowania „pole”.

Istotnym celem naszej pracy na symulatorze jest w dużej mierze wykonywanie scenariuszy testowych, tak aby po ich przeprowadzeniu móc zebrać odpowiednie wnioski i wskazać luki w konfiguracji/bezpieczeństwie co skonfrontuje działanie sieci pod względem jej poprawnego zaprojektowania, konfiguracji i podatności na ataki.

Bardzo ważne jest zatem, aby nasza symulacja jak najwierniej odzwierciedlała prawdziwe warunki. Jeśli jesteś początkującym sieciowcem to Packet Tracer może jak najbardziej wystarczyć.

Co jednak jeśli zachcemy przeprowadzić konkretny scenariusz oparty na ściśle zdefiniowanym scenariuszu w którym jest serwer, przełącznik, router i host końcowy? Tu możliwości tego oprogramowania się kończą i czas wytoczyć „ciężkie działa”.

O co chodzi z tą sy(e)mulacją?

Jeśli chodzi o projektowanie i testowanie sieci, terminy emulacja i symulacja są często używane zamiennie. Na potrzeby tej publikacji również tak jest, ponieważ jak będzie to zaraz wyjaśnione, oba terminy w kontekście sieci są ciężkie do zamknięcia w encyklopedycznej definicji.

W większości przypadków oba pojęcia są generalnie zrozumiałe, ale istnieje różnica między emulatorem sieci i symulatorem sieci, zarówno w sensie praktycznym, jak i semantycznym.

Symulator może wykonywać zadania w sposób abstrakcyjny, aby zademonstrować zachowanie sieci i jej składników, podczas gdy emulator może skopiować zachowanie sieci w celu jej funkcjonalnego zastąpienia.

Emulator uruchomi dokładną kopię rzeczywistego systemu operacyjnego. Symulator ma być podobny do rzeczywistego systemu operacyjnego, jednak tylko symuluje jego funkcję. Emulator w kontekście sieci to nie emulowanie systemu, ale grupy urządzeń które ją tworzą wraz z warstwą fizyczną.

GNS3 ma w swojej nazwie „symulator” (Graphical Network Simulator), w tym miejscu wymagany jest jednak dłuższy komentarz, ponieważ nie jest to łatwe to prostego „zaszufladkowania”. Sy/emulacja na przykładzie GNS3 odnosi się do odwzorowania rzeczywistego zachowania sieci poprzez oprogramowanie.

Użytkownicy GNS3 korzystają z tego oprogramowania, głównie w celu emulowania systemów Cisco IOS, ale także innych dostawców. To co odróżnia GNS3 od innych symulatorów (Packet Tracer) to zdolność emulacji routingu i przełączania poprzez uruchamianie systemów jakie pracują np. na przełączniku lub routerze, jak również dołączania prawdziwych maszyn wirtualnych np. za pomocą VirtualBoxa. To już duży argument żeby nazwać GNS3 emulatorem sieci, a nie symulatorem. Nie jest jednak powiedziane że będzie to w 100% idealna emulacja.

Dążąc do idealnej emulacji sieci możemy nigdy jej nie osiągnąć. Jednak jeśli chcemy się do niej jak najbardziej zbliżyć warto mieć na uwadze kilka ważnych aspektów.

Pierwszy z nich to dobór systemów, które będziemy używać. Jeśli chcemy mieć pewność, że nasze emulowane urządzenia działające w sieci będą zachowywały się tak samo jak prawdziwe, musimy upewnić się że użyte obrazy systemów będą pracowały tak samo jakby były na fizycznym sprzęcie typu router, czy switch.

Warto to zauważyć ponieważ Cisco wydaje obrazy systemów przeznaczone do użycia tylko w symulatorze. Mogą one w jakimś stopniu działać inaczej niż systemy bezpośrednio „wyjęte” z urządzeń. Następnie należy upewnić się, że wybrane środowisko w którym uruchamiamy konkretny obraz urządzenia przenosi jego działanie 1:1. Tu mogą (i będą) pojawić się różnice w wydajności.

Jeśli sieć miałaby być w 100% emulowana, musiałaby idealnie odwzorować rzeczywistą infrastrukturę sieciową, co za tym idzie musi brać pod uwagę takie aspekty jak parametry dotyczące prędkości sieci, opóźnienia, zakłócenia spowodowane różnymi zjawiskami, straty pakietów czy też nieprzewidywalne przerwy w działaniu.

Podsumowując GNS3 łączy systemy które są emulowane, dodaje do tego emulację routingu i przełączania – warstwę fizyczną. Z racji na pracę opartą na strukturze wirtualnej ciężko oszacować wydajność i wierność takiego rozwiązania. Dodatkowo jeśli pominiemy straty w warstwie fizycznej, emulacja będzie mniej dokładna. Wyniki będą jednak bardzo bliskie działa rzeczywistej sieci.

Takie warunki umożliwią już przeprowadzanie odpowiednich laboratoriów na sieci celem rozwiązywania różnych problemów, co w symulowanej sieci byłoby bardzo utrudnione ze względu na zbyt duże różnice w działaniu. Granica pomiędzy emulacją, a symulacją na przykładnie GNS3 jak i innych alternatywnych symulatorów powoli się zaciera i coraz ciężej jest tu opisać dokładną definicję.

Gdzie jest granica między symulacją a emulacją?

Ze względu na mnogość konfiguracji i możliwość łączenia ze sobą wielu systemów, nawet najmniejszy czynnik, czy parametr może zmienić naszą idealną sieć, którą określamy emulowaną na symulowaną.

Komputer na pewnym etapie przyczyni się w jakimś stopniu do manipulacji całej emulacji – jest to podyktowane ograniczeniami sprzętowymi. Należy podkreślić, że nie da się idealnie emulować warstwy fizycznej, ponieważ nie da się przecież w pełni przewidzieć jak zachowa się prawdziwe medium transmisyjne w kontekście strat na nim.

Sieć zaimplementowana w środowisku symulacyjnym na komputerze, w szczególności warstwa fizyczna, może być szybsza lub wolniejsza – jest tu duża zależność od mocy procesora i zasobów komputera. Te różnice byłyby jednak w skali „mikro”. Z drugiej strony fizyczne okablowanie też oddziałuje na szybkość łączy, jednak robi to w zupełnie inny, wspomniany już nieprzewidziany sposób. Na koniec należy dodać, że moc obliczeniowa komputera jest skończona.

GNS3 jest ciągle rozwijany, pojawiają się również inne symulatory sieci. Możliwości symulacji sieci się poszerzają, a twórcy symulatorów prześcigają się w wydawaniu coraz to wierniejszych symulatorów. GNS3 już oferuje manipulację parametrami takimi jak opóźnienia czy straty pakietów, można więc bardziej zbliżyć się do idealnej emulacji. Twórcy oprogramowania GNS3 nawet umieścili już informację, w której informują, że GNS3 jest już emulatorem.

Jako suplement analizowanego tu tematu załóżmy scenariusz, w którym stworzyliśmy sieć z obrazów systemów dokładnie takich samych jak pracują na fizycznych urządzeniach. Jeśli skonfigurujemy ją w sposób, który umożliwi identyczne zachowanie jak rzeczywista, czyli uwzględniając różne straty w warstwie fizycznej to wtedy sieć będzie bliska idealnej emulacji.

Jeśli natomiast dodamy do niej system, który będzie wykonywał np. funkcję switcha Cisco, ale będzie to tylko urządzenie symulujące jego funkcję, a nie rzeczywisty obraz IOS, otrzymamy środowisko mieszane, które w rezultacie sprawi, że całość będzie już bardziej symulacją – ze względu na element w sieci który tylko symuluje przełącznik.

Na koniec mała dygresja. Użytkownicy pracujący na em/symulatorach sieci nie zwracają przecież tak dużej uwagi na to, czy wybrane przez nich oprogramowanie na pewno idealnie emuluje sieć. Nikt nie przeanalizuje ile pakietów uciekło mu w sy/emulatorze i nie porówna tego do strat w rzeczywistości.

Najważniejszym celem jest po prostu możliwość prostego łączenia ze sobą urządzeń w środowisku graficznym, budowanie topologii i przeprowadzanie laboratoriów. Dlatego Cisco słusznie wydało systemy przeznaczone do działania na symulatorach. Mimo, że mogą się one różnić od rzeczywistych to po prostu lepiej działają.

Profesjonalne urządzenia takie jak switch, nie mogą zostać po prostu „zamknięte” do działania w komputerze ogólnego przeznaczenia. Podczas korzystania z komputera całe przetwarzanie odbywa się na poziomie oprogramowania, zazwyczaj systemu operacyjnego.

Na specjalistycznym sprzęcie sieciowym np. Cisco, system operacyjny (tu IOS) ściśle współpracuje z pewnymi konkretnymi i często zastrzeżonymi podzespołami. Przekazuje on przetwarzanie do dedykowanych układów scalonych ASIC. Dane przetwarzane na poziomie sprzętowym nie obejmują głównego procesora z uruchomionym systemem IOS – to dedykowane układy ASIC przejmują na siebie często znaczne obciążenie, co skutkuje szybszym działaniem i mniejszym opóźnieniem.

Z drugiej strony obsługiwanie danych na poziomie oprogramowania umożliwia bardziej złożone przetwarzanie. Większość logiki urządzeń Cisco Catalyst jest implementowana na poziomie sprzętowym, w związku z tym emulowanie switcha Cisco oznaczałoby konieczność zastosowania inżynierii wstecznej i ponownego zaimplementowania większości funkcji przełącznika. Cisco zrobiło jednak kawał dobrej roboty, mianowicie stworzyło w pełni działający obraz switcha przeznaczony do działania na symulatorach.

Z kolei większość logiki routerów Cisco występuje na poziomie software’owym jako część oprogramowania układowego jakim jest IOS. Emulowanie sprzętu jakim jest router jest zatem o wiele łatwiejsze niż emulowanie przełączników. Nie ma tu problemu wynikającego z przetwarzania na poziomie ASIC.

W kolejnej części zajmiemy się wprowadzeniem do GNS3.

Jakiego symulatora używasz najczęściej do labowania i dlaczego właśnie ten a nie inny?


🗳 Jak przydatna była ta publikacja?

Średnia ocena / 5. Ilość głosów:

Dziękuję za ocenę! Zapraszam Cię do obserwowania NSS w mediach społecznościowych!

Przykro mi, że ta publikacja okazała się być dla Ciebie nieprzydatna!

Uwaga: Twój głos będzie liczony tylko jeśli udzielisz feedbacku używając formularza poniżej.

author avatar
Bartłomiej Piechota

Autor gościnny na łamach Na Styku Sieci

Twój adres email nie zostanie opublikowany. Wszystkie pola są wymagane

Subscribe
Powiadom o
guest
2 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
Wojciech Kryska

Na pytanie odpowiem – używam PT. Głównie dlatego, że “obrabiane” przeze mnie problemy sieciowe dotyczą prostych spraw i edukowania innych pracowników. Faktem jest, że gdy dociera się do takich tematów jak telefonia IP, 802.1X, PBR czy nawet budowanie sieci kampusowej z DMZ, to zwyczajnie PT staje się za ciasny i za krótki.
Miałem kiedyś do czynienia z GNS, ale to było 8 lat temu i mój sprzęt też nie był specjalnie wydajny, toteż obsłużenie jednego obrazu IOS z Cisco 7200 wyczerpywało zarówno system, jak i użytkownika…
Pozdrawiam!

Damian Michalak

Każde z rozwiązań ma swoje wady i zalety 🙂 PT doceniam przede wszystkim za jego walory edukacyjne – w świetny sposób pozwala zajrzeć w detale komunikacji (podejrzeć uproszczone zawartości pakietów), na dodatek fajnie jest to zwizualizowane. Do nauki jak znalazł, ale również tak jak wspomniałeś do labowania prostych scenariuszy. Co do GNS3 to w ciągu 8 lat wiele się zmieniło i dzisiaj nie miewam już problemów z wirtualizowaniem sporych ilości urządzeń nawet na sprzęcie o bardzo przeciętnych parametrach. No i na dodatek mamy dzisiaj możliwości odpalania zarówno GNS3 jak i EVE-NG w chmurze, gdzie możemy sobie postawić VMkę o takich parametrach jakie są nam potrzebne. Labowanie nigdy nie było prostsze niż dzisiaj 🙂 Dzięki za komentarz @wojciechkryska:disqus!

Top