OpenIMSCore
IP Multimedia Subsystem tai IP Multimedia Core Network Subsystem (IMS) on arkkitehtuurikehys joka tarjoaa IP-pohjaisia multimediapalveluita tuomalla IP-pohjaiset verkot osaksi langatonta teknologiaa. IMS tarjoaa Quality of Serviceä (QoS), instant messagingia (IM), Voice over LTE (VoLTE) kiinteisiin ja mobiiliverkkoihin. OpenIMSCore on avoimen lähdekoodin projekti jota hallinnoi saksalainen Fraunhofer FOKUS organisaatio, joka keskittyy uusien teknologioiden tutkimiseen ja kehittämiseen.
OpenIMS sisältää neljä osaa:
Home Subscriber Server (HSS)
Proxy – Call Session Control Function (P-CSCF)
Interrogating – Call Session Control Function (I-CSCF)
Serving – Call Session Control Function (S-CSCF)
Asennus tapahtuu Debian 8 jakelulle. Asennetaan subversion ja luodaan hakemistot OpenIMS:lle.
# apt-get -y install subversion ... 0 upgraded, 5 newly installed, 0 to remove and 71 not upgraded. ... # mkdir /opt/OpenIMSCore ; mkdir /opt/OpenIMSCore/ser_ims ; mkdir /opt/OpenIMSCore/FHoSS # cd /opt/OpenIMSCore
# svn checkout https://svn.code.sf.net/p/openimscore/code/ser_ims/trunk ser_ims ... Checked out revision 1198. # svn checkout https://svn.code.sf.net/p/openimscore/code/FHoSS/trunk FHoSS ... Checked out revision 1198.
Asennetaan tarvittavat paketit. Riippuen Linux-jakelun versiosta, jotkut paketit voivat poiketa versioltaan tai nimeltään.
# apt-get -y install openjdk-7-jdk make screen mysql-server ant ipsec-tools \ libmysqlclient-dev libcurl4-gnutls-dev libxml2 libxml2-dev bison flex bind9 ... 10 upgraded, 81 newly installed, 0 to remove and 64 not upgraded. ...
Oletuksena OpenIMSCore kuuntelee localhost-osoitetta. Jotta clientit pääsevät palvelimeen ulkopuolelta käsiksi, täytyy IP-osoite muuttaa ja luoda tarvittavat zonet DNS-palvelimelle. Kopioidaan nimipalvelimen IMS-tietueet bindin hakemistoon ja muutetaan palveluiden IP-osoitteet C-luokan IP-avaruuteen, tässä tapauksessa palvelimen 192.168.0.50-osoitteeseen. Muutetaan domain foo.bariksi.
# cp /opt/OpenIMSCore/ser_ims/cfg/open-ims.dnszone /etc/bind/foo.bar.dnszone # cd /etc/bind/ # sed -i 's/127.0.0.1/192.168.0.50/' foo.bar.dnszone # sed -i 's/open-ims.test/foo.bar/g' foo.bar.dnszone
Luodaan 192.168.0.0 verkon reverse zone ja luodaan OpenIMS:lle oma konfiguraatio-tiedosto bindiin.
# vi foo.bar-rev.192 $TTL 1W $ORIGIN 0.168.192.IN-ADDR.ARPA. @ 1D IN SOA ns.foo.bar. hostmaster.foo.bar. ( 2006101001 ; serial 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum 0.168.192.IN-ADDR.ARPA. IN NS ns.foo.bar. 50 IN PTR foo.bar. 50 IN PTR pcscf.foo.bar. 50 IN PTR icscf.foo.bar. 50 IN PTR scscf.foo.bar. 50 IN PTR hss.foo.bar.
# vi foo.bar zone "foo.bar" { type master; file "/etc/bind/foo.bar.dnszone"; }; zone "0.168.192.in-addr.arpa" { type master; file "/etc/bind/foo.bar-rev.192"; allow-query {any;}; notify no; };
Konfiguroidaan bind käyttämään IMS:lle luotuja zoneja, käynnistetään bind uudelleen ja testataan pingillä.
# echo 'include "/etc/bind/foo.bar";' >> named.conf.local # echo "nameserver 192.168.0.50" > /etc/resolv.conf # service bind9 restart # ping -c 1 pcscf.foo.bar PING pcscf.foo.bar (192.168.0.50) 56(84) bytes of data. 64 bytes from palvelin (192.168.0.50): icmp_seq=1 ttl=64 time=0.011 ms --- pcscf.foo.bar ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.011/0.011/0.011/0.000 ms
Käännetään modulit ja asennetaan. Tehdään myös tarvittavat muutokset asetus-tiedostoihin.
# cd /opt/OpenIMSCore/ser_ims/ # make install-libs all # cd /opt/OpenIMSCore/FHoSS # ant compile deploy # cd /opt/OpenIMSCore # cp /opt/OpenIMSCore/ser_ims/cfg/* /opt/OpenIMSCore/ # ./configurator.sh Domain Name:foo.bar IP Adress:192.168.0.50 File to change ["all" for everything, "exit" to quit]:all # sed -i 's/open-ims.test/foo.bar/g' /opt/OpenIMSCore/FHoSS/deploy/DiameterPeerHSS.xml # sed -i 's/127.0.0.1/192.168.0.50/g' /opt/OpenIMSCore/FHoSS/deploy/DiameterPeerHSS.xml # sed -i 's/open-ims.test/foo.bar/g' /opt/OpenIMSCore/FHoSS/scripts/*.sql # mysql -u root -p < ser_ims/cfg/icscf.sql Enter password: # mysql -u root -p < FHoSS/scripts/hss_db.sql Enter password: # mysql -u root -p < FHoSS/scripts/userdata.sql Enter password: # sed -i 's/http:\/\/www.w3.org\/2001\/xml.xsd/file:\/\/\/opt\/OpenIMSCore\/FHoSS\/xsd\/xml.xsd/g' \ /opt/OpenIMSCore/FHoSS/xsd/ZhDataType.xsd
Valinnaista: Muutetaan *cscf käynnistys-scriptejä niin, että ajettavat prosessit nimetään. Helpottaa mahdollista debugausta. Muutama huomio käytettyihin portteihin: icscf kuuntelee porttia 3869 ja scscf porttia 3870. HSS kommunikoi näiden porttien kautta icscf:n ja scscf:n kanssa. pcscf kuuntelee Clien-yhteyksiä portissa 4060.
# cd /opt/OpenIMSCore/ # vi pcscf.sh #!/bin/bash ./ser_ims/cfg/killser pcscf setkey -F setkey -FP export LD_LIBRARY_PATH="/usr/local/lib/ser" bash -c "exec -a pcscf /opt/OpenIMSCore/ser_ims/ser -f /opt/OpenIMSCore/pcscf.cfg -D -D"
# vi icscf.sh #!/bin/bash ./ser_ims/cfg/killser icscf bash -c "exec -a icscf /opt/OpenIMSCore/ser_ims/ser -f /opt/OpenIMSCore/icscf.cfg -D -D" ipcs -s
# vi scscf.sh #!/bin/bash ./ser_ims/cfg/killser scscf export LD_LIBRARY_PATH=/usr/local/lib/ser bash -c "exec -a scscf /opt/OpenIMSCore/ser_ims/ser -f /opt/OpenIMSCore/scscf.cfg -D -D" ipcs -s
# vi FHoSS/deploy/startup.sh #!/bin/bash # -------------------------------------------------------------- # Include JAR Files # -------------------------------------------------------------- echo "Building Classpath" CLASSPATH=$CLASSPATH:log4j.properties:. for i in lib/*.jar; do CLASSPATH="$i":"$CLASSPATH"; done echo "Classpath is $CLASSPATH." # -------------------------------------------------------------- # Start-up # -------------------------------------------------------------- bash -c "exec -a HSS $JAVA_HOME/java -cp $CLASSPATH de.fhg.fokus.hss.main.HSSContainer $1 $2 $3 $4 $5 $6 $7 $8 $9"
HSS vaatii ympäristömuuttujiin java-polut.
# vi fhoss.sh #!/bin/bash export JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/bin" export CLASSPAT=.$JAVA_HOME/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:/usr/lib/jvm/java-7-openjdk-amd64/lib/ cd /opt/OpenIMSCore/FHoSS/deploy/ ./startup.sh
Käynnistetään prosessit screeniin. Tiettyyn screeniin pääsee screen -r "nimi" -komennolla. Esim. screen -r pcscf. Screen kiinnitetään takaisin Crtl+a+d. Screenit voi käynnistää yksitellen tai luoda käynnistystiedoston, joka käynnistää kaikki OpenIMS:n palvelut.
# vi openims.sh #!/bin/bash screen -dmS pcscf /opt/OpenIMSCore/pcscf.sh screen -dmS icscf /opt/OpenIMSCore/icscf.sh screen -dmS scscf /opt/OpenIMSCore/scscf.sh screen -dmS hss /opt/OpenIMSCore/fhoss.sh
# chmod +x openims.sh # ./openims.sh
Windowsille löytyy Boghe-IMS Client, jolla voidaan testata IMS:n toimintaa. Windowsissa täytyy vaihtaa nimipalvelimeksi palvelimen IP-osoite 192.168.0.50. Boghen asetuksista tulee vaihtaa protokollaksi UDP ja pcscf-palvelimen portiksi 4060. OpenIMSCoressa on kaksi valmista käyttäjää; Bob ja Alice joiden salasanat ovat bob ja alice. IMS-palvelimelle voi luoda lisää käyttäjiä ottamalla selaimella yhteyttä palvelimen osoitteeseen 192.168.0.50:8080. Oletustunnus ja salasana hss/hss.



