Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

Ntk_scalability 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. - QSPN scalability
  2. The QSPN is an optimised way of "sending a tracer_pkt from each extreme node".
  3. A tracer_pkt is just a flood, and the total number of floods is given by:
  4. total_floods = extreme_nodes + 1
  5. where the extreme_nodes are:
  6. extreme_nodes = number_of_nodes_with_only_one_link + number_of_cycles*2
  7. A cycle here is meant as a set of nodes, where each node is linked at least at
  8. two other nodes of the set.
  9. The total different packets generated by a single flood is equal to:
  10. total_packets_per_flood = Sum( number_of_links_of_each_node - 1 ) + 1
  11. Since the network is organized in gnodes, the total_floods for all the levels
  12. will be the sum of the total_floods of each level. The same applies to the
  13. total_packets_per_flood.
  14. Now we'll consider various worst scenarios.
  15. - First scenario
  16. The first worst case is a network where all the nodes are an extreme_node, i.e.
  17. there's one node X and all the other are linked to it by just one link.
  18. O Y
  19. \ /
  20. \ /
  21. N ---- X ----L
  22. |
  23. |
  24. M (A graph describing the first worst
  25. scenario)
  26. In this case all the nodes, including X, will send a tracer_pkt.
  27. This means that if all the nodes in the level 0 are linked in that way, and all
  28. the gnodes of the higher levels are also linked between them in the same way,
  29. then the total floods, in all the levels, we'll be:
  30. total_floods = MAXGROUPNODE * levels
  31. Where MAXGROUPNODE is the number of (g)node present in a gnode.
  32. By the way, this configuration has its advantages because there is only one
  33. hop between each node, therefore each flood will end after one hop and the
  34. total packets will be:
  35. total_packets = MAXGROUPNODE^2 * levels
  36. MAXGROUPNODE is equal to 256.
  37. In the ipv4 we have 4 levels.
  38. This means that in a network composed by 2^32 nodes, in the first worst
  39. scenario to run the QSPN at all the levels will have:
  40. total_floods = 1024; total_packets = 262144;
  41. Note that "levels" is equal to log_2(N)/MAXGROUPNODE_BITS, where N is the
  42. maximum number of nodes in the network and MAXGROUPNODE_BITS is equal to 8.
  43. MAXGROUPNODE is also equal to 2^MAXGROUPNODE_BITS.
  44. The final formulas that describes the growth of the number of floods and
  45. packets are:
  46. total_floods = 2^5 * log_2(N)
  47. total_packets = 2^13 * log_2(N)
  48. - Second scenario
  49. In this case we consider a network where each (g)node is linked to all the other
  50. (g)nodes.
  51. C
  52. /|\
  53. / | \
  54. A-----D
  55. \ | /
  56. \|/
  57. E
  58. That means that we have 1 cycle and 0 nodes_with_only_one_link, so the
  59. total_floods are:
  60. total_floods = 2
  61. Since every (g)node is linked with every other (g)gnodes, the number of links
  62. for each of them is MAXGROUPNODE and the number of total different packets
  63. generated per flood is:
  64. total_packets = ( ( MAXGROUPNODE - 1 ) * MAXGROUPNODE + 1)
  65. Supposing that this configuration is the same for the upper levels too, we have:
  66. total_floods = 2 * levels
  67. total_packets = total_floods * ( ( MAXGROUPNODE - 1 ) * MAXGROUPNODE + 1)
  68. N = total_number_of_nodes_in_the_network
  69. levels = log_2(N)/MAXGROUPNODE_BITS
  70. total_packets = (log_2(N)/4) * ( ( MAXGROUPNODE - 1 ) * MAXGROUPNODE + 1)
  71. In ipv4, with 2^32 nodes:
  72. total_packets = 522248
  73. - Third scenario
  74. All the (g)nodes are in just one line: to reach the end node B from the start
  75. node A we have traverse N nodes, with N equal to the total number of nodes
  76. minus 2.
  77. In this awful case a flood will have to traverse N hops, this means that if
  78. the average rtt between two nodes is 70ms, then the flood, if started from an
  79. extreme node will take about 9 years to reach the other end.
  80. - About the maximum size of a tracer_pkt
  81. Each time a tracer_pkt traverse a node it grows of one byte, since the
  82. tracer_pkt is always restricted to a determinate level, which has maximum
  83. MAXGROUPNODE nodes, the maximum size of a plain tracer_pkt is 256 Bytes (we
  84. are not counting the headers, which are a constant size).
  85. The things change if the tracer_pkt traverses border nodes, in fact,
  86. (7 + 10*L) bytes are added in the the tracer_pkt each time it passes trough a
  87. bnode. L is the number of gnodes the border node is linked to.
  88. - About the maximum size of the maps
  89. The size of levels in the maps is fixed 'cause we already know the maximum number
  90. of nodes in the network. We are also considering that we store only the 20
  91. best routes for each node.
  92. So the maximum size of the maps, when we have all the routes stored, and the
  93. bnode with all their maximum links filled is:
  94. internal map | external map | border node map
  95. ipv4 44032 | 136704 | 3159552
  96. ipv6 44032 | 683520 | 15797760
  97. (in bytes).
  98. The bnode map is so large because we are considering the worst case in which
  99. in each of our gnodes there are 256 bnodes each of them is linked to 512
  100. gnodes.
  101. - About the overload created by multiple hooks of (g)nodes
  102. In order to prevent that a QSPN is sent every time a (g)node joins the network
  103. the QSPN are all syncronised in each level, therefore the maps are updated at
  104. each qspn_round. (Read the section "5.1.4 Qspn round").