22 |
|
|
23 |
my $len = int($speed / 100); |
my $len = int($speed / 100); |
24 |
|
|
25 |
$graph->{ qq|"$from" -> "$to"| } = { |
my $rev = qq|"$to" -> "$from"|; |
26 |
size => $size, |
|
27 |
speed => $speed, |
# make edge bi-directional if speed difference is less then 10% |
28 |
rtt => $rtt, |
if ( $graph->{$rev} && abs($graph->{$rev}->{speed}->[0] - $speed) < ($speed/10) ) { |
29 |
}; |
$graph->{$rev}->{speed}->[1] = int($speed); |
30 |
|
$graph->{$rev}->{dir} = 'both'; |
31 |
|
} else { |
32 |
|
$graph->{ qq|"$from" -> "$to"| } = { |
33 |
|
size => $size, |
34 |
|
speed => [ int($speed) ], |
35 |
|
rtt => $rtt, |
36 |
|
dir => 'forward', |
37 |
|
}; |
38 |
|
} |
39 |
|
|
40 |
$min ||= $speed; |
$min ||= $speed; |
41 |
$min = $speed if $speed < $min; |
$min = $speed if $speed < $min; |
52 |
|, |
|, |
53 |
join("\n", map { |
join("\n", map { |
54 |
my $node = $_; |
my $node = $_; |
55 |
my $speed = $graph->{$_}->{speed}; |
my @speed = @{ $graph->{$node}->{speed} }; |
56 |
|
my $speed = 0; |
57 |
|
$speed += $_ foreach @speed; |
58 |
|
$speed /= $#speed + 1; |
59 |
my $c = 'ff0000'; |
my $c = 'ff0000'; |
60 |
$c = '00ff00' if ( $speed / 100 ) > 1.5; |
$c = '00ff00' if ( $speed / 100 ) > 5; |
61 |
$c = '0000ff' if ( $speed / 1000 ) > 1; |
$c = '0000ff' if ( $speed / 1000 ) > 1; |
62 |
$c = '8888ff' if ( $speed / 1000 ) > 2; |
$c = '8888ff' if ( $speed / 1000 ) > 2; |
63 |
my $label = $speed; |
my $label = qq|labelfontsize=10,weight=$speed,|; |
64 |
$label =~ s/\.\d+//; |
$label .= qq|headlabel=$speed[0],| if $speed[0]; |
65 |
qq|$node [ label="$label",color="#$c",len=$speed ]|; |
$label .= qq|taillabel=$speed[1],| if $speed[1]; |
66 |
|
$label .= qq|style=dashed,| if $graph->{$node}->{dir} eq 'both'; |
67 |
|
qq|$node [ $label color="#$c",dir=$graph->{$node}->{dir} ]|; |
68 |
} keys %$graph), |
} keys %$graph), |
69 |
qq| |
qq| |
70 |
} |
} |