<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Aberration &#187; Jabber/XMPP</title>
	<atom:link href="http://tomasz.sterna.tv/topics/jabberxmpp/feed/" rel="self" type="application/rss+xml" />
	<link>http://tomasz.sterna.tv</link>
	<description>technology babbling</description>
	<lastBuildDate>Fri, 30 Jul 2010 12:03:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Roster Versioning in jabberd2</title>
		<link>http://tomasz.sterna.tv/2009/07/roster-versioning-in-jabberd2/</link>
		<comments>http://tomasz.sterna.tv/2009/07/roster-versioning-in-jabberd2/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 19:38:58 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Jabber/XMPP]]></category>
		<category><![CDATA[jabberd2]]></category>
		<category><![CDATA[roster versioning]]></category>
		<category><![CDATA[xep]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=427</guid>
		<description><![CDATA[Thanks to the encouragement from Prosody Team, I spent 2 hours and implemented XEP-0237 Roster Versioning in jabberd2. The code is in jabberd2 SVN repository. Unfortunately the only client supporting XEP-0237 is Gajim Trunk. Roster Versioning in jabberd2 &#169;, .]]></description>
			<content:encoded><![CDATA[<p>Thanks to the <a href="http://blog.prosody.im/prosody-plus-gajim-equals-faster-logins/">encouragement from Prosody Team</a>, I spent 2 hours and implemented <a href="http://xmpp.org/extensions/xep-0237.html">XEP-0237 Roster Versioning</a> in <a href="http://codex.xiaoka.com/wiki/jabberd2:">jabberd2</a>. The code is in <a href="http://codex.xiaoka.com/svn/jabberd2/trunk/">jabberd2 SVN repository</a>.</p>
<p>Unfortunately the only client supporting XEP-0237 is <a href="http://gajim.org/dev.php?lang=en">Gajim Trunk</a>.</p>
<p><small><a href="http://tomasz.sterna.tv/2009/07/roster-versioning-in-jabberd2/">Roster Versioning in jabberd2</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2009/07/roster-versioning-in-jabberd2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jabberd2 packet throttling in action</title>
		<link>http://tomasz.sterna.tv/2009/07/jabberd2-packet-throttling-in-action/</link>
		<comments>http://tomasz.sterna.tv/2009/07/jabberd2-packet-throttling-in-action/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 11:15:02 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Jabber/XMPP]]></category>
		<category><![CDATA[jabberd2]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=419</guid>
		<description><![CDATA[Today I saw jabberd2 packet throttling in action and nicely visualized. There is a visible 16 pkt/s (64 stanzas per 4 seconds) cutoff on the following graph: jabberd2 packet throttling in action &#169;, .]]></description>
			<content:encoded><![CDATA[<p>Today I saw <a href="http://codex.xiaoka.com/wiki/jabberd2:">jabberd2</a> packet throttling in action and nicely visualized. There is a visible 16 pkt/s (64 stanzas per 4 seconds) cutoff on the following graph:<br />
<a href="http://tomasz.sterna.tv/uploads/2009/07/graph_image.php.png"><img src="http://tomasz.sterna.tv/uploads/2009/07/graph_image.php-300x104.png" alt="Chrome.pl pkt/s graph" title="Chrome.pl pkt/s graph" width="300" height="104" class="aligncenter size-medium wp-image-420" /></a></p>
<p><small><a href="http://tomasz.sterna.tv/2009/07/jabberd2-packet-throttling-in-action/">jabberd2 packet throttling in action</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2009/07/jabberd2-packet-throttling-in-action/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Transport clustering in jabberd2</title>
		<link>http://tomasz.sterna.tv/2009/06/transport-clustering-in-jabberd2/</link>
		<comments>http://tomasz.sterna.tv/2009/06/transport-clustering-in-jabberd2/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 23:16:59 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Jabber/XMPP]]></category>
		<category><![CDATA[clustering]]></category>
		<category><![CDATA[jabberd2]]></category>
		<category><![CDATA[transport]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=412</guid>
		<description><![CDATA[The added value feature of clustering changes in jabberd2 is a possibility to multiplicate not only Session Manager component, but also components connected with XEP-0114 component protocol. Namely: Transports to other networks. Component protocol connections differ from jabberd2 components that the hash used for selecting component instance to route to is computed using a &#8216;from&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>The added value feature of <a href="http://tomasz.sterna.tv/2009/06/clustering-for-jabberd2/">clustering changes in jabberd2</a> is a possibility to multiplicate not only Session Manager component, but also components connected with <a href="http://xmpp.org/extensions/xep-0114.html">XEP-0114 component protocol</a>. Namely: Transports to other networks.</p>
<p>Component protocol connections differ from jabberd2 components that the hash used for selecting component instance to route to is computed using a &#8216;from&#8217; address, not &#8216;to&#8217; address. This means that the server (and s2s) userbase is distributed amongst the components (evenly).</p>
<p>I am currently running several clustered transports with no changes to the transport code. Pretty neat. :-)</p>
<p><small><a href="http://tomasz.sterna.tv/2009/06/transport-clustering-in-jabberd2/">Transport clustering in jabberd2</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2009/06/transport-clustering-in-jabberd2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Clustering for jabberd2</title>
		<link>http://tomasz.sterna.tv/2009/06/clustering-for-jabberd2/</link>
		<comments>http://tomasz.sterna.tv/2009/06/clustering-for-jabberd2/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 15:05:12 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Jabber/XMPP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[clustering]]></category>
		<category><![CDATA[jabberd]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=407</guid>
		<description><![CDATA[The largest problem for large jabberd2 deployments is a single-process, single-threaded Session Manager. Being single-threaded means that it can process only one XMPP packet at a time. More importantly, when it waits for some data (from the storage mostly) it does not process any other packets. One possible solution would be to rewrite the SM [...]]]></description>
			<content:encoded><![CDATA[<p>The largest problem for large jabberd2 deployments is a single-process, single-threaded Session Manager.<br />
Being single-threaded means that it can process only one XMPP packet at a time. More importantly, when it waits for some data (from the storage mostly) it does not process any other packets.</p>
<p>One possible solution would be to rewrite the SM to be multi-threaded. And I do mean rewrite &#8211; the way it is designed now, would mean rewrite (or reassembly) from scratch.</p>
<p>Other possible solution is to make the SM multi-processed. This means a possibility to launch many Session Manager instances to service one XMPP domain. This would balance processing load between many processes (possibly machines) and spread storage load on many separate DB connections.</p>
<p>Most server implementation approach this with a separate &#8216;clustering&#8217; component, which tracks which session component is handling which user.<br />
In case of jabberd2 I think it is not necessary. We already have the all decision making overseer &#8211; the router component.</p>
<p>I just committed to <a href="http://codex.xiaoka.com/svn/jabberd2/trunk/">SVN trunk</a> a router version, that handles many SM and/or external components (i.e. transports) instances for one XMPP domain. Router selects the destination instance using a hash of user JID (receiver in case of SM instances, sender in case of external components). This is an approach that most clustering HTTP deployments use, which select the web server using session-id hash.</p>
<p>I&#8217;m running clustered jabberd2 on <a href="http://www.chrome.pl/">Chrome.pl</a> with no problems.</p>
<p><small><a href="http://tomasz.sterna.tv/2009/06/clustering-for-jabberd2/">Clustering for jabberd2</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2009/06/clustering-for-jabberd2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Virtual domains for jabberd2</title>
		<link>http://tomasz.sterna.tv/2009/06/virtual-domains-for-jabberd2/</link>
		<comments>http://tomasz.sterna.tv/2009/06/virtual-domains-for-jabberd2/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 13:54:46 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Jabber/XMPP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[jabberd]]></category>
		<category><![CDATA[virtual hosts]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=401</guid>
		<description><![CDATA[One of jabberd2 annoyances was its requirement to run one SM instance for every serviced domain. I already did some work for dynamic jabberd2 configuration introducing default host option in c2s.xml to remove requirement of restarting C2S every time one adds new serviced domain. But it still required launching separate SM process instance. Today I [...]]]></description>
			<content:encoded><![CDATA[<p>One of jabberd2 annoyances was its requirement to run one SM instance for every serviced domain. I already did some work for dynamic jabberd2 configuration introducing default host option in c2s.xml to remove requirement of restarting C2S every time one adds new serviced domain. But it still required launching separate SM process instance.</p>
<p>Today I committed virtual domains support changes to SVN branch <a href="http://codex.xiaoka.com/svn/jabberd2/trunk/">http://codex.xiaoka.com/svn/jabberd2/branches/vhosts</a> which allows you to configure more than one serviced domain in only one SM instance.<br />
I successfully configured 3 domains in one SM instance and was able to talk between these 3 and one another in second SM process. All 4 connected to one Router process instance.</p>
<p>Unexpectedly it was pretty simple &#8211; it took me only ~6h. to get it working. :-)</p>
<p>Of course all domains serviced in one SM process have identical configuration. If you need domains with different configuration, you need to create another sm.xml and launch separate SM process for them.</p>
<p>The SVN <em>vhosts</em> branch changes need some polishing and testing. I would appreciate if you tried these and tell me what you think.</p>
<p><small><a href="http://tomasz.sterna.tv/2009/06/virtual-domains-for-jabberd2/">Virtual domains for jabberd2</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2009/06/virtual-domains-for-jabberd2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nginx and BOSH / Comet connections</title>
		<link>http://tomasz.sterna.tv/2009/05/nginx-and-bosh-comet-connections/</link>
		<comments>http://tomasz.sterna.tv/2009/05/nginx-and-bosh-comet-connections/#comments</comments>
		<pubDate>Mon, 25 May 2009 10:10:14 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Jabber/XMPP]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=372</guid>
		<description><![CDATA[Yesterday I was scratching my head badly, why on earth my development BOSH installation (I am developing a web based Jabber client) did not work, while the production one did fine. After digging (telnet and hand crafted HTTP+XMPP requests did the job well) I found out, that my local nginx installation was &#8220;to new&#8221;. The [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I was scratching my head badly, why on earth my development BOSH installation (I am developing a web based Jabber client) did not work, while the production one did fine. After digging (telnet and hand crafted HTTP+XMPP requests did the job well) I found out, that my local nginx installation was &#8220;to new&#8221;.</p>
<p>The latest nginx version does proxied request caching. It buffers the proxied server response and pushes it to the client as a whole. It does help in mitigating client-backend bandwidth differences, but breaks Comet requests like the BOSH one. There is an option added to nginx for this very purpose: proxy_buffering. You need to disable the buffering: <code>proxy_buffering off;</code>.</p>
<p><span id="more-372"></span>So, the complete BOSH proxy location should look like this:</p>
<p><code>	location /http-bind/ {<br />
		proxy_buffering off;<br />
		tcp_nodelay on;<br />
		keepalive_timeout 55;<br />
		proxy_pass      http://xmpp.server:5280/xmpp-httpbind/;<br />
	}</code></p>
<p><small><a href="http://tomasz.sterna.tv/2009/05/nginx-and-bosh-comet-connections/">nginx and BOSH / Comet connections</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2009/05/nginx-and-bosh-comet-connections/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Changes in Tigase packages for Ubuntu</title>
		<link>http://tomasz.sterna.tv/2009/05/changes-in-tigase-packages-for-ubuntu/</link>
		<comments>http://tomasz.sterna.tv/2009/05/changes-in-tigase-packages-for-ubuntu/#comments</comments>
		<pubDate>Fri, 08 May 2009 09:55:11 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Jabber/XMPP]]></category>
		<category><![CDATA[apt]]></category>
		<category><![CDATA[Tigase]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=152</guid>
		<description><![CDATA[I reworked Tigase packaging. The changes are: Separated tigase-xmltools, tigase-utils, tigase-extras, tigase-muc, tigase-pubsub packages Moved the tigase-server shared files to common /usr/share/tigase folder Packages are now built straight from Tigase SVN The process is fully automatic (the poolling cycle is in 2 hours interval), so you may expect fresh packages in Xiaoka APT repository any [...]]]></description>
			<content:encoded><![CDATA[<p>I reworked <a href="http://tomasz.sterna.tv/2009/03/tigase-xmppjabber-server-for-ubuntu/">Tigase packaging</a>. The changes are:</p>
<ul>
<li>Separated tigase-xmltools, tigase-utils, tigase-extras, tigase-muc, tigase-pubsub packages</li>
<li>Moved the tigase-server shared files to common /usr/share/tigase folder</li>
<li><strong>Packages are now built straight from <a href="https://svn.tigase.org/reps/tigase-server/trunk/">Tigase SVN</a></strong></li>
</ul>
<p>The process is fully automatic (the poolling cycle is in 2 hours interval), so you may expect fresh packages in <a href="http://codex.xiaoka.com/apt/">Xiaoka APT repository</a> any time. ^_^</p>
<p><small><a href="http://tomasz.sterna.tv/2009/05/changes-in-tigase-packages-for-ubuntu/">Changes in Tigase packages for Ubuntu</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2009/05/changes-in-tigase-packages-for-ubuntu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>OpenFire to Tigase converter</title>
		<link>http://tomasz.sterna.tv/2009/05/openfire-to-tigase-converter/</link>
		<comments>http://tomasz.sterna.tv/2009/05/openfire-to-tigase-converter/#comments</comments>
		<pubDate>Tue, 05 May 2009 10:47:30 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Jabber/XMPP]]></category>
		<category><![CDATA[OpenFire]]></category>
		<category><![CDATA[Tigase]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=139</guid>
		<description><![CDATA[After refactoring the Tigase Converter, its now very easy to add new server source modules. Today I released v. 2.3 of the converter with support for OpenFire server migration. Another good news is that the converter is now available from official Tigase repository. Have fun with Tigase. (Handling 500k+ simultaneous user connections and more&#8230;) OpenFire [...]]]></description>
			<content:encoded><![CDATA[<p>After refactoring the <a href="http://tomasz.sterna.tv/2009/04/ejabberd-to-tigase-converter/">Tigase Converter</a>, its now very easy to add new server source modules.</p>
<p>Today I released v. 2.3 of the converter with support for <a href="http://www.igniterealtime.org/projects/openfire/">OpenFire</a> server migration.</p>
<p>Another good news is that the converter is now available from official Tigase repository.</p>
<p>Have fun with <a href="http://www.tigase.org/">Tigase</a>. (Handling 500k+ simultaneous user connections and more&#8230;)</p>
<p><small><a href="http://tomasz.sterna.tv/2009/05/openfire-to-tigase-converter/">OpenFire to Tigase converter</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2009/05/openfire-to-tigase-converter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ejabberd to Tigase converter</title>
		<link>http://tomasz.sterna.tv/2009/04/ejabberd-to-tigase-converter/</link>
		<comments>http://tomasz.sterna.tv/2009/04/ejabberd-to-tigase-converter/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 13:17:03 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Jabber/XMPP]]></category>
		<category><![CDATA[ejabberd]]></category>
		<category><![CDATA[Tigase]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=118</guid>
		<description><![CDATA[About a week ago I released my jabberd2-2-Tigase converter allowing jabberd2 deployments to Tigase migration. From that time I&#8217;ve refactored it to be more modular and today I added ejabberd conversion module. You may get the v2 of Tigase Converter from my $HOME at Xiaoka Codex. ejabberd to Tigase converter &#169;, .]]></description>
			<content:encoded><![CDATA[<p>About a week ago I released my <a href="http://codex.xiaoka.com/~smoku/Jabber/Tigase/converter-1/">jabberd2-2-Tigase converter</a> allowing jabberd2 deployments to Tigase migration. From that time I&#8217;ve refactored it to be more modular and today I added ejabberd conversion module.</p>
<p>You may get the <a href="http://codex.xiaoka.com/~smoku/Jabber/Tigase/converter-2/">v2 of Tigase Converter</a> from my <a href="http://codex.xiaoka.com/~smoku/Jabber/Tigase/">$HOME at Xiaoka Codex</a>.</p>
<p><small><a href="http://tomasz.sterna.tv/2009/04/ejabberd-to-tigase-converter/">ejabberd to Tigase converter</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2009/04/ejabberd-to-tigase-converter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jabberd2 to Tigase converter</title>
		<link>http://tomasz.sterna.tv/2009/04/jabberd2-to-tigase-converter/</link>
		<comments>http://tomasz.sterna.tv/2009/04/jabberd2-to-tigase-converter/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 12:58:30 +0000</pubDate>
		<dc:creator>Tomasz Sterna</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Jabber/XMPP]]></category>
		<category><![CDATA[jabberd]]></category>
		<category><![CDATA[Tigase]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://tomasz.sterna.tv/?p=112</guid>
		<description><![CDATA[To be able to migrate my jabberd2 deployments to Tigase, I created a simple converter. It&#8217;s nothing fancy, but it did the migration for me fine. I tried to make it flexible &#8211; you may redefine the SQL queries to fetch user data from other XMPP server database schema. Only jabberd2 SQL queries are included [...]]]></description>
			<content:encoded><![CDATA[<p>To be able to migrate my jabberd2 deployments to Tigase, I created a simple converter. It&#8217;s nothing fancy, but it did the migration for me fine. I tried to make it flexible &#8211; you may redefine the SQL queries to fetch user data from other XMPP server database schema. Only jabberd2 SQL queries are included though.</p>
<p>Get the converter at: <a href="http://codex.xiaoka.com/~smoku/Jabber/Tigase/">Xiaoka Codex ~smoku</a></p>
<p><small><a href="http://tomasz.sterna.tv/2009/04/jabberd2-to-tigase-converter/">jabberd2 to Tigase converter</a> &copy;, <a rel="license" href=""></a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://tomasz.sterna.tv/2009/04/jabberd2-to-tigase-converter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.777 seconds -->
<!-- Cached page served by WP-Cache -->
