Frontend Backend HTTP SMTP POP 3 IMAP Radius
Структура современных служб в сетях сервис-провайдеров Frontend Backend HTTP SMTP POP 3 IMAP Radius IPv 6 SQL BDB Plain-text + script IPv 6 ? ? ? Forum MTA Billing AAA etc.
Plain-text Backend Пример использования #!/usr/bin/perl use strict; use Net: : IP qw/: PROC/; use Net: : CIDR qw/: all/; my $stat; while (<>) { my ($ip, $bytes) = (split /s+/, $_)[0, 9]; next unless ip_get_version($ip) == 6 && $bytes ne '-'; my $prefix = addrandmask 2 cidr($ip, 'ffff: : '); $stat->{$prefix} = defined($stat->{$prefix}) ? $stat->{$prefix} + $bytes : $bytes; } foreach ( (sort { $stat->{$b} <=> $stat->{$a} } keys %$stat)[0. . 4]) { printf "%30 s: %dn", $_, $stat->{$_}; } # cat access. log |. /stat. pl 2 a 02: 2 b 18: : /32: 2001: 470: : /32: 2 a 01: 5800: : /32: 2 a 01: d 0: : /32: 2001: 4130: : /32: 1018267 552817 471825 297530 191128 # /usr/bin/time -h cat access. log | stat. pl 4, 58 s real 0, 00 s user 0, 01 s sys
SQL Backend: My. SQL vs. Postgre. SQL My. SQL: хранение IP-адреса в текстовом поле mysql> SELECT prefix FROM networks WHERE INET_ATON('10. 0. 1') & (-1 << 32 SUBSTRING_INDEX(prefix, '/', -1)) = INET_ATON(SUBSTRING_INDEX(prefix, '/', 1)); +-------+ | prefix | +-------+ | 10. 0/24 | +-------+ 1 row in set (0. 00 sec) Postgre. SQL: хранение IP-адресов, в т. ч. IPv 6, в поле специального типа test=> d networks; Table "public. networks" Column | Type | Modifiers --------+------prefix | cidr | bytes | integer | test=> SELECT prefix FROM networks WHERE '10. 0. 1' <<= prefix; prefix -------10. 0/24 (1 row)
SQL Backend: инструментарий Postgre. SQL test=> SELECT prefix FROM networks WHERE '2 a 00: 1588: 0: 2: : /96' <<= prefix; prefix ----------2 a 00: 1588: 0: 2: : /64 (1 row) test=> SELECT prefix FROM networks WHERE '10. 0. 1' <<= prefix; prefix -------10. 0/24 (1 row) test=> SELECT * FROM networks; prefix | bytes --------+-----10. 0. 1/32 | 49289432 10. 10. 0. 6/32 | 49498 10. 0. 15/32 | 49498 10. 10. 15/32 | 928392 (5 rows) test=> select sum(bytes) from networks where prefix <<= '10. 0. 0/24'; sum -----98677860 (1 row)
SQL Backend: инструментарий Postgre. SQL test=> select prefix from networks; prefix ----------10. 0/24 2 a 00: 1588: 0: 2: : /64 2 a 00: 1588: 0: 2: : /96 2 a 00: 1588: 0: 2: : /80 10. 0/25 10. 0. 1. 0/25 (6 rows) test=> SELECT prefix FROM networks WHERE family(prefix) = 6; prefix ----------2 a 00: 1588: 0: 2: : /64 2 a 00: 1588: 0: 2: : /96 2 a 00: 1588: 0: 2: : /80 (3 rows) test=> SELECT host(broadcast(prefix)) FROM networks; host -----------------10. 0. 10. 255 2 a 00: 1588: 0: 2: ffff: ffff 2 a 00: 1588: 0: 2: 0: ffff: ffff 10. 0. 127 10. 0. 1. 127 (6 rows)
SQL Backend: инструментарий Postgre. SQL test=> select prefix from networks; prefix ----------10. 0/24 2 a 00: 1588: 0: 2: : /64 2 a 00: 1588: 0: 2: : /96 2 a 00: 1588: 0: 2: : /80 10. 0/25 10. 0. 1. 0/25 (6 rows) test=> select networks. prefix from networks left join networks as b on networks. prefix << b. prefix where b. prefix is NULL; prefix ----------10. 0/24 2 a 00: 1588: 0: 2: : /64 10. 0. 1. 0/25 (3 rows)
03 /0 8 05 /20 /0 11 8/ 07 20 /0 11 8 09 /20 /0 11 8/ 11 20 /0 11 8 13 /20 /0 11 8 15 /20 /0 11 8/ 17 20 /0 11 8 19 /20 /0 11 8/ 21 20 /0 11 8 23 /20 /0 11 8 25 /20 /0 11 8 27 /20 /0 11 8/ 29 20 /0 11 8 31 /20 /0 11 8 02 /20 /0 11 9 04 /20 /0 11 9/ 06 20 /0 11 9 08 /20 /0 11 9/ 10 20 /0 11 9 12 /20 /0 11 9 14 /20 /0 11 9 16 /20 /0 11 9 18 /20 /0 11 9/ 20 20 /0 11 9 22 /20 /0 11 9/ 24 20 /0 11 9 26 /20 /0 11 9 28 /20 /0 11 9/ 30 20 /0 11 9 02 /20 /1 11 0 04 /20 /1 11 0 06 /20 /1 11 0 08 /20 /1 11 0 10 /20 /1 11 0 12 /20 /1 11 0/ 14 20 /1 11 0 16 /20 /1 11 0 18 /20 /1 11 0 22 /20 /1 11 0 24 /20 /1 11 0 26 /20 /1 11 0/ 28 20 /1 11 0 30 /20 /1 11 0 01 /20 /1 11 1/ 03 20 /1 11 1/ 20 11 0 03/11/2011 01/11/2011 30/10/2011 28/10/2011 26/10/2011 24/10/2011 22/10/2011 20/10/2011 18/10/2011 16/10/2011 14/10/2011 12/10/2011 10/10/2011 08/10/2011 06/10/2011 04/10/2011 02/10/2011 30/09/2011 28/09/2011 26/09/2011 24/09/2011 22/09/2011 20/09/2011 18/09/2011 16/09/2011 14/09/2011 12/09/2011 10/09/2011 08/09/2011 06/09/2011 04/09/2011 02/09/2011 31/08/2011 29/08/2011 27/08/2011 25/08/2011 23/08/2011 21/08/2011 19/08/2011 17/08/2011 15/08/2011 13/08/2011 11/08/2011 09/08/2011 07/08/2011 05/08/2011 03/08/2011 Немного статистики Количество писем отправленных по IPv 6 за последние 90 дней 140 120 100 80 60 40 20 Процентное соотношение IPv 6/IPv 4 отправок за последние 90 дней 8 7 6 5 4 3 2 1 0
Немного статистики Топ-5 известных серверов, принимающих почту по IPv 6 master. netassist. ua ficus. retn. net 1% 3% mail. top. net. ua 9% relay. vl. net. ua 11% REST 53% mx 1. mirohost. net 23%
- Slides: 14