Vývoj embedded aplikací na Cisco Application Extension Platform (AXP) Bc. Jakub Dostál - dos197 Abstrakt: Tento dokument se zabývá možnostmi Cisco AXP AIM modulu, jeho základním nastavením, postupem při upgradu software a také vývojem aplikací pro tento modul. Klíčová slova: Cisco AXP, AIM, AXP SDK, Cisco Linux 1 Úvod...............................................................................................................................2 2 Cisco Application eXtension Platform...........................................................................2 2.1 Přehled hardwarových modulů...............................................................................2 2.2 Architektura Cisco AXP..........................................................................................2 2.3 Aplikační balíčky....................................................................................................3 3 Nastavení routeru a hardwarového modulu....................................................................4 3.1 Vytvoření balíčku....................................................................................................4 3.2 Instalace balíčku......................................................................................................5 3.3 Apache http server na AXP modulu........................................................................6 4 Závěr a shrnutí................................................................................................................8 5 Zdroje..............................................................................................................................9 A Přílohy.......................................................................................................................10
listopad 2009
1/12
1 Úvod Tento projekt se zabývá možnostmi Cisco AXP AIM modulu a jeho základním nastavením. Poté popisuje vývoj aplikace a její instalaci do hardwarového modulu instalovaného ve směrovači Cisco 2800. Práce na projektu navazuje na dříve uskutečněný projekt z předmětu TPS (viz [1]).
2 Cisco Application eXtension Platform Cisco Application eXtension Platform (dále jako AXP) představuje systém hardwarových modulů, které je možné vložit do routerů firmy Cisco a rozšířit tak jejich funkčnost o možnosti hostování různých aplikací. Hardwarových modulů do routerů existuje několik typů, které se liší svou výbavou. Přehled hardwarových modulů je uveden v tabulce 1. Na každém takovém modulu je nainstalován modifikovaný operační systém Linux označovaný prostě Cisco Linux. Jeho prostředí není ovšem založeno na příkazovém interpretu Bash, ale ovládání jejich příkazové řádky se blíží systémům Cisco IOS. Tyto hardwarové moduly představují možnost, jak do routeru integrovat dříve samostatné aplikace (např. webový server nebo aplikační server). K dispozici je však také SDK pro vývojáře aplikací, takže je možné pro AXP modul vytvořit také vlastní aplikace v jazycích C, Java, Perl, Python a Bash.
2.1 Přehled hardwarových modulů V následující tabulce je uveden přehled hardwarových modulů Cisco AXP spolu s jejich výbavou. Cisco ISR
AXP modul
CPU/Paměť
Harddisk
CompactFlash
Cisco 1841 Cisco 2801 Cisco 2811 Cisco 2821 Cisco 2851 Cisco 3825 Cisco 3845
AIM-APPRE-102-K9
300 MHz/256 MB
---
1 GB
Cisco 2811 Cisco 2821 Cisco 2851 Cisco 3825 Cisco 3845
NME-APPRE-302-K9
1.0 GHz/512 MB
80 GB
---
Cisco 2811 Cisco 2821 Cisco 2851 Cisco 3825 Cisco 3845
NME-APPRE-502-K9
1.0 GHz/1.0 GB
120 GB
---
Cisco 3825 Cisco 3845
NME-APPRE-522-K9
1.4 GHz/2.0 GB
160 GB
---
Tabulka 1: Přehled hardwarových modulů Cisco AXP Pozn.: V této tabulce jsou uvedeny hardwarové moduly podporované v AXP SDK verze 1.1. V nedávné době uvolnila společnost Cisco AXP SDK verze 1.5 a spolu s ní se rozšířila nabídka a výbava hardwarových modulů.
2.2 Architektura Cisco AXP Při navrhování architektury Cisco AXP, bylo dbáno na bezpečnost a spolehlivost celého řešení. Proto každá nainstalovaná aplikace běží ve vlastní virtualizované instanci shellu AXP a jsou jí přiděleny limity určující kolik paměti, CPU a diskového prostoru může aplikace využít. Architektura celého systému s běžícími aplikacemi je znázorněna na obrázku 1. listopad 2009
2/12
Obrázek 1 a 2: Architektura Cisco Application eXtension Platform (zdroj: www.cisco.com)
2.3 Aplikační balíčky Dalším bezpečnostním prvkem architektury Cisco AXP je balíčkovací systém pro aplikace. Proto, aby do modulu umístěného v routeru nemohly být nahrány jakékoliv neautorizované aplikace, je nutné, aby byl při sestavování balíčku k aplikaci přiložen vývojový (autorizační) certifikát podepsaný společností Cisco a také privátní klíč. Při nahrávání aplikace do modulu se poté ověřuje, zda podpisy v certifikátech souhlasí s danou platformou na kterou je aplikace instalována. Více informací o balíčcích a jejich vytváření bude uvedeno dále v tomto textu. Pro vývojáře aplikací je také připraveno řešení bez použití skutečného hardwarového modulu umístěného v routeru. Na stránkách společnosti Cisco je k dispozici ke stažení image Cisco Linuxu pro virtuální stroj VMware, který po svém spuštění představuje software AXP modulu. Certifikáty je možné si vyžádat vyplněním formuláře na adrese http://cisco-isr.com:8090/axp/devpartner/ mailer/axpeval.cgi. Tyto klíče mají ovšem dočasnou platnost. Klíče, které mi byly zaslány po vyplnění formuláře měly platnost od 13.10.2009 do 10.2.2010. Pro stále platné klíče je nutné se registrovat na úroveň „Registered Developer“ (bližší informace na stránkách společnosti Cisco - http://www.cisco.com/go/axpdev)
listopad 2009
3/12
3 Nastavení routeru a hardwarového modulu Předtím než přistoupíme k popisu vývoje, sbalení a instalace aplikace je nutné vše důkladně nastavit. Jedná se o nastavení IP adresy hardwarového modulu a výchozí brány pro modul, tak aby byl pro router viditený a přístupný. Pro ilustraci je níže uveden obrázek „topologie“ zapojení servisního modulu v routeru.
Obrázek 3: Nastavení IP adres pro Cisco AXP modul RA> enable RA# configure terminal RA(config)# interface Service-Engine 1/0 RA(config-int)# ip address 192.168.2.1 255.255.255.0 RA(config-int)# no shutdown RA(config-int)# service-module ip address 192.168.2.2 255.255.255.0 RA(config-int)# service-module ip default-gateway 192.168.2.1 RA(config-int)# end RA# Přihlášení do shellu servisního modulu je možné příkazem RA# service-module Service-Engine 1/0 session Trying 192.168.2.1, 2130 … Open se-192-168-2-2> V tuto chvíli se nacházíte v příkazovém řádku aplikačního modulu. K dispozici jsou dva možné režimy. Režim EXEC, který slouží pro spouštění aplikací a režim config pro konfiguraci aplikačního modulu i parametrů jednotlivých aplikací.
3.1 Vytvoření balíčku Před vytvořením balíčku je doporučeno si na počítači, na kterém budeme software vyvíjet, připravit následující adresářovou strukturu. /axp# /axp_1.1.5 /keys /source /output
– adresář se soubory AXP SDK verze, která souhlasí s verzí AXP na modulu – adresář, kam budou umístěny certifikáty potřebné pro vytvoření balíčku – adresář se zdrojovými soubory – výstupní adresář, do kterého budou vytvořeny *.pkg a *.prt1 soubory balíčku
Po dokončení tohoto kroku můžeme přistoupit k samotnému vývoji aplikace. V tomto dokumentu se nezabývám vývojem nějaké speciální aplikace, ale pro vytvoření balíčku a otestování procesu instalace jsem použil připravené zdrojové soubory aplikace helloworld.
listopad 2009
4/12
Pokud tedy máme zdrojové soubory aplikace připraveny, můžeme přistoupit k samotnému vytvoření balíčku pomocí skriptu pkg_build.sh. Vytvoření balíčku je možné více způsoby. 1.Interaktivním režimem, kdy se skript ptá na jednotlivé parametry 2.Dávkovým příkazem, kdy jsou skriptu předány parametry příkazové řádky 3.Pomocí Packaging GUI (využívá AXP SDK a je k dispozici na webu na adrese [2]) Pro vytvoření balíčku jsem vyzkoušel všechny možné způsoby a nejvíce se mi ozvědčily způsoby 2 a 3. Pro ukázku vytvoření balíčku použiji způsob 2 a popíšu také jednotlivé parametry. pkg_build.sh --project-dir 'helloworld_app/package' --auth-bundle 'keys/auth_bundle.sig' --private-key 'keys/private.key' --name 'helloworld' --version '1.0' --description 'hello hello' --uuid '1c741d0d-9eac-42b9-9b0f-caa3fd41dede' --source-dir 'helloworld_app/build' --disk-limit '10M' --memory-limit '500M' --cpulimit '1000' --swap 'OFF' --postinstall 'bin/post-install.sh' Popis jednotlivých parametrů skriptu pkg_build.sh --project-dir 'helloworld_app/package' Adresář projektu do kterého budou umístěny vygenerované soubory *.pkg a *.prt1 --auth-bundle 'keys/auth_bundle.sig' --private-key 'keys/private.key' Cesty k certifikátům auth_bundle.sig a privátnímu klíči (uložené v adresáři /keys) --name 'helloworld' --version '1.0' --description 'hello hello' Název, verze a doplňující popis k balíčku --uuid '1c741d0d-9eac-42b9-9b0f-caa3fd41dede' UUID balíčku, svůj význam má při generování balíčku, který závisí na jiných instalovaných balíčcích (add-on) --source-dir 'helloworld_app/build' Adresář se zdrojovými soubory balíčku --disk-limit '10M' --memory-limit '500M' --cpu-limit '1000' Limity pro disk, paměť a CPU, které může aplikace využít --swap 'OFF' přepínač, zda se použije odkládací oddíl (swap) --postinstall 'bin/post-install.sh' cesta k souboru post_install.sh, který se spouští po instalaci aplikace a umožňuje přístup ke konzoli shellu – více informací o přístupu ke konzoli naleznete v [5] (str. 15 Obtaining Console Access for the Application). Přístup do příkazového řádku je pak možný příkazy linux shell nebo connect console. Zadáním tohoto příkazu dojde k vytvoření balíčku a ve výstupním adresáři bychom měli nalézt dva soubory, které se použijí pro instalaci balíčku na hardwarový modul. Jde o soubory •
..pkg a •..prt1 kde a představují název aplikace a její verzi, kteoru jsme zadali při vytváření balíčku. V případě aplikace helloworld by se jednalo o soubory helloworld.1.0.pkg a helloworld.1.0.prt1. Pozn. Při vytváření balíčku, jsem se setkal s problémem, který již popisovali kolegové, kteří zkoušeli dříve AXP modul na Vmware [1]. Problém byl v chybějícím symbolickém linku na soubor libpcre.so. Po doplnění tohoto souboru proběhlo vytvoření balíčku bez problému.
3.1 Instalace balíčku Instalace vytvořeného balíčku na AXP modul je možná pouze z FTP serveru s vytvořeným a povoleným uživatelem. Pro vytvoření FTP serveru jsem použil pracovní stanici v laboratoři s operačním systémem
listopad 2009
5/12
Ubuntu Linux, na které jsem zprovoznil aplikaci vsftpd. Stanici jsem spojil s ethernetovým rozhraním routeru a nastavil jsem IP adresu stanice, výchozí bránu a IP adresu rozhraní routeru. root@cnap-desktop# ifconfig eth1 172.16.0.2 netmask 255.255.255.0 root@cnap-desktop# route add default gw 172.16.0.1 RA> enable RA# configure terminal RA(config)# interface fastEthernet 0/0 RA(config-int)# ip address 172.16.0.1 255.255.255.0 RA(config-int)# no shutdown RA(config-int)# end RA# Poté jsem přistoupil k instalaci vytvořeného balíčku na hardwarový modul. To je možné provést dvěma způsoby – buď nejprve nastavit globální FTP server, který se použije pro instalaci jakékoliv aplikace a nebo specifikovat url ftp serveru při každé instalaci aplikace. se-192-168-2-2> software download server url ftp://172.16.0.2/ username cnap password cisco se-192-168-2-2> software install add helloworld.1.0.pkg nebo se-192-168-2-2> software install add url ftp://172.16.0.2/helloworld.1.0.pkg username cnap Zadáním tohoto příkazu se hardwarový modul spojí s FTP serverem na zadané adrese a stáhne si soubory *.pkg a *.prt1. V těchto souborech nalezne všechny potřebné informace a tak dojde nejprve k ověření certifikátů a poté k instalaci aplikace do hardwarového modulu. Po instalaci aplikace dojde k restartu AXP modulu a po jeho novém startu je pro nově nainstalovanou aplikaci vytvořena virtuální instance shellu a aplikace je v ní spuštěna. Po opětovném startu modulu je možné ověřit, zda byla aplikace nainstalována příkazem: se-192-168-2-2> show software versions Na následujícím obrázku je zobrazen výstup tohoto příkazu Na tomto obrázku vidíte, že na hardwarovém modulu je nainstalována Application eXtension Platform verze 1.1.5 a její komponenty (aplikace). Pozn. Při prvních pokusech o instalaci vytvořeného balíčku, byly všechny pokusy marné a balíček se mi na modul nedařilo nainstalovat. Zjistil jsem, že na AXP modulu je nainstalován software verze 1.0.1, která je značně zastaralá a společnost Cisco mezitím změnila přístup k práci s certifikáty. Bylo rozhodnuto o přeinstalování software AXP na verzi minimálně 1.1.5. Popis celého procesu upgrade je uveden v příloze A.
3.2 Apache http server na AXP modulu Jako další ukázku použití AXP modulu jsem zvolil instalaci http serveru Apache na hardwarový modul. Na stránkách pro vývojáře AXP je k dispozici balíček, který obsahuje http server Apache vyextrahovaný z linuxové distribuce Fedora Core 4. Tento balíček je pro instalci na jakýkoliv hardwarový modul nutné znovu „přebalit“ skriptem pkg_build.sh. Nebudu již znovu popisovat způsob vytvoření balíčku, který je shodný s postupem při vytváření testovací „Hello world“ aplikace. Liší se pouze v jinak nastavených limitech pro disk a paměť. Po ukončení procesu vytváření balíčku vznikly soubory apache.1.0.pkg a apache.1.0.prt1. listopad 2009
6/12
Obrázek 4: Výstup příkazu show software versions – seznam instalovaných aplikací Tyto soubory jsem příkazem se-192-168-2-2> software install add url ftp://172.16.0.2/apache.1.0.pkg username cnap nahrál na hardwarový modul a po jeho restartu jsem zadáním ip adresy modulu (192.168.2.2) do internetového prohlížeče vyzkoušel funkčnost nainstalovaného http serveru. Instalace serveru Apache byla úspěšná jak dokládá následující obrázek. Přístup k instanci shellu ve které běží nainstalovaný http server je možná příkazem se-192-168-2-2> app-service apache se-192-168-2-2(exec-appservice)# connect console Tímto krokem získáte přístup k příkazové řádce a můžete vkložit vaši HTML prezentaci do adresáže /var/ www/html a provozovat tak na AXP modulu společnosti Cisco vlastní webový server.
listopad 2009
7/12
Obrázek 5: Apache httpd z distribuce Fedora Core běžící na Cisco AXP
4 Závěr a shrnutí V tomto projektu jsem se zabýval možnostmi Cisco AXP AIM modulu instalovaného v routeru řady Cisco 2800. V předchozím projektu z předmětu Technologie počítačových sítí, se kolegové pokoušeli zprovoznit aplikace na Cisco AXP pod virtuálním strojem VMware. Kolegové ve svém projektu popisovali problémy s vytvořením balíčku a instalací aplikace. Oproti tomu jsem já pracoval na skutečném hardwarovém modulu. Podařilo se mi po počátečních problémech vytvořit a nainstalovat jednoduchou aplikaci „hello world“. Poté, když jsem překonal všechny problémy s vytvořením balíčku a jeho instalací na hardwarový modul, jsem se rozhodl vyzkoušet na AXP modulu použitelnější aplikaci. Mojí volbou byla instalace Apache http serveru a tak z routeru se mi tak podařilo vytvořit malý webový server. V přílohách k tomuto projektu jsem sepsal nejčastější dotazy okolo Cisco Application eXtension Platform a také postup upgrade hardwarového modulu.
listopad 2009
8/12
5 Zdroje [1] Gadula P., Toman A. Průzkum možností Cisco AXP modulu do směrovačů Cisco http://wh.cs.vsb.cz/sps/images/1/14/Cisco-APX-Gadula-Toman.pdf [2] Cisco AXP developer knowledge base [online] http://developer.cisco.com/web/axp/docs [3] Cisco Application eXtension Platform User Guide [online]. [4] Cisco Application eXtension Platform Quick Start Guide [online]. [5] Cisco Application eXtension Platform Developer Guide [online]. [6] Cisco Application eXtension Platform Command Reference [online]. Cisco AXP Overview - http://www.cisco.com/en/US/products/ps9701/index.html
listopad 2009
9/12
A Přílohy 1.Často kladené dotazy Seznam přídavných balíčků Společnost Cisco dala kromě vývojového balíčku (SDK) také k dispozici řadu rozšíření v podobě aplikačních balíčků. K dispozici jsou následující rozšíření (add-ons) •axp-app-dev (application development & debug) •axp-cli-plugin (command line interface) •axp-eemapi (Embedded Event Manager API) •axp-iosapi (IOS API) •axp-perl-5.8.8 (podpora aplikací v jazyce Perl) •axp-ssh-4.6p1-k9 (SSH server) •axp-tomcat5 (aplikační server Tomcat) •axp-vserial (Remote Serial Device) Více o možnostech a použití přídavných balíčků (add-ons) naleznete v [5] (str. 23 - Infrastructure Addon Packages). Podporované operační systémy V současné době je pro vývoj aplikací pro Cisco AXP moduly omezeno pouze na operační systémy Linux. Vývoj aplikací na PC pod operačním systémem Windows v současné době není možný. Podle společnosti Cisco vychází OS Cisco Linux (kernel v. 2.6.22, glibc v. 2.5) používaný v AXP modulu z následujících distribucí: •Red Hat •Fedora Core •CentOS Pro uživatele ostatních distribucí není zaručeno, že bude vše fungovat úplně bez problémů. Ve většině případů ale bude jistě k dispozici odpověď na fóru k Cisco AXP – více web (http://developer.cisco.com/web/axp/forums) Více informací je k dispozici na webu společnosti Cisco. Na následující stránce jsou zodpovězeny nejčastejší dotazy k se Cisco AXP http://www.cisco.com/en/US/prod/collateral/routers/ps9701/qa_c67_463943.html .
Upgrade software AXP modulu z verze 1.0.1 na 1.1.5 Z důvodu nekompatibility verze software AXP s vygenerovanými klíči, které jsem obdržel od firmy Cisco, bylo nutné provést upgrade software modulu na novější verzi. Prerekvizity pro upgrade •instalační soubory pro danou platformu ◦axp-k9.aim.1.1.5.tar.gz ◦axp-k9.aim.addon.1.1.5.tar.gz •soubory SDK pro danou platformu ◦axp-sdk.1.1.5.tar.gz •TFTP a FTP server nakonfigurované tak, aby byly pro modul viditelné Upgrade software probíhá s pomocí tzv. boot-helper image, který představuje „záchrannou disketu“ pro AXP modul. Tento soubor se nachází v archivu axp-k9.aim.1.1.5.tar.gz a nazývá se axp-helper-k9.aim.1.1.5. Tento seoubor musí být umístěn na TFTP serveru aby mohl AXP modul s pomocí tohoto souboru nalistopad 2009
10/12
bootovat. Ostatní soubory z archívu je nutné umístit na FTP server odkud se po nabootování stáhnou a nainstalují na modul. Postup ugrade zahájíte přihlášením k AXP modulu service-module Service-Engine 1/0 reset (vyčkejte cca 10 sekund). service-module Service-Engine 1/0 session (opakujte pokud se nepodaří). Vyčkejte na následující zprávu: Please enter *** to change boot configuration. Zadejte “***” pro vstup do konfigurace zavaděče modulu SE- boot-loader> config Vložte následující parametry IP address
IP adresa servisního modulu, tak jak byla nakonfigurována na route-
ru Subnet mask TFTP server Gateway Default Helper-file Ethernet interface External interface media Default Boot Default bootloader
Maska podsítě pro IP adresu modulu IP adresa tftp serveru IP adresa defaultní brány, tak jak byla nakonfigurována na routeru jméno helper souboru internal copper disk secondary
Zkontrolujte úplnost konfigurace zadáním příkazu SE- boot-loader> show config Vyzkoušejte konektivitu modulu a TFTP serveru SE- boot-loader> ping TFTP-server-address Nechcte AXP modul nabootovat z helper souboru pomocí příkazu SE- boot-loader> boot helper Po načtení souboru helper z TFTP serveru se z tohoto souboru načte servisní menu Welcome to Cisco Systems Service Engine Helper Software Please select from the following 1 Install software 2 Reload module 3 Disk cleanup (Type '?' at any time for help) Vyberte možnost 1 – Install software a zadejte následující parametry Package Name Server URL Username Password
jméno balíčku se softwarem Cisco AXP IP adresa FTP serveru s Cisco AXP software FTP username FTP password
Pokud budete po zadání následujících údajů dotázání, zda chcete smazat disk zařízení a přepsat jej novým software odpovězte yes. Tím zahájíte proces instalace nového firmware a po dokončení instalace dojde k re-
listopad 2009
11/12
startu modulu a nabootování modulu s novým softwarem. Poté můžete již nainstalovat své aplikace nebo addon moduly obsažené v souboru axp-k9.aim.addon.<číslo_verze_AXP>.tar.gz.
listopad 2009
12/12