nuclight: (Default)
nuclight ([personal profile] nuclight) wrote2012-04-26 03:11 am
Entry tags:

IpfwNg

В честь 26 годовщины 26 апреля уволился с текущей работы и таки наконец начал проект http://wiki.freebsd.org/IpfwNg — хотя на работе FreeBSD и была основной системой, реальную возможность пилить ядро я так и не получил (хотя тот же NAT64 нам бы понадобился не через полгода, так через год). В ближайшие недели посижу дома и надеюсь сделать хотя бы скелет, который можно будет потом уже в свободное время потихоньку пилить — работы по проекту предстоит очень много.

Желающие обсудить по делу — велкам в каменты (хотя я туда еще не все наброски оформил).

Пример языка

[identity profile] nuclight.livejournal.com 2012-05-28 08:07 pm (UTC)(link)
Мнээ... Я ожидал не этого, которое в общем-то в стиле Капитана Очевидность, а куда более интересного - описания данных уже в payload, на примере FTP или лучше того же SIP. Нижний уровень интереса не представляет, его можно даже захардкодить (и фрагментацию) для скорости, черт с ним, ибо там пока всего 2 варианта, v4 и v6 (кстати iptables тоже базово поддерживает IP, а модулями уже то, что выше).

А вот то, что уровнем выше, и что ты проповедовал как замену хелперам, то более значимо повлияет на архитектуру, покажи лучше это.

[identity profile] http://users.livejournal.com/_slw/ 2012-05-28 08:37 pm (UTC)(link)
я не вижу принципиальной разницы. в конце концов ipv4 -- это payload езернета.
так же мне не очевидно, почему следует ip поддерживать базово, в смысле чем он отличается от pppoe, gre, ipip... ну и будет ли выйгрыш в скорости, поскольку при базовом разборе ip его разбирают целиком, а при таком варианте разбор возможно будет происходить только частично и только когда надо. в смысле этакие ленивые вычисления. это может довольно сильно усложнить "компилятор" (а может и нет), но вряд ли скажется на эффективности обработки. и мне кажется, что можно с нуля вот так все описать.

да, при этом потребуются некоторые примитивы: преобразование в текстовый вид и обратно 8/16/32 битных чисел, ipv4/6 (а при добавлении протоколов дополнительные примитивые -- asn1 для h.323, побайтовое-через-запятую представление для ftp -- это надо будет делать модулями с реализацией на си); для отслеживания сесиий -- хэши и деревья от комбинаций битовых полей, для nat -- мапинг битовых полей одной размерности в другую.

я напишу пример для sip, но не сегодня -- я его на память не помню и надо будет rfc в очередной раз освежать в памяти.

[identity profile] http://users.livejournal.com/_slw/ 2012-05-29 05:48 pm (UTC)(link)
пример положил сюда zxy.spb.ru/rules.ip.txt

вот как-то так
я синтаксисом не доволен, но хоть как-то так.