<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
What is the "Optimized Kernel Mechanism" you reffer to?<BR>
<BR>
Jan<BR><BR>> From: hselasky@c2i.net<BR>> To: freeswitch-dev@lists.freeswitch.org<BR>> Date: Fri, 30 Jan 2009 11:33:29 +0100<BR>> Subject: [Freeswitch-dev] FreeSwitch + ISDN + analog phone adapters - status<BR>> <BR>> Hi,<BR>> <BR>> I'm currently working on ISDN (E1/T1/BRI) support, D-channel protocol wise and <BR>> hardware wise in connection to FreeSwitch. I'm also adding support for analog <BR>> phone adapters through the same API. I promised to Mike Jerris several times <BR>> I would do something, but then the time ran away ... This week I put down <BR>> several hours integrating the ISDN support in FreeSwitch with the ISDN <BR>> support in ISDN4BSD, which should end up with a unified BSD-licensed OpenZap <BR>> code base.<BR>> <BR>> If you are interested in giving some feedback you can check out the following <BR>> files:<BR>> <BR>> svn --username anonsvn --password anonsvn \<BR>> checkout svn://svn.turbocat.net/i4b/trunk/openzap.hps<BR>> <BR>> The files that are there are mainly for inter-process communication, and have <BR>> been constructed in a way that allows easy porting to other platforms. In <BR>> general sockets can be used for this on other UNIX compatible systems as a <BR>> fallback mechanism where the optimised kernel mechanism is not present.<BR>> <BR>> The core (FreeBSD kernel module): Handles routing and broadcasting.<BR>> The client (FreeBSD library): Dumb node sending and receiving messages.<BR>> <BR>> What I plan next is to implement a set of nodes, like [ISDN] controller- <BR>> Q921- and Q931- node. Nodes have pre-defined address ranges which they are <BR>> listening to. Hence I already have a DSS1 stack, splitting it up into using <BR>> message based communication should not be a very big task.<BR>> <BR>> Then you have the application, like FreeSwitch being a node aswell picking up <BR>> broadcast events, which are mostly incoming calls from Q931 and making <BR>> outgoing calls.<BR>> <BR>> Messages have been split into two categories: Important-frames and <BR>> Unimportant-frames. I-Frames gets to use 64 queue entries before getting <BR>> dropped. U-Frames gets to use only 32 queue entries before getting dropped. <BR>> These numbers have not been tuned yet.<BR>> <BR>> Also I have thought through message timing. In bigger systems I see that it is <BR>> required to dither messages in time. On cannot simply receive 30x400 bytes on <BR>> an E1 and burst it into the system, because the message queues will overflow <BR>> pretty quickly. Instead the interrupt rate of the hardware needs to be <BR>> increased so that 400 bytes are received in "1/30 * interval" fashion. This <BR>> will generally improve the system and load-balance in time.<BR>> <BR>> <BR>> The generic Message Header looks like this:<BR>> <BR>> /* NOTE: All fields are little endian */<BR>> <BR>> struct zap_hdr {<BR>> uint8_t dwDstNode[4]; /* Destination Node */<BR>> uint8_t dwSrcNode[4]; /* Source Node */<BR>> uint8_t wCommand[2]; /* Command Number */<BR>> uint8_t wMsgNum[2]; /* Message Number */<BR>> uint8_t bReserved[4]; /* Reserved bytes */<BR>> };<BR>> <BR>> If you have access to ISDN testing equipment and would like to help test the <BR>> non-EuroISDN variants of my upcoming ISDN implementation, please let me know.<BR>> <BR>> I expect to have something up and running within the next month, hopefully not <BR>> running out of time this time :-)<BR>> <BR>> --HPS<BR>> <BR>> _______________________________________________<BR>> Freeswitch-dev mailing list<BR>> Freeswitch-dev@lists.freeswitch.org<BR>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev<BR>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev<BR>> http://www.freeswitch.org<BR><BR><br /><hr />See all the ways you can stay connected <a href='http://www.microsoft.com/windows/windowslive/default.aspx' target='_new'>to friends and family</a></body>
</html>