tag:blogger.com,1999:blog-60750143614518821712024-03-13T06:42:32.793-05:00Computer Science"Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose. You are already naked. There is no reason not to follow your heart." --- Steve JobsSon Dinhhttp://www.blogger.com/profile/07295136489358607599noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-6075014361451882171.post-257654883102331402012-03-13T11:47:00.000-05:002012-03-13T11:47:36.940-05:0023h47m_13March2012<div class="p1">Oops, I see some moss in my blog :). Long time no writing.</div><div class="p1"><br />
</div><div class="p1">Well, it's my intention to write an entry about my list of computer science books with specialism on system and computer network for a long time. Of course, I don't have enough time to crunch and digest all the books in this list, but all of them are considered and surveyed carefully by myself. Computer science was not my major when I were a student but telecommunication, thus I have to read many books and materials to fill out a plenty of gaps in my knowledge in this field. And, it is my habit to make a cautious choice each time I need to read a new subject in computer science, because I don't want to waste my time for an inappropriate book. Hope that this list will be useful for someone like me.</div><div class="p2"><br />
</div><div class="p1">1. Programming</div><div class="p1">The C programming language, by Brian Kernighan and Dennis Ritchie</div><div class="p1">The C++ programming language, by Bjarne Stroustrup</div><div class="p1">Effective Java, by Joshua Bloch</div><div class="p1">Code complete, by Steve McConnell</div><div class="p1">Dive into Python, by Mark Pilgrim</div><div class="p2"><br />
</div><div class="p1">2. Analysis and design</div><div class="p1">Design patterns - Elements of reusable object oriented software, by Gang of four</div><div class="p1">Pattern-Oriented Software Architecture (5vol), by Douglas Schmidt</div><div class="p1">Documenting Software Architecture - views and beyond, by Paul Clements, et al</div><div class="p1">UML Distilled, by Martin Fowler</div><div class="p2"><br />
</div><div class="p1">3. OS and system</div><div class="p1">Modern operating systems, by Andrew Tanenbaum</div><div class="p1">Linkers and loaders, by John Levine</div><div class="p1">Computer systems - A programmer perspectives, by Randal Bryant and David Hallaron</div><div class="p1">Advanced programming in the UNIX environment, by W.Richard Stevens</div><div class="p1">Programming with POSIX thread, by David Butenhof</div><div class="p2"><br />
</div><div class="p1">4. Networking</div><div class="p1">UNIX Network programming vol1 - The sockets networking API, by W.Richard Stevens</div><div class="p1">UNIX Network programming vol2 - Interprocess communication, W.Richard Stevens</div><div class="p1">Computer networking, a top down approach, by James F.Kurose and Keith Ross</div><div class="p1">TCP IP Illustrated (3 vol), again by W.Richard Stevens</div><div class="p1">Communication networking - An analytical approach, by Anurag Kumar, et al</div><div class="p2"><br />
</div><div class="p1">Some lines of description and may be downloaded link will be added soon :-/</div><div class="p1">My two cents,</div>Son Dinhhttp://www.blogger.com/profile/07295136489358607599noreply@blogger.com9tag:blogger.com,1999:blog-6075014361451882171.post-85771830361481215282010-11-19T05:44:00.002-06:002010-11-19T11:05:56.506-06:00SIP over TCP and UDP1. With TCP<br />
- Sender: SIP message is not limited in its size. When user calls system call to send SIP message, this message can be divided into more than 1 TCP segment depending on window size of receiver. Each TCP segment then can be fragmented to more than one IP packets by IP layer. This fragmentation is necessary for sending data through link layer with a particular MTU.<br />
For eg, i want to send 4kB SIP message, so i call send() with input is buffer of this message. The message will be splitted to 2 TCP segments depend on window size at receiver: segment 1 with size of 2,1kB and segment 2 with size of 1,9kB. Then say i use Ethernet interface with MTU is 1500 bytes, so segment 1 is divided into 2 fragments: fragment 1 has size of 1kB, fragment 2 has size of 1,1kB. The same step with segment 2, it will be divided into 2 fragments: one with 1kB and one with 0,9kB. Totally we have 4 IP packets sent through Ethernet interface.<br />
<br />
- Receiver: IP layer is in charge of reassemblying IP packets to reproduce the TCP segment. So IP layer returns to transport layer (here is TCP) TCP segments correspond to TCP segments sent from sender.<br />
Kernel then saves that data to kernel's buffer and notify to user by returning recv() or read(). Because a SIP message may be sent used more than 1 segments, receiver may be need to call more than 1 read() to receive all message. So receiver need to check data each time read() return to know the end of message is reached or not.<br />
Return to former example, receiver's IP layer reassembles 2 first packets to reproduce first TCP segment,<br />
then save its data to kernel's buffer. read() then returns to user that data. So user need to check whether he receives all message content or not. If not, he continues calling to read(), wait for second TCP segment come and then check it.<br />
<br />
2. With UDP<br />
UDP is datagram protocol, so each time sender call send() or write() with input is buffer to SIP message,<br />
all that SIP message will be contained in UDP datagram before can be fragmented at IP layer. At receiver side, it just calls recv() or read() one time to receive all message. It means that the number of calls to send() at<br />
sender is the same with the number of calls to recv() at receiver.<br />
<br />
But unlike TCP, UDP has a limitation in size of data it can transport. So we just can send SIP message with<br />
maximum size of 64kB. And another problem with UDP is if UDP datagram is fragmented by IP layer and any one of these packets lost, receiver has no way to receive all message. So with UDP it is recommended to send SIP message with size lower or equal to (MTU - UDP header - IP header).Son Dinhhttp://www.blogger.com/profile/07295136489358607599noreply@blogger.com5tag:blogger.com,1999:blog-6075014361451882171.post-25891047580442284762010-11-02T11:32:00.010-05:002010-11-02T12:19:05.227-05:00Pantheios logging library - basicThis article's intended to describe briefly about how to build and use logging library Pantheios<br /><br /><span style="color: rgb(255, 102, 0); font-weight: bold;">Section 1:</span> build Pantheios<br />Having built-Pantheios on your system is quite easy. You just need to get Pantheios and Stlsoft from Internet. You can download them from <a href="http://pantheios.sourceforge.net/downloads.html">http://pantheios.sourceforge.net/downloads.html</a> . Then extract them. Stlsoft is only-header file library so you don't need to build it. The other one, Pantheios otherwise need to be built. Assume that two directory that you extracted Pantheios and Stlsoft are "<span style="font-weight: bold;">/home/username/pantheios-1.x.x</span>" and "<span style="font-weight: bold;">/home/username/stlsoft-1.x.x</span>". Now you need to build Pantheios. All makefiles for different compilers (GCC, Visual C++, Intel ...) are contained in <span style="font-weight: bold;">pantheios-1.x.x/build</span>. With my compiler, GCC 4.2, i will use makefile from "<span style="font-weight: bold;">pantheios-1.x.x/build/gcc42.unix/</span>".<br /><br />In order to build all components including core, examples and test, use: <span style="font-style: italic;">make build</span>.<br />In order to build just core libs, use: <span style="font-style: italic;">make build.libs.core</span>.<br />In order to build test components, use:<span style="font-style: italic;"> make test.</span><br /><br />After running makefile, all libraries reside in <span style="font-weight: bold;">pantheios-1.x.x/lib</span>, all executable files reside in <span style="font-weight: bold;">pantheios-1.x.x/bin </span>and pantheios's header files still be in <span style="font-weight: bold;">pantheios-1.x.x/include</span>.<br />Next step is to set environment variable for Pantheios and Stlsoft. You set FASTFORMAT_ROOT environment variable to pantheios-1.x.x<br />folder (in this example is /home/username/pantheios-1.x.x) and STLSOFT environment variable to stlsoft folder (here is /home/username/stlsoft-1.x.x)<br />With bash shell, you can type: <span style="font-weight: bold;">export FASTFORMAT_ROOT='/home/username/pantheios-1.x.x'</span> and <span style="font-weight: bold;">export STLSOFT='/home/username/stlsoft-1.x.x'</span>. Otherwise with C shell (csh, tcsh), you use: <span style="font-weight: bold;">setenv FASTFORMAT_ROOT /home/username/pantheios-1.x.x</span> and <span style="font-weight: bold;">setenv STLSOFT /home/username/stlsoft-1.x.x</span>.<br />OK, now you've already had ready-to-use logging tool. Next section is about how to use Pantheios logging library<br /><br /><span style="color: rgb(255, 102, 0); font-weight: bold;">Section 2:</span> use Pantheios<br />Before using Pantheios, you should catch overview in architecture of Pantheios. Well, Pantheios is comprised by 4 components: application, core, front end and back end component.<br />- Application component provides user with APIs for logging, such as <span style="font-family:courier new;">log_INFORMATIONAL(), log_DEBUG(), log_NOTICE(), log_WARNING(), log_ERROR(), log_CRITICAL(), log_ALERT(), log_EMERGENCY() </span>(8 types of function). Beside, there are classes named inserter classes for handling data types, such as integer, pointer, real and other extent types.<br /><br />- Core component is called by application component and is in charge of implementing functionalities. Core component is the one that don't need<br />user's implementation. On the other hand, the two last components take you more attention.<br /><br />- Front-end component can be imagined as configuration items where process identity and severity level will be determined. For example, if you use on-stock front-end library "fe.simple", you could log with all severity levels except INFORMATIONAL and DEBUG levels ( correspond to <span style="font-family:courier new;">log_INFORMATIONAL()</span> and <span style="font-family:courier new;">log_DEBUG() </span>function ) or if you use on-stock front-end library "fe.all", you can log with all 8 log functions above.<br />User can use on-stock front-end libraries or write one by himself freely.<br /><br />- Back-end component is a component which transport log statement to properly output like standard output (stdout/stderr), file, syslog ... This component is the last part in processing sequence of Pantheios. Just like front-end library, you can use on-stock back-end libraries or<br />implement one.<br />We can summarize processing sequence like this<br /><br /><a href="http://4.bp.blogspot.com/_Mom-i9MEvF4/TNBAgxYm0LI/AAAAAAAAAD8/Qbg1cgN6Was/s1600/Drawing1.jpg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 414px; height: 193px;" src="http://4.bp.blogspot.com/_Mom-i9MEvF4/TNBAgxYm0LI/AAAAAAAAAD8/Qbg1cgN6Was/s400/Drawing1.jpg" alt="" id="BLOGGER_PHOTO_ID_5534994873794875570" border="0" /></a><br />Front-end and back-end component define required interfaces so any implementation of front-end or back-end must implements that interfaces.<br />Front-end requires 4 functions: <span style="font-family:courier new;">pantheios_fe_init(), pantheios_fe_uninit(), pantheios_fe_processIdentity(), pantheios_fe_isSeverityLogged()</span>.<br />If you use stock front-end library such as fe.simple, these functions are implemented in that library (pantheios.1.fe.simple.gcc42.a if you use Linux and GCC 4.2) and ready to use. Otherwise, if don't like available libraries, you can write one by implementing these 4 functions.<br />Back-end requires 3 functions: <span style="font-family:courier new;">pantheios_be_init(), pantheios_be_uninit(), and pantheios_be_logEntry()</span>. In this article i just consider about using stock back-end, so assume that we want to log to console, then we will use be.fprintf back-end library. be.fprintf library defines 3 required functions by calling other 3 specific functions that are particular to logging to console. That 3 called functions are inside bec.fprintf library (in Pantheios, libraries like be.fprintf named Sole Interface Library and libraries like bec.fprintf named Implementation Library ). With this model, core component just need to know required interfaces and specific back-end or front-end can be plugged easily.<br />Now we link our program to both lib: be.fprintf and bec.fprintf ( pantheios-1.x.x/lib/pantheios.1.be.fprintf.gcc42.a and pantheios-1.x.x/lib/pantheios.1.bec.fprintf.gcc42.a in my case ) and it will log to console.<br /><br /><a href="http://2.bp.blogspot.com/_Mom-i9MEvF4/TNBH5Ku7GJI/AAAAAAAAAEM/6HYjaJvBfgE/s1600/Drawing2.jpg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 154px;" src="http://2.bp.blogspot.com/_Mom-i9MEvF4/TNBH5Ku7GJI/AAAAAAAAAEM/6HYjaJvBfgE/s400/Drawing2.jpg" alt="" id="BLOGGER_PHOTO_ID_5535002989497620626" border="0" /></a><a href="http://4.bp.blogspot.com/_Mom-i9MEvF4/TNBAuAEd0CI/AAAAAAAAAEE/K6iWjn6UYSQ/s1600/Drawing2.jpg"><br /></a><br /><span style="color: rgb(255, 102, 0); font-weight: bold;">Section 3:</span> example<br />Here is simple example<br /><br /><code><br />#include "pantheios/pantheios.hpp" //primary header file, always be included<br />#include "pantheios/frontends/stock.h"<br /><br />//Specify process identity<br />const PAN_CHAR_T PANTHEIOS_FE_PROCESS_IDENTITY[] = "test.exe";<br /><br />int main(int argc, char** argv){<br /><br />//Use pantheios::log_xxx() or pantheios::log(xxx, ) with xxx is severity level<br /><br /> try<br /> {<br /> pantheios::log(pantheios::debug, "Entering main(", pantheios::args(argc, argv, pantheios::args::arg0FileOnly), ")");<br /> pantheios::log_DEBUG("debug");<br /> pantheios::log_INFORMATIONAL("informational");<br /> pantheios::log_NOTICE("notice");<br /> pantheios::log_WARNING("warning");<br /> pantheios::log_ERROR("error");<br /> pantheios::log_CRITICAL("critical");<br /> pantheios::log_ALERT("alert");<br /> pantheios::log_EMERGENCY("emergency");<br /><br /> return 1;<br /> }<br /> catch(std::bad_alloc&){<br /> pantheios::log_ALERT("out of memory");<br /> }<br /> catch(std::exception& x){<br /> pantheios::log_CRITICAL("Exception: ", x);<br /> }<br /> catch(...){<br /> pantheios::puts(pantheios::emergency, "Unknown error");<br /> }<br /><br /> return 2;<br />}<br /></code><br /><br />In order to compile this program, we use the following makefile<br /><code><br />#########################<br />#NOTE:<br />#The core lib is essential part<br />#We use fe.all front-end lib so we can log with all severity levels<br />#We use stock fprintf back-end so we link to be.fprintf and bec.fprintf lib<br />#Util lib may be needed so we link to it<br />#########################<br />test.exe: test.o<br /> g++ -o test.exe test.o -L$(FASTFORMAT_ROOT)/lib \<br /> -lpantheios.1.core.gcc42\<br /> -lpantheios.1.be.fprintf.gcc42 -lpantheios.1.bec.fprintf.gcc42\<br /> -lpantheios.1.fe.all.gcc42 -lpantheios.1.util.gcc42<br /><br />test.o: test.c<br /> g++ test.c -c -I$(FASTFORMAT_ROOT)/include -I$(STLSOFT)/include<br />clean:<br /> rm test.o test.exe<br /><br /><span style="font-family:arial;">There are many other useful features introduced by Pantheios, this writing is just basic one. You should refer to Pantheios main page for more tutorial.</span><br /></code>Son Dinhhttp://www.blogger.com/profile/07295136489358607599noreply@blogger.com8tag:blogger.com,1999:blog-6075014361451882171.post-82617663304940382152010-02-06T03:10:00.006-06:002010-02-06T03:42:44.630-06:0006Feb2010 - IPS OSA ConsiderationIn X-IPS, we should not develop OSA Gateway (Service Capability Server) in this project. The reasons are the lack of human resource and OSA SCS should be developed by headquarters in order to provide full Service Capability Features which point to Xener's network functional entities.<br /><br />Otherwise, if we decide to develop our own one, from my point of view, we just can develop Presence Server's Service Capability Feature.<br /><br />When buying fulled-IMS packages to certain Network Operator, we could associate Presence Server as free. Another server such as RLS, XDMS, Content Server, PNA, OSA SCS will be optional to customers if they want to buy.Son Dinhhttp://www.blogger.com/profile/07295136489358607599noreply@blogger.com0tag:blogger.com,1999:blog-6075014361451882171.post-16179276529473912572009-04-21T22:54:00.008-05:002009-04-22T02:13:13.285-05:00Integrate Sailfin and OpenIMS Core in IPv4This entry assume that you installed Sailfin and Open IMS Core successfully, you can consult to install Open IMS Core <a href="http://uctimsclient.berlios.de/openimscore_on_ubuntu_howto.html">here</a>. In order to install Sailfin, go to Sailfin project homepage and you'll have complete tutorials about this task.<br /><div style="text-align: justify;"> In my machine, I installed both in Ubuntu 8.10 with Bind9:<br /></div><ul style="text-align: justify;"><li>Open IMS Core, IP address: 192.168.11.19</li><li>Sailfin, IP address: 192.168.11.18</li></ul><ol style="text-align: justify;"><li> <span style="font-weight: bold; font-style: italic;">Configure DNS in Sailfin machine</span><br /></li></ol><div style="text-align: justify;">- Modify /etc/resolv.conf, add this lines:<br /><br /><span style="font-family: courier new;"> nameserver 192.168.11.18<br /> search ims.fet.hut<br /> domain ims.fet.hut<br /></span><br />Replace "ims.fet.hut" with your IMS domain name respectively.<br /><br />- In /etc/bind/ folder, create new zone file named <span style="font-weight: bold;">openims-sailfin.dnszone</span> with contents:<br /><br />$ORIGIN ims.fet.hut<br />$TTL 1W<br />@ 1D IN SOA ns.ims.fet.hut. root.ims.fet.hut. (<br />2009041201 ; serial<br />3H ; refresh<br />15M ; retry<br />1W ; expiry<br />1D ) ; minimum<br /><br /> 1D IN NS ns.ims.fet.hut.<br />ns 1D IN A 192.168.11.18<br /><br />ims.fet.hut. 1D IN A 192.168.11.19<br />pcscf 1D IN A 192.168.11.19<br />icscf 1D IN A 192.168.11.19<br />scscf 1D IN A 192.168.11.19<br />hss 1D IN A 192.168.11.19<br /><br />sailfin1.ims.fet.hut. 1D IN A 192.168.11.18<br /><br />_sip 1D SRV 0 0 6060 scscf<br />_sip._udp 1D SRV 0 0 6060 scscf<br />_sip._tcp 1D SRV 0 0 6060 scscf<br /><br />_sip._udp.ims.fet.hut. 1D IN SRV 1 0 5060 sailfin1.ims.fet.hut.<br />_sip._tcp.ims.fet.hut. 1D IN SRV 1 0 5060 sailfin1.ims.fet.hut.<br />_sips._tcp.ims.fet.hut. 1D IN SRV 1 0 5060 sailfin1.ims.fet.hut.<br />_sips._udp.ims.fet.hut. 1D IN SRV 1 0 5060 sailfin1.ims.fet.hut.<br /><br />ims.fet.hut. 1D IN NAPTR 10 50 "s" "SIP+D2U" "" _sip._udp.ims.fet.hut.<br />ims.fet.hut. 1D IN NAPTR 20 50 "s" "SIP+D2T" "" _sip._tcp.ims.fet.hut.<br /><br />- In /etc/bind/named.conf.local, add the following lines:<br /><br />zone "ims.fet.hut" IN {<br />type master;<br />file "openims-sailfin.dnszone";<br />notify no;<br />allow-update {none;};<br />};<br /><br />- Restart bind9:<br />#/etc/init.d/bind9 restart<br /><br />- Add following contents in SAILFIN_HOME/domains/domain1/config/domain.xml:<br /><blockquote></blockquote><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Mom-i9MEvF4/Se7CIHo3CsI/AAAAAAAAABo/k4BfMl-kllU/s1600-h/domainxml.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 591px; height: 206px;" src="http://4.bp.blogspot.com/_Mom-i9MEvF4/Se7CIHo3CsI/AAAAAAAAABo/k4BfMl-kllU/s400/domainxml.JPG" alt="" id="BLOGGER_PHOTO_ID_5327408853971045058" border="0" /></a><sip-container address="sailfin1.ims.fet.hut" port="5060"></sip-container><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager></session-manager></session-config></sip-container><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager><manager-properties></manager-properties></session-manager></session-config></sip-container><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager><manager-properties><store-properties></store-properties></manager-properties></session-manager></session-config></sip-container><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager><manager-properties><store-properties></store-properties></manager-properties></session-manager></session-config></sip-container><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager><manager-properties><session-properties></session-properties></manager-properties></session-manager></session-config></sip-container><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager><manager-properties><session-properties></session-properties></manager-properties></session-manager></session-config></sip-container><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager><manager-properties></manager-properties></session-manager></session-config></sip-container><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager></session-manager></session-config></sip-container><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager>- Run Sailfin:</session-manager></session-config></sip-container><br /><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager>#cd SAILFIN_HOME/bin</session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager>#./asadmin start-domain domain1</session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager>#./asadmin start-dataabase</session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager>#./asadmin</session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager>asadmin> set --host sailfin1.ims.fet.hut server-config.sip-container.external-address=sailfin1.ims.fet.hut</session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager>Please enter the admin user name> admin</session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager>Please enter the admin password>adminadmin</session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager></session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager>- That's all with Sailfin machine. After that, sailfin machine has domain name and <span style="font-weight: bold;">Contact header </span>is "sailfin1.ims.fet.hut".</session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager> Eg: REGISTER message from User equipment via P-CSCF, S-CSCF to Sailfin has Contact:"scscf.ims.fet.hut". Sailfin accept this Register and response with 200 OK has Contact:"sailfin1.ims.fet.hut" via S-CSCF, P-CSCF to User.</session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager></session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager></session-manager></session-config></sip-container><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager> 2.<span style="font-weight: bold; font-style: italic;"> Configure DNS in Open IMS machine</span></session-manager></session-config></sip-container><sip-container style="font-weight: bold; font-style: italic;" address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager></session-manager></session-config></sip-container><br /><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager>- Add to /etc/bind/open-ims.dnszone file in IMS machine the following:</session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager></session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager>sailfin 1D IN A 192.168.11.18</session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager>c2d 1D IN A 192.168.11.18</session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager></session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager>- Restart DNS server in this machine</session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager># /etc/init.d/bind9 restart</session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager></session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager>- Configure FHoSS to add new application server, point to sailfin. You can use CallSetup application in SAILFIN_HOME/samples/sipservlet/ as an application for IMS.</session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager></session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager></session-manager></session-config></sip-container><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Mom-i9MEvF4/Se7Ay53NVcI/AAAAAAAAABY/sefayF-N308/s1600-h/FHoSS_config.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://1.bp.blogspot.com/_Mom-i9MEvF4/Se7Ay53NVcI/AAAAAAAAABY/sefayF-N308/s400/FHoSS_config.JPG" alt="" id="BLOGGER_PHOTO_ID_5327407389984249282" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Mom-i9MEvF4/Se7Ay5dtodI/AAAAAAAAABg/2SXhXrZaxrY/s1600-h/Triggerpoint_config.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://1.bp.blogspot.com/_Mom-i9MEvF4/Se7Ay5dtodI/AAAAAAAAABg/2SXhXrZaxrY/s400/Triggerpoint_config.JPG" alt="" id="BLOGGER_PHOTO_ID_5327407389877314002" border="0" /></a><br />- You must modify CallSetup a little to work with IMS. Then you can use callsetup service with IMS client like UCT IMS client, OpenIC lite or Mercuro... normally. That's so cool!<br /><br />NgocSon,<br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager></session-manager></session-config></sip-container><br /><sip-container address="sailfin1.ims.fet.hut" port="5060"><session-config><session-manager></session-manager></session-config></sip-container></div>Son Dinhhttp://www.blogger.com/profile/07295136489358607599noreply@blogger.com11