« Solving Visibility Concerns with the jPOS UI, Part 2 | Main | Building a Simulator to Support your jPOS Acquirer App »

Wednesday, October 03, 2007

The jPOS MUX Pool

There was a good dialog between Alejandro and Alwyn today on the jPOS Users' List concerning some various aspects of Multiplexer (a.k.a., 'MUX' or 'QMUX') implementations.   At one point, Alejandro advised Alwyn that to solve a particular business need, he recommended the use of a "MUX pool."

When would you want to go with a MUX Pool instead of a standard QMUX implementation?  We needed it recently to address this issue:  Stored Value Systems ('SVS') has a very strict and tight channel disconnect model - if there's no auth (01x0, 02x0, 03x0) or network (08x0) traffic over a particular channel for a three-and-a-half minute span, then SVS disconnects the channel.  Typically, you can keep a channel alive by establishing an "echo-interval" less than the disconnect timer in your logon manager. 

[Note:  Refer to my On-Boarding series for set-up details of 'typical' two-channel QMUX.] 

The problem is that in a standard QMUX implementation governing two channels, the logon manager will fire off an echo at the prescribed interval to one channel or another...but not necessarily both.  That's a problem. 

To ensure that each channel fires off within the desired interval level, we implemented a MUX Pool, whereby we set-up 'svs-mux-0' to govern one channel, and 'svs-mux-1' to govern the second channel.  I suggest you print v1.1 of the On-boarding Guide, then compare it to the MUX Pool implementation, which goes like this...

You've got your two channel implementations like this (these are 10_svs_channel.xml and 10_svs_channel_1.xml respectively):

<channel-adaptor name='svs'
    class="org.jpos.q2.iso.ChannelAdaptor" logger="Q2">
<channel class="org.jpos.iso.channel.NACChannel" logger="Q2"
       realm="svs-channel"
       packager="org.jpos.iso.packager.GenericPackager">
  <property name="packager-config" value="cfg/svs.xml" />
  <property name="host" value="@svs0.host@" />
  <property name="port" value="@svs0.port@" />
</channel>
<in>svs-send</in>
<out>svs-receive</out>
<reconnect-delay>10000</reconnect-delay>
</channel-adaptor>

<channel-adaptor name='svs1'
    class="org.jpos.q2.iso.ChannelAdaptor" logger="Q2">
<channel class="org.jpos.iso.channel.NACChannel" logger="Q2" realm="svs-channel-1"
       packager="org.jpos.iso.packager.GenericPackager">
  <property name="packager-config" value="cfg/svs.xml" />
  <property name="host" value="@svs1.host@" />
  <property name="port" value="@svs1.port@" />
</channel>
<in>svs1-send</in>
<out>svs1-receive</out>
<reconnect-delay>10000</reconnect-delay>
</channel-adaptor>

Then, instead of 20_svs_mux.xml, we've got two elements - 20_svs_mux.xml and 20_svs_mux_1.xml that look like this (note how the <in> and <out> tie them to specific channels):

<mux class="org.jpos.q2.iso.QMUX" logger="Q2" name="svs-mux-0">
<in>svs-receive</in>
<out>svs-send</out>
<ready>svs.ready</ready>
<unhandled>svs-unhandled</unhandled>
<key>11, 41</key>
</mux>

<mux class="org.jpos.q2.iso.QMUX" logger="Q2" name="svs-mux-1">
<in>svs1-receive</in>
<out>svs1-send</out>
<ready>svs1.ready</ready>
<unhandled>svs-unhandled</unhandled>
<key>11, 41</key>
</mux>

Then, we have a new element called the mux pool (25_svs_mux_pool.xml) which ties the muxes together in their operation:

<mux class="org.jpos.q2.iso.MUXPool" logger="Q2" name="svs-mux">
<muxes>svs-mux-0 svs-mux-1</muxes>
<strategy>round-robin</strategy>
</mux>

And, finally, in the logon managers, we reference specific members within the MUX pool (30_svs_logon_mgr.xml and 30_svs_logon_mgr_1.xml follow...note the definition of three-minute echo intervals in order to satisfy the three-and-a-half-minute disconnect timer)...

<svs-logon-mgr class="org.jpos.svs.LogonManager" logger="Q2">
<property name="persistent-space" value="@svs.logon.space@" />
<property name="mux"            value="svs-mux-0" />
<property name="channel-ready"  value="svs.ready" />
<property name="timeout"        value="900000" />
<property name="echo-interval"  value="180000" />
<property name="logon-interval" value="43200000" />
</svs-logon-mgr>

<svs1-logon-mgr class="org.jpos.svs.LogonManager" logger="Q2">
<property name="persistent-space" value="@svs.logon.space@" />
<property name="mux"            value="svs-mux-1" />
<property name="channel-ready"  value="svs1.ready" />
<property name="timeout"        value="900000" />
<property name="echo-interval"  value="180000" />
<property name="logon-interval" value="43200000" />
</svs1-logon-mgr>
 

 

Comments

Feed You can follow this conversation by subscribing to the comment feed for this post.

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment

My Photo

Tools

  • Google

    The entire web
    www.andyorrock.com
AddThis Social Bookmark Button

Resources

  • About Me
  • Dave Bergert's blog
    Insightful payment systems thoughts by my OLS colleague, Dave Bergert, CISSP, CISA, CompTIA Security+, and former Visa-certified QSA.
  • Glenbrook Partners' Blog List
    Glenbrook Partners has compiled "a current summary of the latest content from some of our favorite payments and banking blogs based upon their RSS feeds." Alejandro, Dave and I are on the list, as are many other good info sources.
  • jPOS
    Faced with payment systems challenges? Start here to learn more about Alejandro Revilla's jPOS project.
  • Randy San Nicolas' blog
    My OLS colleague Randy San Nicolas writes about his wealth of experience in various Issuer- and Acquirer-side endeavors in his Prepaid Enterprise blog.
  • soliSYSTEMS
    My friend Roque Solis is our go-to guy for RFID, smart cards, chip cards, integrated circuit(s) cards (ICC), HSMs, cryptographic accelerators, DES and public-key cryptography.
  • Specs Online - AMEX
    American Express (Amex) puts all its acquirer specs online for public retrieval.
  • Specs Online - First Data
    First Data Merchant Services (FDMS, aka 'FDR') puts all its acquirer specs online for public retrieval. [NOTE: FDMS' spec repository is accessible only via Internet Explorer; this link will not work with Firefox or other browsers.]
Blog Widget by LinkWithin

Enter your email address:

Delivered by FeedBurner

Blog powered by TypePad

If you're looking here...

  • Your attention to detail is a great asset. Use it wisely.