Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Supported Network Architecture
Supported Network Architectures
Souliss communication between nodes is based on vNet, a network virtualization layer that provides a single set of APIs across different communication interfaces, including routing and bridging functionalities between nodes. Frames that involve different communication interfaces or wireless extension over the listening range are routed and bridged automatically without any action on the application side, creating a network of devices running over different communication medias and connected together.
From the network point of view, vNet offers functionalities that are placed at Layer 3 of the ISO/OSI model without using full broadcast at Layer 2. This technique builds up a sort of Layer 2.5 useful for low performance/consume devices like tiny microcontroller with a few thousand bytes of RAM.
Peer to Peer Network
vNet is intended as a software layer for peer-to-peer communications, so all the drivers for the available communication media are forced as peer-to-peer. There is no concept of server/client, master/slave or similar. The applications on the top of vNet can use out of peer-to-peer its own server/client, master/slave or similar modality.
In vNet a total of five drivers can be attached, with three of them included in the base distribution. A suitable driver shall include its own addressing and filtering rules, and work in peer-to-peer environment.
Supported Network Architectures
Basically vNet works with all the architectures that you can have on supported medias, even if the configuration may require different configurations based on the number of nodes and their interconnections.
Single Media Network
A network is defined as Single Media if all nodes use the same communication media interface, in this case the vNet layer is just a go-through between the APIs and the media drivers.
A network is defined Bridged if there is more than one communication media interface and data needs to be shared within nodes using different communication interfaces. A bridge node has two or more communication interfaces and vNet cares of the bridging between them. More than one bridge can be used in one network.
All the nodes can communicate directly with nodes on the same communication interface, frames are bridged when the destination is a node with a different interface. Each interface has an address range, so from that address we know which interface is refereed to. A node can act as a bridge if it's defined as Super Node in the compiling options.
A network is defined Routed if there are nodes sharing the same communication interface but they are not able (or shall not) communicate directly. As instance, two wireless node that are out of the listening range need a middle node to route frames. The routing path can be identified automatically based on the addressing or may require definition of routing tables in case of more complex networks.
A node can act as router if is defined as Super Node in the compiling options.
Mixed Routed and Bridged Network
A network is bridged and routed, if there is more than one communication media interface and data need to be shared within nodes using different communication interfaces; furthermore within one or more media is required a routing of frames to extend the listening range. This combination leads to the most powerful Souliss deployment, where packets flow in a p2p environment and are transparently delivered.