LINUX.ORG.RU

Сообщения katulu

 

Как разобраться с современным сетевым стеком линукса?

Классическая схема сетевого стека линукса ( https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg ) и даже расширенная документация ( http://linux-ip.net/pages/diagrams.html http://www.oreilly.com/openbook/linag2/book/ch09.html http://wiki.linuxwall.info/doku.php/en:ressources:dossiers:networking:traffic... https://www.slideshare.net/hugolu/the-linux-networking-architecture https://www.cs.unh.edu/cnrg/people/gherrin/linux-net.html https://www.ietf.org/rfc/rfc2373.txt http://lartc.org/lartc.htm ) не даёт ответов на большинство вопросов (как и документация в ядре) из-за огромного количества подсистем, которые разрослись внутри себя до такого уровня, что могут выполнять (в ограниченном объёме) часть функций других подсистем. Также не понятно, в каком месте цепочек происходят те или события (точки входа) этих подсистем, т.е. реальная диаграмма будет больше раз в 10, чем та, что представлена в вики, если мы задействуем весь функционал.

Банально:
1. В каких местах происходят LSM-хуки и какие модули netfilter (а может и других подсистем) умеют понимать их метки на пакетах?
2. Полная документация о работе ICMPv4, ICMPv6, RARP, ARP как минимум. Не стандарт, а как это работает в линуксе. И в каких местах цепочек.
3. Что с ipv6? Его вкосячили почти во все подсистемы, при этом толком нет никакой вменяемой документации. Даже к части модулей нетфильтра нет, не говоря уже об остальном стеке.
4. Все точки «разрыва» для NF_QUEUE в цепочках?
5. Что отрабатывает, а что нет при работе с RAW-сокетами (причём как IP RAW, так и Ethernet RAW)?
6. Куда в цепочки встраивается BPF?
7. Что за хрень с qdisc (tc)? Кроме шейпинга трафика, он может инспектировать трафик, маршрутизировать, зеркалировать его, менять любые куски по правилам, чего только он не может. Причём в обход netfilter вообще (и, возможно, других подсистем).
8. В каких именно местах цепочки происходят хуки IPSec, какое взаимодействие с другими подсистемами? И при локальной передаче и при форвардинге. Например, может ли быть такое, что из-за определенных настроек qdisc через IPSec трафик не пойдёт?
9. NAT64 делается аж 5-ю методами (1 в ядре, 4 юзерспейс-метода)
10. Аналогично, например, iproute2, ebtables, netfilter, qdisc умеют делать NAT (хотя только netfilter полноценный).
12. Минимум 3 реализации мостов. И как они интегрируются с ebtables, iproute2, netfiler, qdisk и прочими? Linux bridges, OVS, реализация через жопу на ebtables. Ну и софтварные стеки, а также bpf.
13. iproute2 умеет как минимум nat, работа с arp (neigh), маршрутизацию по источнику, по политикам, создавать хренову тучу туннелей (VLAN, GVRP+MVRP, VLAN Q-in-Q, VXLAN, GRE, IPv6GRE, IPv6-IPv6 (с возможость капсуляции в UDP), IPv4-IPv4 (с возможость капсуляции в UDP), туннелирование ipv6 через ipv4 и наоборот, интеграция с ipsec, l2tp, l2tpv3), токены на интерфейсах, MPLS, мирроринг, мосты L2, бондинг (включая LACP), DCCP, SCTP, TIPC, HSR. Что дублирует функционал многих модулей ядра, а также, ebtables, netfilter и ряда userspace приложений. И не совсем понятно, как будет работать стек, скажем, с MPLS в плане прохождения через все цепочки.
14. cgroup namespaces. Как оно вообще работает со всем вышеперечисленным?
15. Linux Server (балансер)?
16. Работа TCP/UDP поверх RDS (Infiniband)? Там же свой стек.

В бздах та же фигня?

 , , , ,

katulu
()

RSS подписка на новые темы