Last active
August 29, 2015 13:57
-
-
Save meteozond/9506571 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 Основная задача: | |
1.1 Обеспечить доступ к seq/ack номерам сокета из userspace | |
1.2 Чтение seq/ack номеров заданного сокета | |
1.3 Изменение seq/ack номеров заданного сокета | |
2 Исполнение | |
2.1 Модуль ядра Linux | |
2.2 Интерфейс, один или несколько по согласованию: | |
2.2.1 echo/cat /proc | |
2.2.2 sysctl -w | |
2.2.2 cli-утилита | |
3 Совместимость | |
3.1 Linux | |
3.1.1.Debian | |
3.1.1.1 Sqeezy | |
3.1.1.2 Wheezy | |
3.1.1.3 Sid | |
3.1.2.Ubuntu | |
3.1.2.1 Raring Ringtail | |
3.1.2.2 Saucy Salamande | |
3.1.2.3 Trusty Tahr | |
3.2 IPv4 | |
3.3 IPv6 | |
4 Особые требования | |
4.1 Должна происходить именно замена seq/ack значений, а не их подмена на лету | |
4.2 Фоновая работа модуля не должна оказывать влияние на производительность системы | |
5 Входные данные | |
5.1 Для идентификации сокета (здесь и далее socket_id) допускается использование | |
5.1.1 client_ip:client_port | |
5.1.2 inode | |
5.2 seq - в режиме изменения значений | |
5.3 ack - в режиме изменения значений | |
6 Выходные данные | |
6.1 seq - в режиме чтения значений | |
6.2 ack - в режиме чтения значений | |
6.3 Сообщение об ошибке | |
6.3.1 Если заданного сокета нет | |
6.3.1 Если не удалось произвести изменения | |
7. Допустимые сценацрии | |
7.1 cli-утилита | |
7.1.1 Получение данных | |
> ./sockseq [ID] | |
< [seq] [ack] | |
7.1.2 Запись данных | |
> ./sockseq [ID] [seq] [ack] | |
< return 0 | |
7.1.3 Ошибки | |
7.1.3.1 Нет сокета | |
> ./sockseq [ID] | |
< return 1; Socket doesn't exist | |
7.1.3.2 Не удалось внести изменения | |
> ./sockseq [ID] [seq] [ack] | |
< return 2; Replacement failed [причина] | |
7.2 cat/echo /proc - требует согласования | |
7.2.1 Получение данных | |
> cat /proc/sockseq/[ID] | |
< [seq] [ack] | |
7.2.2 Запись данных | |
> echo [seq] [ack] > /proc/sockseq/[ID] | |
< return 0 | |
7.2.3 Необходимо согласовать формат вывода ошибок | |
7.3 sysctl - требует согласования | |
7.3.1 Получение данных | |
> sysctl -w sockseq.get=“ID=[ip:port]” | |
< [seq] [ack] | |
7.3.2 Запись данных | |
> sysctl -w sockseq.set=“ID=[ip:port] seq=[seq] ack=[ack]” | |
< return 0 | |
7.3.3 Необходимо согласовать формат вывода ошибок | |
8 Справочная информация | |
8.1 Модуль будет являться частью механизма миграции соединений между хостами, так же известного как: Connection(или Socket, Stream) Handoff(или Transfer,Pass,Migrate,Repair,Move) или Split tcp. | |
8.2 Даная задача решается в рамках следующих сторонних проектов sock_forge, Sockmi, Migsock, Mtcp, Tcpha, Sockman, Tcpcp |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment