dastapov: (Default)
[personal profile] dastapov
В комментариях к соседней записи опять стала муссироваться тема записи всех звонков без разбора, и мне захотелось сделать короткое резюме.

Для начала текущее положение вещей

Все известные мне законы (я в курсе про Россию-Украину, Евросоюз, UK, страны Балтии) обязывают операторов делать ровно две вещи:

* Хранить (много лет) и предоставлять метаданные о разговорах (кто кому когда звонил)
* По решению суда/прокуратуры записывать разговоры конкретного абонента или предоставлять техническую возможность вести такую запись с момента поступления к ним такого предписания. Список тех, кого слушают, "не резиновый" - нельзя взять и, грубо говоря, запихнуть туда все номера всех абонентов.

Записи разговоров и тексты СМС операторы сохранять не обязаны.

А если все же обяжут?

Если вдруг эти требования ужесточатся, оператору будет:
(1) Достаточно легко начать хранить тексты СМС. Так как SMS-центров мало, они расположены централизовано, SMS мелкий - возможно даже меньше, чем объем метаданных о том, кто кому и как его послал)
(2) Не очень легко начать хранить записи всех разговоров. Так как объемы солидные, коммутаторов много, они могут быть территориально разнесены, потребуется их апгрейд, плюс возможно понадобится пост-процессинг - в процессе разговоров звонки могут "кочевать" по узлам сети, и каждый отдельно взятый коммутатор может "слышать" только часть разговора. Плюс, если вдуматься, у оператора существующая базовая сеть рассчитана на определенную нагрузку. Если начать, грубо говоря, передавать тот же объем данных дважды (пусть и без жестких realtime-требований), то потребуется либо доп. каналы связи (чтобы сразу передавать куда-то в центр и там обрабатывать), либо процессорные мощности и каналы связи (жмем в mp3, а уже потом передаем), или какие-то другие инженерные решения. Естественно, это все решаемые проблемы. Все, что я хочу сказать - задача не сводится к "поставили винт побольше, и всего делов", как это многим кажется на первый взгляд.

А вдруг оператор сам ...?

А вдруг оператор сам хранит эти данные для каких-то своих нужд, и это делается для всех абонентов без разбора?

(3) Это справедливо в отношении метаданных - по ним производится биллинг, то есть определяется объем потребленных услуг и выставляются счета.
(4) Это может быть справедливо для СМС: они могут попадать в какие-то логи на SMS-центре, быть частью бэкапов, и т.п.
* Хранить записи всех разговоров оператору никакой необходимости нет
(5) При этом я вполне допускаю, что в процессе разбирательств с какой-то проблемой оператор вполне может выборочно сохранять как СМС-ы, так и звонки - но, скорее всего, критерием выборки будет не "для вот этих абонентов", а "для вот этого оборудования".

А вдруг все-таки оператор это делает?

Пофантазируем. Может ли все-таки получится, что оператор сохраняет все записи всех звонков? Может, он из этого извлекает какую-то выгоду? Честно говоря, как я ни старался, я не смог придумать подходящего сценария кроме "группа сотрудников вступила в сговор и продает данные криминальным элементам".

Ок, насколько это реально? Проблема в том, что сначала надо эти звонки где-то сохранять. Сделать это "на вот этом сервере вот тут в закутке" - не выйдет, не те объемы (если сохранять всё). Купить для этого отдельно железо - не выйдет, по понятным причинам. Да и потом, технически проще "торговать налево" чем-то, что имеет альтернативное легитимное применение - помогать спаммерам рассылать SMS, занижать суммы счетов, торговать распечатками метаданных или кодами пополнений баланса. И то, для этого, по моим прикидкам, потребуется соучастие не двух, и не пяти и даже не десяти человек в самых разных подразделениях, и подобная затея имеет очень большие шансы на провал даже при том, что можно попытаться сделать хорошую мину при плохой игре ("да мы тут просто ... это ... тестируем ...."). А большой склад записей звонков - это чистый криминал, никаких альтернативных объяснений ему быть не может, и любой безопасник с радостью съест всех замешанных без соли и перца.

А вот моего друга кума говорила, что ей показывали распечатки или записи звонков за 2006 год ...

У меня есть два гораздо более простых (по сравнению с "оператор пишет все") объяснения этому факту. Куму прослушивали в рамках оперативных мероприятий (см. выше), или же ее собеседника прослушивали точно таким же образом.

Для удобства восприятия информация сведена в табличку

Метаданные о звонке (кто, кому, когда, как долго, в какой соте, ...)Тексты СМСЗапись разговоров
Обязывает ли закон операторов хранить и предоставлять эти данные для всех абонентов?ДаНетНет
Если оператора обяжут, легко ли ему будет хранить эти данные в полном объеме?--Да(1)Нет(2)
Обязывает ли закон осуществлять выборочную запись этих данных (по предписанию прокуратуры, ...)--ДаДа
Хранит ли оператор такие данные для всех абонентов независимо от требований закона?Да(3)Возможно(4)Нет
Хранит ли оператор такие данные выборочно?--Возможно(5)Возможно(5)



(no subject)

Date: 2012-05-20 09:02 am (UTC)
From: [identity profile] zwstl.livejournal.com
Сейчас не понял. Предлагается это хранить на базовой? То есть в каждую базовою добавить надёжное хранилище на несколько десятков терабайт, обеспечить гарантированное электропитания и тп, и тд?

(no subject)

Date: 2012-05-20 09:16 am (UTC)
wizzard: (Default)
From: [personal profile] wizzard
Перечитайте мой изначальный комментарий, пожалуйста.

Для хранения rolling log'a не требуются десятки терабайт и гарантированное электропитание, поскольку мы делаем best-effort, не реалтаймовый сервис.

(no subject)

Date: 2012-05-20 11:16 am (UTC)
From: [identity profile] zwstl.livejournal.com
(устало) вам нужно обеспечить надёжное хранение данных. При этом вести одновременную запись нескольких потоков (сколько в среднем через одну базовую разговоров ведётся?). Больше потоков - больше требований к IOPS. Цена за IOPS на стораджах растёт в геометрической прогрессии. Я подозреваю, что SATA диски здесь не подойдут.
Надёжность хранения стораджа впрямую зависит от электропитания. Поставили сторадж - обеспечь гарантию. Кстати, сторадж ещё та энергопотреблялка.
Плюс винты ездить менять, мониторить их. Еще надо решить проблему дублирования разговора, если абоненты, ведущие разговор, на разных базовых сидят.
Итого: при распределённом решении - огромные потери на эсплуатации.

PS. "скажем, на 5-10 тб обьемом" = десятки терабайт.

(no subject)

Date: 2012-05-20 12:51 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
Предположим, что БС обслуживает одновременно 10 000 звонков. Пускай ув. [livejournal.com profile] _adept_ уточнит, сколько их на самом деле.

Берем 100 мбайт RAM. Складываем туда эти звонки. 16 мбайт\сек.
Каждые 5 сек сбрасываем блок в сторейдж, с указанием, кто кому звонил в данном блоке. <1 IOPS, 20 мб\c. Под блок номеров выделяем еще 10 мбайт, сбрасываем каждую минуту, gzip'аем, естественно.

Когда приходит запрос "выдать звонки таких-то абонентов", проводим линейный скан по блокам с номерами и грепаем их на предмет нужного номера. Вычитываем нужные блоки с звонками. Фильтруем прочитанное в RAM. Передаем ответ. ~2-5 IOPS, 160 мбайт\сек, ориентировочное время выполнения запроса "за сутки" - <1 минуты.

На сутки хватит ОДНОГО SATA-диска (180 мбайт\с, 2 тб, 60 IOPS). С дублированием - двух. Pooling не нужен. Если рейд софтверный, то мы спрашиваем, какие части зеркал отвалились, и по возможности на развалившиеся зеркала не пишем. Хотя, нагрузка никакая, выдержат, имхо.

Проблема дублирования разговора решается на клиентской машине, на которую приходит свалка результатов ото всех базовых.

Винты, на которые не производится запись, тупо отключаем, экономя электроэнергию. Пришел запрос? замечательно, включаем столько, сколько сможем отпарсить read bandwidth.

Кстати, можно вообще на кассетках делать, благо, ТЗ позволяет - будет слегка дороже, но намного проще, и, возможно, дешевле в эксплуатации.

Ну кто здесь строил high-load системы, в самом деле?
Я так, рядом стоял, самое сложное что было - 30м хитов в сутки на 1 сервер стоимостью 2k$ (аналитика от датчиков и сбоев софта), и у нас вполне себе soft realtime получалось, с окном задержки в 10 секунд...

(no subject)

Date: 2012-05-20 07:34 pm (UTC)
From: [identity profile] zwstl.livejournal.com
10000 звонков - 10000 потоков, которые надо писать на диск. Какой к чёрту SATA?

(no subject)

Date: 2012-05-20 07:36 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
Я извиняюсь, вам знакомо слово "кэш"?

Нет, не жесткого диска, и не ОС. Свой собственный, в приложении.

(no subject)

Date: 2012-05-20 08:34 pm (UTC)
From: [identity profile] zwstl.livejournal.com
А кэш надо на диски сбрасывать? 10000 звонков. 10000 файлов. Если в среднем звонок длится 5 минут - каждые 5 минут(в среднем) 10000 файлов. Давайте посчитаем, какой объем кэша нужен и какая скорость сбрасывания на диски (20 SATA, RAID1) нам нужна. И не забудьте, вам ещё БД нужна, куда будет инфа укладываться, какому файлу какой звонок соответствует.
PS. Или мы кэш одним потоком сливать будем, сплошняком, вперемешку.
PPS. Я как представлю - 1000 ПАКов (2 сервера, 40 дисков, софтварный рэйд, ПО на коленке) по всему региону 500 км на 500 км. Без нормального мониторинга и самовосстановления.
PPPS. Кстати, ещё обычно предлагают забабахать RAID на базе Intel Matrix :D

(no subject)

Date: 2012-05-20 08:51 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
> Давайте посчитаем, какой объем кэша нужен и какая скорость сбрасывания на диски (20 SATA, RAID1) нам нужна.

Там приведены цифры, между прочим :)
100 мб RAM пишущему потоку, где-то столько же, или даже меньше - читающему.

> PS. Или мы кэш одним потоком сливать будем, сплошняком, вперемешку.

Да, выше достаточно подробно описан алгоритм, как сделать это одним потоком на запись и одним потоком на чтение. Почитайте внимательно.

> И не забудьте, вам ещё БД нужна, куда будет инфа укладываться, какому файлу какой звонок соответствует.

Зачем нам коммитить каждый фрейм звонка отдельно, да даже каждый звонок?
Edited Date: 2012-05-20 08:57 pm (UTC)

(no subject)

Date: 2012-05-20 08:06 pm (UTC)
From: [identity profile] blacklion.livejournal.com
Там наверху описан алгоритм с одним потоком, ага. На все звонки.

(no subject)

Date: 2012-05-20 08:38 pm (UTC)
From: [identity profile] zwstl.livejournal.com
Куда нам, ретроградам, которые только и хотят, что б попилить бюджеты да новые, прикольные железки пощупать.

Profile

dastapov: (Default)
Dmitry Astapov

May 2022

M T W T F S S
       1
2345678
9101112131415
161718 19202122
23242526272829
3031     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags