Differences between revisions 6 and 13 (spanning 7 versions)
Revision 6 as of 2006-07-24 11:55:50
Size: 10450
Editor: alpt
Comment:
Revision 13 as of 2009-05-13 16:21:05
Size: 18605
Editor: anonymous
Comment: corrected formatting of bullet list and a typo
Deletions are marked like this. Additions are marked like this.
Line 15: Line 15:
switching automatically to the physical layer without interfering with the switch automatically to the physical layer without interfering with the
Line 17: Line 17:

==== Applications ====

Viphilama transforms Netsukuku into a hybrid overlay network which expands the
original structure of the Internet. Its main advantages are:

 * the faster diffusion of Netsukuku: every user with an Internet connection can join Netsukuku

 * the creation of a scalable network which is built upon the Internet but is completely separated from it

 * the automatic switch from the Netsukuku overlay network to the physical one

 * the freely registration of domain names (see ANDNA)

 * the usage of Carciofo ( http://lab.dyne.org/Ntk_carciofo ) over the Internet

 * the workaround of NAT restrictions: even with only one Internet connection it is possible to connect an entire LAN to Viphilama. Inside Viphilama, every node of the LAN will get an unique IP, therefore the NAT restriction imposed by the ISP (if you want more IPs you have to pay) is ignored
 * other ...?

==== Basic idea ====
Line 53: Line 73:
This is only the general description of the Viphilama idea, in reality, it is
a bit more complex ;)
This is only the general description of the Viphilama idea, actually, the
implementation is a bit more complex ;)
Line 82: Line 103:
The coordinates are stored in the internal, external and bnode maps.
In the internal map there are the coordinates of each single node.
In the external maps, the coordinates which locate a gnode are set to its
The coordinates are stored in the Viphilama map which is structured in the
same way of the Netsukuku maps.
In the first level, there are the coordinates of each single node.
In the higher levels, the coordinates which locate a gnode are set to its
Line 86: Line 108:
(The detailed description of the Viphilama map is in the "Viphilama map"
section).
Line 120: Line 144:
This means that the two layer form a unique network. This means that the two layers form a unique network.
Line 133: Line 157:
 * Viphilama just optimises the tipology of the network.  * Viphilama just optimises the topology of the network.
Line 137: Line 161:
 * The virtual layer, from the point of view of Netsukuku, has to be the same of the physical layer, therefore it is not allowed to use specialized network like Kademlia to shape it topology. This leads to a loss of performance, because the virtual layer isn't optimised for the lower network (the Internet), but it ensures consistency in the Netsukuku network.  * The virtual layer, from the point of view of Netsukuku, has to be the same of the physical layer, therefore it is not allowed to use specialized network like Kademlia to shape its topology. This leads to a loss of performance, because the virtual layer isn't optimised for the lower network (the Internet), but it ensures consistency in the Netsukuku network.
Line 142: Line 166:

 * The network must avoid any fragmentation, trying to be always compacted.
Line 153: Line 179:
===== Searching for the first vrnode =====

The first part of the Virtual Hooking is the creation of the virtual links
(ip tunnels) to the first vrnode.
===== Searching for the nearest vrnode =====

The first part of the Virtual Hooking is the creation of virtual links
(ip tunnels) between H and its nearest vrnodes.
Line 159: Line 185:
globe.
If it is its first hook to the virtual layer, it will get the IP of the vnode
from a small public list available on the Internet, otherwise it will consult
its saved virtual maps. Each IP on the public list and in the virtual maps is
associated to its own geographic coordinates, H will choose the nearest vnode
to itself.
Let the chosen vnode be V.
globe. This node is called Entry Node (EN), since it is the first node of the
virtual network contacted by H.

If it's the first time H hooks to the virtual layer, it will choose the Entry
Node from a public list of ENs available on the Internet, otherwise it will
consult its cached list. Each listed EN is associated to its own geographic
coordinates, thus H can choose its nearest Entry Node.
Let the chosen Entry Node be V.
Line 168: Line 195:
V consults its external map and forwards the received packet to the gnode G,
which is the nearest to H.
The packet will be forwarded until it gets to I, the node nearest to H, which
V consults its map and forwards the received packet to the gnode G, which is
the nearest to H.
The packet will be forwarded until it gets to I, the nearest node to H, which
Line 172: Line 199:
At this point, I sends an ACK packet to H and includes in it the ID, in this
way it certifies that it has truly received the original packet, sent
by H.

I is the first vrnode of H.

===== Linking to other vrnodes =====
At this point, I sends an ACK packet to H and includes in it the ID.
In this way it certifies that it has truly received the original packet
, sent
by H.

I is the first vrnode of H and it's called Anchorage Node (anode).

===== Linking to other anchorage nodes =====
Line 180: Line 208:
will link to other `vlinks_max' vnodes. These vnodes are the nearest to H.
`vlinks_max' is a value proportional to the bandwidth of H.
will link to other `anchor_links' vnodes. These vnodes are the nearest to
H. `anchor_links' is a value proportional to the bandwidth of H.
Line 186: Line 214:
When the packet will be forwarded for the `vlinks_max'-th time or when it can't be
forwarded anymore, it is sent back to the node H.
When the packet will be forwarded for the `anchor_links'-th time or when it
can't be forwarded anymore, it is sent back to the node H.
Line 191: Line 219:
These linked nodes are the new vrnodes of the node H. These linked nodes are the new vrnodes of the node H. They are also its
Anchorage Node.
Line 196: Line 225:
called vlinking: called link-swapping:
Line 251: Line 280:
When H notices (analysing the QSPN pkts) that L can be reached through a When H notices (analysing the QSPN packets) that L can be reached through a
Line 254: Line 283:
Note that a vnode which hasn't any virtual links but is connected to the
Internet and to physical ntk nodes is always a vnode. In fact, a hooking vnode
may create a virtual link to it.

==== Anchorage node ====

The first vrnodes linked to the node, which has only just hooked to the virtual
layer, are the Anchorage Nodes.

The links to the Anchorage Nodes are never destroyed.

Every node will always try to remain linked to its anodes (that's why they're
called anchorage nodes), in this way, the topology of the net won't be
fragmented.

For example:
{{{
   G
  ( group of vnodes ) --- H --- AN ---- ( rest of the virtual layer )
}}}
If H deletes its link to its anchorage node AN, the group of vnodes G will be
left isolated.

Each node will be linked to a number of anodes proportional to its bandwidth.

===== Anchorage Nodes and the Link Swapping procedure =====

The link swapping procedure will just shift the Anchorage Node position. For
example:
{{{
 1. Initial condition

    AN_1
                  /
   /
  H----AN_2

 2. The node N creates a vlink to H
  
    AN_1
                  /
   /
     N---H----AN_2

 3. N swaps the link with H

       AN_1
              /
      /
     H---N----AN_3
 
 4. N becomes another anode of H, while AN_3 becomes a normal vnode

       AN_1
              /
      /
     H---AN_4----V
}}}

===== Death and rebirth of an Anchorage Node =====

When one or more anodes die, the vnode will reestablish its optimal number of
anodes: it uses one of the remaining anodes as an entry node, creating all the
necessary vlinks to the new anchorage nodes.

If all the anodes die, the vnode will re-vhook to the virtual layer, keeping
all its other vrnodes.

The anchorage nodes must be always nodes which can't be reached through a
physical route.

==== Viphilama map ====

The Viphilama map is similar to the Netsukuku maps, but instead of keeping the
`rtt' of the nodes and their routes it just maintains their coordinates.
It is divided in levels too.

In the map, the multi-barycenter is associated to each (g)node.

===== Multi-barycenter =====

In the ideal case, a gnode would be compact and dense and its barycenter would
be exactly in its centre.
In this case it is possible to consider the gnode as a single point, thus, in
the higher level, it would be sufficient to known only its barycenter instead
of all the coordinates of its nodes.
However, this isn't always true, foe example, consider this group node:
{{{
          . .
 . . . .
   . . + .
         . . . O

 
    . a node
    + the barycenter
    O another node
}}}
All the points are nodes of the same gnode. The nodes on the left are well
grouped, while the two nodes on the right are far away from them.
The barycenter is in an empty area: not a single node of the group node is
there.

In this case, the coordinates of the barycenter are misleading, f.e. the node
O believes that the gnode is very near to itself, but actually, it is just the
barycenter which is near.

The solution is to use the multi-barycenter, instead, of a single
barycenter: a barycenter is assigned to each block of nodes which forms the
gnode.
In the example above, there would be two barycenters, one for the block
on the left and the other for the block on the right.

The multi-barycenter of a single node coincides with its barycenter.
The multi-barycenter can be also assigned to group of higher levels (group of
group of nodes, etc...).

Obviously, using more coordinates requires a higher use of memory, however,
when the number of nodes increases, the blocks become more compacted, thus
their number and that of the barycenters decreases.

==== Concurrency ====

Let H and G be two near nodes that vhook nearly at same time (first H then G).
The internal map of the hooked gnode, won't be updated immediately, therefore
G won't notice the presence of H and will hook to another node.

With the next QSPN, the internal map of the gnode will be updated, H will
notice that G is its nearest node and vice versa.

The node which has the smallest IP will create a new vlink to the other
(without deleting its old vlinks), in this way H and G will be connected.
Line 256: Line 418:
All the nodes, which have an Internet connection, should be gate nodes, in
this way the traffic passing on the virtual layer will be well balanced, for
example, two separated physical gnodes will be
linked with the maximum number
of virtual link
s.
All the nodes, which have an Internet connection, should be gate nodes.
In this way, the traffic passing on the virtual layer will be well balanced.
For example, two separated physical gnodes will be linked with the maximum
number o
f virtual links.
Line 274: Line 436:
==== Vlinks threshold ====

`vlinks_max' is the maximum number of vrnodes which H can have and it is a value
proportional to the bandwidth of H itself.

`vlinks_min' is the minimum number of vrnodes and is always proportional to
the bandwidth.

When the number of vrnodes becomes greater than `vlinks_max', H drops its
farest vrnodes, keeping all the others.

Instead, if the number becomes smaller than `vlinks_min', H vhooks again in
the virtual layer using the same procedure described before.
==== Internet Gateway Search ====

A node cannot hook to the virtual network using an Internet connection shared
through the IGS system (see NTK_RFC 003).

A vnode can share his Internet connection only to other nodes which are
physically reachable.
Line 291: Line 447:
automatically cease to operate, in fact, there will be always a physical route automatically cease to operate. In fact, there will be always a physical route
Line 295: Line 451:
=== Entry nodes and servers ===

The first vnode contacted by a node, which is hooking to the virtual layer,
it's the Entry Node (EN).

The Entry Servers keep a public list of Entry Nodes.

==== Entry node ====

An EN is a normal vnode which accepts to be listed on the public list
maintained by the Entry Servers.
An EN should have at least a medium bandwidth.

The Entry Node, in order to be registered in the public list sends
periodically an update to an Entry Server:

        * the EN contacts the Entry Server and gets its Netsukuku IP.

 * the EN downloads a ticket from the Entry Server. The ticket is just a unique number generated on the moment, which must be downloaded exclusively from the virtual layer. The ticket is used by the ES to verify that the EN is actually a vnode.

 * the EN sends the update packet to the ES over the Internet. The packet contains the ticket, the coordinates of the EN and its unique ID. The ID is a random string generated by the EN when it sends its first update. The ID is used by the ES to identify the EN.

 * after 300 seconds the EN sends again the update using the same procedure.

If specified in the ntkd options, a vnode can become an Entry Node after 3
days of uptime.

==== Entry Server ====

The Entry Server is a dedicated server which keeps the public list of ENs.
The list is ordered by uptime, thus the oldest ENs are on top.

If an EN doesn't send the update, it is removed from the list.

There can be multiple ESs chained together. Each ES knows some other trusted
ESs, which in turn have to trust it. The trusted ESs share their RSA public
key. When one ES receives an update from an EN, it forwards the update pkt to
its trusted ESs, signing it with its private key. The trusted ESs forwards the
update pkt to their trusted ESs, and so on.

{{{
  ES1 <--> ES2 <--> ES3 <--> ES4 --> MES1 --> MES2 --> MES3
}}}

There are also the Mirror Entry Server. They have read-only privileges, i.e.
they can only receive an update from an ES or another MES, but they can't send
it to any ES.

===== Downloading the Entry Node list =====

A node, which is hooking to the virtual layer, will download the Entry Node
list in few cases:

 * When it is hooking for the very first time to the virtual layer

 * When all the Entry Nodes present in its cached list are unreachable

When the node downloads the list it follows these steps:

 * it chooses a near ES or MES, f.e. if it is in Japan it chooses a .jp Entry Server.

 * it gives to the ES its own coordinates

 * finally, the Entry Server gives to the node a list of 16 random Entry Node which are near to the coordinates specified by the node.
Line 296: Line 517:
Line 299: Line 519:
Related: ["Netsukuku_RFC"] Related: [[Netsukuku_RFC]]

NTK_RFC 0010

Subject: Viphilama - Virtual to Physical Layer Mapper


This text describes a change to the Npv7. It will be included in the final documentation, so feel free to correct it. But if you want to change the system here described, please contact us first.


Viphilama

Viphilama will permit to Netsukuku to expand itself over the Internet and then switch automatically to the physical layer without interfering with the stability of the Net.

Applications

Viphilama transforms Netsukuku into a hybrid overlay network which expands the original structure of the Internet. Its main advantages are:

  • the faster diffusion of Netsukuku: every user with an Internet connection can join Netsukuku
  • the creation of a scalable network which is built upon the Internet but is completely separated from it
  • the automatic switch from the Netsukuku overlay network to the physical one
  • the freely registration of domain names (see ANDNA)
  • the usage of Carciofo ( http://lab.dyne.org/Ntk_carciofo ) over the Internet

  • the workaround of NAT restrictions: even with only one Internet connection it is possible to connect an entire LAN to Viphilama. Inside Viphilama, every node of the LAN will get an unique IP, therefore the NAT restriction imposed by the ISP (if you want more IPs you have to pay) is ignored
  • other ...?

Basic idea

The basic idea of Viphilama is to connect, with Internet tunnels, nodes which aren't physically linked. Then whenever, Viphilama finds that a virtual link can be replaced by a physical one, it removes the virtual link.

Assume this scenario:

        Tokyo      Moscow          Rome      London
          |          |               |         |
          |          |               |         |
          |__________|Internet tunnel|_________|

All the cities are linked with Internet tunnels.

When Tokyo and Moscow will be linked by a series of physical nodes, Viphilama will change the net in this way:

        Tokyo<--ntk nodes-->Moscow     Rome          London
                             |          |               |
                             |______ Internet tunnel ___|

When even Moscow and Rome will be linked by physical nodes:

        Tokyo<--ntk nodes-->Moscow<--ntk nodes-->Rome          London
                                                  |                |
                                                  |__ Inet tunnel _|

And finally:

        Tokyo<--ntk nodes-->Moscow<--ntk nodes-->Rome<--ntk nodes-->London

This is only the general description of the Viphilama idea, actually, the implementation is a bit more complex ;)

Layer

Netsukuku will be split in two layer: the virtual layer and the physical one.

The physical layer

The physical layer is the original Netsukuku layer: every node is linked to other nodes by physical links (wifi, cables, ...). The physical layer is prioritised over the virtual one.

The virtual layer

The virtual layer is built upon the Internet or any other existing network. The Netsukuku nodes, in this layer, are linked each other by tunnels.

Coordinates

A node, in order to join in the virtual layer, has to know its physical coordinates. The use of geographical coordinates is required for Viphilama, because it has to map the virtual layer to the physical one and it needs a way to measure the effective distance between two virtual nodes.

The coordinates can be retrieved using an online map service like http://maps.google.com or with a GPS.

The coordinates are stored in the Viphilama map which is structured in the same way of the Netsukuku maps. In the first level, there are the coordinates of each single node. In the higher levels, the coordinates which locate a gnode are set to its barycenter: it is the average of the coordinates of all its internal nodes. (The detailed description of the Viphilama map is in the "Viphilama map" section).

The coordinates don't affect the anonymity of the user worse than the Internet does, in fact, it is possible to make a guess about the geo location of an IP (see xtraceroute). If the user doesn't specify its accurate location, then the xtraceroute method will be used to retrieve an approximated location.

Two nodes may share the same coordinates. This happen when they use inaccurate coordinates, i.e. xtraceroute associates the same location to two IPs of the same city. In this case, the difference of their IPs will be used as an (inaccurate) measure of the distance. Or in other words:

  • Let d(X, Y) be the physical distance between the node X and Y. If d(X,Y) is zero then d(X,Y) is equal to the difference of the IP of X and Y.

Terminology

The virtual layer is composed by the same elements of the physical layer, for this reason they have the same names but the are prefixed with 'v'.

  • node -> vnode

    rnode -> vrnode

    gnode -> vgnode

  • ..

Gate node

The two layers are joined by the gate nodes. They are nodes which belong to both layers. This means that the two layers form a unique network.

The short name of a gate node is simply "gate", in this way it isn't confused with gnode (group node).

Virtual to Physical mapper

Viphilama is the supervisor of the topology of the entire net, it shapes the virtual layer and merges it with the physical one trying to achieve the best balance.

It follows simple rules:

  • Viphilama just optimises the topology of the network.
  • The physical layer is prioritised
  • The virtual layer, from the point of view of Netsukuku, has to be the same of the physical layer, therefore it is not allowed to use specialized network like Kademlia to shape its topology. This leads to a loss of performance, because the virtual layer isn't optimised for the lower network (the Internet), but it ensures consistency in the Netsukuku network.
  • Each node has to be connected, with physic or virtual links, to its nearest nodes.
  • If the node A is linked physically to B, then A is one of the nearest node to B and vice versa.
  • The network must avoid any fragmentation, trying to be always compacted.

Let's go into the details.

Virtual hooking

A node, which hasn't any physical neighbours, resides in a black zone and, for this reason, it can't hook to the physical layer. If it has access to another network, i.e. the Internet, it will hook directly to a vnode, joining the virtual layer. Let this hooking node be H.

Searching for the nearest vrnode

The first part of the Virtual Hooking is the creation of virtual links (ip tunnels) between H and its nearest vrnodes.

H chooses, at first, a random vnode which can be located anywhere in the globe. This node is called Entry Node (EN), since it is the first node of the virtual network contacted by H.

If it's the first time H hooks to the virtual layer, it will choose the Entry Node from a public list of ENs available on the Internet, otherwise it will consult its cached list. Each listed EN is associated to its own geographic coordinates, thus H can choose its nearest Entry Node. Let the chosen Entry Node be V.

H sends to V a packet containing its coordinates and a random ID. V consults its map and forwards the received packet to the gnode G, which is the nearest to H. The packet will be forwarded until it gets to I, the nearest node to H, which belongs to the gnode G. At this point, I sends an ACK packet to H and includes in it the ID. In this way it certifies that it has truly received the original packet, sent by H.

I is the first vrnode of H and it's called Anchorage Node (anode).

Linking to other anchorage nodes

Since only one vrnode per vnode is not sufficient to balance the network, H will link to other `anchor_links' vnodes. These vnodes are the nearest to H. `anchor_links' is a value proportional to the bandwidth of H.

The node I appends its Internet IP to the received packet and forwards it again to a node T, so that d(H,T) ~= d(H,I). The node T will do the same (adds its IP and forwards the pkt). When the packet will be forwarded for the `anchor_links'-th time or when it can't be forwarded anymore, it is sent back to the node H.

The node H collects this last packet and creates a virtual link (tunnel) to each Internet IP which has been stored in the packet itself. These linked nodes are the new vrnodes of the node H. They are also its Anchorage Node.

Reordering the virtual layer

At this point the node H will hook to each linked node. This procedure is called link-swapping:

Let L be the generic vrnode of H.

It is possible that some vrnodes of L are nearer to H, in this case they should be linked to H instead of L. For example:

1. Initial configuration

        Tokyo                      London
          |                          |
          |______ Internet tunnel ___|

2. Rome vhooks to London.

        Tokyo -------- London ----- Rome

3. Since Rome is nearer to Tokyo than London, the links are reordered in their
   final configuration:
        
        Tokyo -------- Rome -------- London

The reordering of the links works in this way:

H sends the I_AM_VHOOKING request to L.

L analyses its virtual rnodes and compares d(L,vR) to d(H,vR), where vR is a vrnode. If d(H,vR) < d(L,vR), L adds the Internet IP of vR in the reply packet.

H receives the reply packet of L and tries to create a virtual link to each vR listed in the same packet. H writes the list of all the vR nodes which has been successfully linked to H itself. This list is sent back to L.

L reads this latter list and deletes all its links to the vR nodes, which has been successfully linked to H.

This same procedure is repeated for each vrnode of H.

In the end, H chooses one of its vrnodes and hooks with the classical method to it.

Gate hooking

When a gate node is linked physically to another gate node, they use the v-linking procedure to reorder their links.

Virtual topology

The node H will remain virtually linked to a generic node L if and only if there isn't a physical route which connects H to L.

When H notices (analysing the QSPN packets) that L can be reached through a physical route, it deletes the virtual link.

Note that a vnode which hasn't any virtual links but is connected to the Internet and to physical ntk nodes is always a vnode. In fact, a hooking vnode may create a virtual link to it.

Anchorage node

The first vrnodes linked to the node, which has only just hooked to the virtual layer, are the Anchorage Nodes.

The links to the Anchorage Nodes are never destroyed.

Every node will always try to remain linked to its anodes (that's why they're called anchorage nodes), in this way, the topology of the net won't be fragmented.

For example:

                 G
         ( group of vnodes ) --- H --- AN ---- ( rest of the virtual layer )

If H deletes its link to its anchorage node AN, the group of vnodes G will be left isolated.

Each node will be linked to a number of anodes proportional to its bandwidth.

The link swapping procedure will just shift the Anchorage Node position. For example:

        1. Initial condition

                  AN_1
                  /
                 /
                H----AN_2

        2. The node N creates a vlink to H
                
                  AN_1
                  /
                 /
            N---H----AN_2

        3. N swaps the link with H

              AN_1
              /
             /
            H---N----AN_3
        
        4. N becomes another anode of H, while AN_3 becomes a normal vnode

              AN_1
              /
             /
            H---AN_4----V

Death and rebirth of an Anchorage Node

When one or more anodes die, the vnode will reestablish its optimal number of anodes: it uses one of the remaining anodes as an entry node, creating all the necessary vlinks to the new anchorage nodes.

If all the anodes die, the vnode will re-vhook to the virtual layer, keeping all its other vrnodes.

The anchorage nodes must be always nodes which can't be reached through a physical route.

Viphilama map

The Viphilama map is similar to the Netsukuku maps, but instead of keeping the `rtt' of the nodes and their routes it just maintains their coordinates. It is divided in levels too.

In the map, the multi-barycenter is associated to each (g)node.

Multi-barycenter

In the ideal case, a gnode would be compact and dense and its barycenter would be exactly in its centre. In this case it is possible to consider the gnode as a single point, thus, in the higher level, it would be sufficient to known only its barycenter instead of all the coordinates of its nodes. However, this isn't always true, foe example, consider this group node:

          .  .
        .  . .                               .
          .   .        +                    . 
         .  . .            O

        
    .  a node
    +  the barycenter
    O  another node

All the points are nodes of the same gnode. The nodes on the left are well grouped, while the two nodes on the right are far away from them. The barycenter is in an empty area: not a single node of the group node is there.

In this case, the coordinates of the barycenter are misleading, f.e. the node O believes that the gnode is very near to itself, but actually, it is just the barycenter which is near.

The solution is to use the multi-barycenter, instead, of a single barycenter: a barycenter is assigned to each block of nodes which forms the gnode. In the example above, there would be two barycenters, one for the block on the left and the other for the block on the right.

The multi-barycenter of a single node coincides with its barycenter. The multi-barycenter can be also assigned to group of higher levels (group of group of nodes, etc...).

Obviously, using more coordinates requires a higher use of memory, however, when the number of nodes increases, the blocks become more compacted, thus their number and that of the barycenters decreases.

Concurrency

Let H and G be two near nodes that vhook nearly at same time (first H then G). The internal map of the hooked gnode, won't be updated immediately, therefore G won't notice the presence of H and will hook to another node.

With the next QSPN, the internal map of the gnode will be updated, H will notice that G is its nearest node and vice versa.

The node which has the smallest IP will create a new vlink to the other (without deleting its old vlinks), in this way H and G will be connected.

Load balancing

All the nodes, which have an Internet connection, should be gate nodes. In this way, the traffic passing on the virtual layer will be well balanced. For example, two separated physical gnodes will be linked with the maximum number of virtual links.

                   virtual links
                   ___ ... ____
                  /___ ... ____\
                 /____ ... _____\
                /                \
        Gnode A ------ ... ------- Gnode B
                \_____ ... ______/
                 \____ ... _____/
                  \___ ... ____/
                   virtual links

A node cannot hook to the virtual network using an Internet connection shared through the IGS system (see NTK_RFC 003).

A vnode can share his Internet connection only to other nodes which are physically reachable.

The end of Viphilama

When all the nodes will be linked with physical links, Viphilama will automatically cease to operate. In fact, there will be always a physical route which connects any other node and therefore all the virtual links will be deleted.

Entry nodes and servers

The first vnode contacted by a node, which is hooking to the virtual layer, it's the Entry Node (EN).

The Entry Servers keep a public list of Entry Nodes.

Entry node

An EN is a normal vnode which accepts to be listed on the public list maintained by the Entry Servers. An EN should have at least a medium bandwidth.

The Entry Node, in order to be registered in the public list sends periodically an update to an Entry Server:

  • the EN contacts the Entry Server and gets its Netsukuku IP.
  • the EN downloads a ticket from the Entry Server. The ticket is just a unique number generated on the moment, which must be downloaded exclusively from the virtual layer. The ticket is used by the ES to verify that the EN is actually a vnode.
  • the EN sends the update packet to the ES over the Internet. The packet contains the ticket, the coordinates of the EN and its unique ID. The ID is a random string generated by the EN when it sends its first update. The ID is used by the ES to identify the EN.
  • after 300 seconds the EN sends again the update using the same procedure.

If specified in the ntkd options, a vnode can become an Entry Node after 3 days of uptime.

Entry Server

The Entry Server is a dedicated server which keeps the public list of ENs. The list is ordered by uptime, thus the oldest ENs are on top.

If an EN doesn't send the update, it is removed from the list.

There can be multiple ESs chained together. Each ES knows some other trusted ESs, which in turn have to trust it. The trusted ESs share their RSA public key. When one ES receives an update from an EN, it forwards the update pkt to its trusted ESs, signing it with its private key. The trusted ESs forwards the update pkt to their trusted ESs, and so on.

                ES1 <--> ES2 <--> ES3 <--> ES4 --> MES1 --> MES2 --> MES3

There are also the Mirror Entry Server. They have read-only privileges, i.e. they can only receive an update from an ES or another MES, but they can't send it to any ES.

Downloading the Entry Node list

A node, which is hooking to the virtual layer, will download the Entry Node list in few cases:

  • When it is hooking for the very first time to the virtual layer
  • When all the Entry Nodes present in its cached list are unreachable

When the node downloads the list it follows these steps:

  • it chooses a near ES or MES, f.e. if it is in Japan it chooses a .jp Entry Server.
  • it gives to the ES its own coordinates
  • finally, the Entry Server gives to the node a list of 16 random Entry Node which are near to the coordinates specified by the node.


Feel free to help the development of Viphilama.

Related: Netsukuku_RFC

Ntk_viphilama (last edited 2009-05-13 16:21:05 by anonymous)