This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
software:freebsd:igmpproxy_on_netgraph [2015/05/15 15:14] – root | software:freebsd:igmpproxy_on_netgraph [2015/05/15 15:20] – [netgraph] root | ||
---|---|---|---|
Line 20: | Line 20: | ||
===== Принцип работы ===== | ===== Принцип работы ===== | ||
+ | ==== netgraph ==== | ||
+ | Его можно сравнить с LUA: он даёт широкие возможности по манипуляции с сетевыми пакетами, | ||
+ | У меня было много разных вариантов но в конце мне удалось свести количество нод к двум: **ng_ether** и **ng_bpf**.\\ | ||
+ | **ng_ether** — имеет несколько хуков: __lower__ — это вход/ | ||
+ | **ng_bpf** — программируемая нода, общий смысл программ: | ||
+ | Не большая хитрость ноды в том, что программа устанавливается на входную ноду. Но ноды которые указаны как выходные тоже могут принимать пакеты и обрабатывать они их будут по тем программам которые ассоциированы с ними.\\ | ||
+ | |||
+ | ==== Передача пакетов ==== | ||
{{: | {{: | ||
**BPF** настроен таким образом чтобы пропускать все без исключения пакеты с __upper__ хуков **ng_ether** нод на __lower__ хуки (пакеты от системы в сеть). Приходящие из сети пакеты с __lower__ хуков нод проверяются в **BPF**, и\\ | **BPF** настроен таким образом чтобы пропускать все без исключения пакеты с __upper__ хуков **ng_ether** нод на __lower__ хуки (пакеты от системы в сеть). Приходящие из сети пакеты с __lower__ хуков нод проверяются в **BPF**, и\\ |