anchor.diff:  gen_routing_table(Version) ->
       %% Retrieve ring from local's master [etc|mnesia]
       {ok, CurRing} = leo_redundant_manager_api:get_ring(Version),
  -    Checksum = erlang:crc32(term_to_binary(CurRing)),
  -    ?debugVal(Checksum),
  -    %%
  -
  -
  -    {ok, Checksum}.
  +    Checksum  = erlang:crc32(term_to_binary(CurRing)),
  +    RingSize  = length(CurRing),
  +    GroupSize = leo_math:ceiling(RingSize / ?DEF_NUM_OF_DIV),
  +
  +    %% table:{id, vnode-id, node, next-vnode-id}
  +    {_,_,_,Index,Table} =
  +        lists:foldl(
  +          fun({VId, Node}, {Id, GId, NextVId, IdxAcc, TblAcc}) when GId == GroupSize ->
  +                  {Id - 1, 0, VId, [VId|IdxAcc], [{Id, VId, Node, NextVId}|TblAcc]};
  +             ({VId, Node}, {Id, GId, NextVId, IdxAcc, TblAcc}) ->
  +                  {Id - 1, GId + 1, VId, IdxAcc, [{Id, VId, Node, NextVId}|TblAcc]}
  +          end, {RingSize, 0, '$end_of_table', [], []}, lists:reverse(CurRing)),
  +    {ok, {Checksum, Index, Table}}.
  +
  
positive.code: -define(DEF_TIMEOUT,       3000).
  -endif.
  
  -record(routing_table, {index = []    :: list(pos_integer()),
                          checksum = -1 :: integer(),
                          table = []    :: list()
  
negative.code:                   timestamp    = Timestamp} = State) ->
  
      {ok, {R1, R2}}= leo_redundant_manager_api:checksum(?CHECKSUM_RING),
      ThisTime = timestamp(),
  
      case ((ThisTime - Timestamp) < MinInterval) of
  