Re: [jgroups-dev] Mesh networking

Mike Jensen <[email protected]>
Newsgroups gmane.comp.java.javagroups.devel
Message-ID <[email protected]>
That sounds great.  I hope to start work on this in JGroups ether later 
today, or Monday  (assuming not too much comes up). 

I will probably look for feedback when I am into it about the code 
structure.  Right now here is what I am considering:
create a new package in protocol called "mesh" (although i will spend 
some time to try and think of a better name)
in that package it will have the protocols that handle:
Group Membership/Connection structures (which will have multiple files 
associated with it):
    * Actual protocol file, which will handle the logic and actual actions
    * A model file, that manages and maintains the internal 
representation of the mesh
    * I have lots more division in my current prototypes, but I am not 
sure right now how this will most naturally translate to JGroups
Failure Detection/Merging (although merging is somewhat dependent on the 
above protocol, so I am not sure how this will look yet)

As I said, I will look for feedback once I know more how I think it 
should look.  But I want to stay within the current JGroups paradigm.

Bela Ban wrote:
>
>
> Mike Jensen wrote:
>>
>>> * Failure detection (FD, FD_ALL): not feasible because these
>>> protocols form an overlay structure (a ring), or use
>>> broadcasting... Maybe a new FD protocol would be in order, which
>>> sends heartbeats to our 3 connected peers. Or, we omit a failure
>>> protocol detection entirely, and use the mesh information to
>>> detect crashed peers
>> That's basically how I was planning on doing failure detection
>> (heartbeats). Is there any reason this can't be combined in the same
>> protocol as the mesh structure logic?
>
> Sure it can, but then if you cannot replace the failure detection 
> logic. I try to separate concerns (aspects) whenever possible, e.g. 
> fragmentation is an aspect that's different from retransmission. I've 
> made only a few exceptions in JGroups, e.g. retransmission and 
> ordering are combined in both UNICAST and NAKACK. This was done to 
> improve performance, but in general each aspect is implemented in a 
> different protocol.
>
>> It can be separated, I just don't
>> see the value in separating them (worry that it will be confusing to
>> users, you have to use this FD, but not this one for one stack, and vice
>> versa). 
>
> I guess this can be mitigated by providing default configurations, 
> e.g. mesh.xml, which should be used as starting points for 
> customizations. This is how it is done in JGroups today: not many 
> folks configure their own stack from scratch !
>
>> I was thinking it would be easier to understand if components
>> that will only work together were just kept together. Or do you feel
>> this is against your current modular model?
>
> Yes, see above. The modularity is one of the key advantages of 
> JGroups. This is how projects like Popeye (MANET), or JGroups-lc were 
> able to provide different stack setups without having to modify 
> JGroups itself.
>
>
>>> * MERGE2: I don't think this is needed, as a mesh automatically
>>> merges on a partition heal. IIUC this issue hasn't been solved
>>> yet, so I guess this is another new protocol
>> Something new will need to be done here...but I am hoping I can learn
>> some secrets of the trade from the work you have already done. I was
>> also expecting that this would be included in the same protocol that
>> handles the connection/structure logic.
>
> I recommend doing this in a separate protocol, it'll save you some 
> headaches later on...
>
>
>>> * NAKACK / UNICAST: not needed, as we can live with message loss /
>>> reordering. Maybe if UDP is used, UNICAST would be a good idea
>>> though...
>> This may not be needed for my company, but if this becomes interesting
>> to the community I would be willing to develop some sort of JGroups
>> level reliable delivery (sure it could be useful for some).
>
> I guess your first prototype will be based on TCP, and since 
> reliability / ordering is not a top design goal for the type of 
> applications you envisage to run on top of the mesh, I guess this can 
> take a back seat for now...
>
>
>>> * GMS: not needed, as we don't have the concept of a coordinator and
>>> the JOIN can be sent to *any* peer of the mesh. View can stay, but
>>> it is only an approximation of the membership, plus it is not
>>> guaranteed to be the same across all peers, so communication-less
>>> agreement e.g. for coordinators cannot be done. So if agreement or
>>> consensus are required by applications, they have to provide it
>>> themselves. Or we write a protocol which does this. Anyway, maybe
>>> this functionality is not something that's offered in a mesh
>>> anyway. BTW: you should come up with a better word than 'mesh',
>>> because a mesh is exactly what you want to avoid...)
>> What name would you suggest? I have struggled to think of a name for
>> this. I been calling it a "mesh" because I think of the end network
>> structure to look like a physical mesh net when drawn out. (
>> http://www.davidtorno.com/MacTex_Uploads/Net002.jpg )
>
>
> Good question... :-) An ideal word X should have the following qualities:
>
>    * Googling for "X" should return 0 hits
>    * X is not trademarked
>    * X.com / X.org are not taken
>
>
>
> Very difficult...
>
>
>
>


------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Javagroups-development mailing list
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.