netgraph

netgraph

netgraph — модульная сетевая подсистема ядра FreeBSD, основанная на принципе графов. В Netgraph строится граф из узлов различных типов, узел каждого типа имеет некоторое количество входов/выходов (хуков, англ. hooks). Узел netgraph позволяет производить определенные действия над пакетом, проходящим через него. Некоторые Netgraph узлы предоставляют поддержку различных протоколов, инкапсуляций, таких как L2TP, PPTP, PPPoE, PPP, ATM, bluetooth, другие служат для связки модулей и сортировки/маршрутизации между узлами netgraph, например bpf, split.

netgraph также портирован на другие операционные системы: NetBSD[1] и Linux kernel 2.4 и 2.6 от 6WIND[2].

Содержание

История

netgraph был разработан и впервые реализован Джулианом Элишером (Julian Elischer) при участии Арчи Коббса (Archie Cobbs) в Whistle Communications, Inc. для роутера Whistle InterJet, работавшего под управлением модифицированной FreeBSD 2.2. В основное дерево FreeBSD netgraph был включен в версии 3.4.

Типы узлов

Тип Описание
Сетевые интерфейсы, устройства и сокеты
ether Представляет существующий Ethernet-интерфейс, создается автоматически.
gif Представляет существующий gif-интерфейс, создается автоматически.
tty Представляет подключение к терминалу (TTY).
iface Представляет сетевой интерфейс. Для каждого нового узла создается новое устройство ng*. Созданный интерфейс с помощью ifconfig можно настроить как широковещательный или точка-точка.
eiface Представляет Ethernet-интерфейс. Для каждого нового узла создается новое устройство ngeth*. Созданный интерфейс можно настроить с помощью ifconfig.
device Представляет системное устройство. Для каждого нового узла создается новое устройство ngd*, доступное для операций open, close, read и write.
socket Автоматически создаваемый узел, представляет сокет типа NG_CONTROL. Позволяет приложению взаимодействовать с подсистемой netgraph.
ksocket Создает новый BSD-сокет, позволяющий подсистеме netgraph взаимодействовать с другими хостами или службами (антипод socket). Поддерживает только один хук, имя которого в виде семейство/тип/протокол определяет тип создаваемого сокета.
Сетевые протоколы
cisco Инкапсулирует и декапсулирует данные по протоколу Cisco HDLC. Хук downstream должен быть соединен к синхронной линии. Хуки inet, inet6, atalk, и ipx используются для передачи пакетов одноименных протоколов и, обычно, соединяются с соответствующими типами узлов.
frame_relay Производит инкапсуляцию, декапсуляцию и мультиплексирование данных по протоколу Frame relay. Хук downstream должен быть соединен к синхронной линии. Хуки dlci* могут соединяться с соответствующим каналом DLCI.
gif_demux Инкапсулирует и декапсулирует данные gif-интерфейса. Хук gif должен быть соединен c узлом типа gif, хуки inet, inet6, atalk, ipx, atm, natm и ns соответствуют одноименным протоколам.
l2tp Реализует инкапсуляцию протокола L2TP в соответствии с RFC 2661.
lmi Поддержка LMI frame relay.
mppc Поддержка сжатия и шифрования MPPC/MPPE.
ppp Мультиплексирование данных PPP.
pppoe Поддержка PPPoE.
pptpgre Реализация GRE над IP по протоколу PPTP в соответствии с RFC 2637.
vlan Мультиплексирование кадров IEEE 802.1Q VLAN
Коммутация
bridge Реализует Ethernet-бридж на одном или нескольких соединениях. Каждое соединение (соответствующее присоединенному хуку) используется для приема и передачи кадров Ethernet, принцип действия аналогичен коммутатору.
hub Предоставляет простейший механизм распределения данных по нескольким соединениям. Принцип действия аналогичен концентратору: данные, принятые с любого хука пересылаются на все остальные хуки.
one2many Предоставляет механизм распределения данных из одного соединения по нескольким. При этом алгоритм распределения либо копирует данные с хука one на все хуки many* (как hub), либо только на один последовательно (каждый пакет отправляется на разные хуки). Данные, приходящие с любого хука many*, копируются на хук one.
tee Предоставляет возможность «подслушивать» обмен данными между двумя узлами. Данные, полученные через хук right копируются на хуки left и right2left, а полученные через left — на right и left2right.
split Делит один двунаправленный поток данных на два однонаправленных.
etf Фильтрует и распределяет данные на основании типа Ethernet-пакета.
Тестирование и отладка
echo Возвращает любые данные и управляющие сообщения отправителю.
hole Отбрасывает все полученные данные и управляющие сообщения.
Другие
atm
async
atmllc
bluetooth
bpf Позволяет осуществлять фильтрацию/сортировку пакетов на основе правил BPF
bt3c
btsocket
fec Агрегирует несколько Ethernet интерфейсом по технологии EtherChannel
h4
hci
ip_input Пакеты передаваемые на этот узел попадают в ip_input операционной системы и далее обрабатываются также как пришедшие с другого узла по сети
l2cap
netflow Реализация протокола Netflow
rfc1490
sppp Реализация PPP соединений для последовательный каналов внутри Netgraph
sscfu
sscop
ubt
UI
uni
vjc Реализация сжатия Якобсона

Примечания

  1. tech-net: NetBSD port of the freebsd netgraph environment
  2. 6WIND, коммерческий закрытый порт

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "netgraph" в других словарях:

  • Netgraph — netgraph  модульная сетевая подсистема ядра FreeBSD, основанная на принципе графов. В Netgraph строится граф из узлов различных типов, узел каждого типа имеет некоторое количество входов/выходов (далее хуков (hooks)). Узел netgraph позволяет …   Википедия

  • Netgraph — is the graph based kernel networking subsystem of FreeBSD. Netgraph provides support for L2TP, PPTP, ATM, bluetooth using a modular set of nodes that are the graph. Netgraph has also been ported on other Operating Systems: NetBSD [1] (not… …   Wikipedia

  • Multi-link PPP daemon — MPD Multi link PPP daemon for FreeBSD MPD intergared web server Тип клиент и сервер 7 типов связи Разработчик …   Википедия

  • Treebank — A treebank or parsed corpus is a text corpus in which each sentence has been parsed, i.e. annotated with syntactic structure. Syntactic structure is commonly represented as a tree structure, hence the name Treebank. The term Parsed Corpus is… …   Wikipedia

  • Teredo tunneling — Teredo is a tunneling protocol designed to grant IPv6 connectivity to nodes that are located behind IPv6 unaware NAT devices. It defines a way of encapsulating IPv6 packets within IPv4 UDP datagrams that can be routed through NAT devices and on… …   Wikipedia

  • FreeNAS — Infobox Software name = FreeNAS caption = Screenshot of FreeNAS webGUI developer = Olivier Cochard Labbe Volker Theile frequently updated = yes operating system = BSD platform = i386/IA 32 genre = Computer storage license = BSD license language …   Wikipedia

  • NexentaStor — is a proprietary derivative operating system built by the developers of the open source Nexenta OpenSolaris distribution that has been optimized for use virtualized server environments NAS and iSCSI and Fibre Channel applications built around the …   Wikipedia

  • MPD — Die Abkürzung MPD steht für: Magnetoplasmadynamischer Antrieb, ein Antriebsmechanismus für Weltraumfahrzeuge Music Player Daemon, ein Musikabspielprogramm Movimiento Popular Democrático, kommunistische Partei in Ecuador Movimento para a… …   Deutsch Wikipedia

  • PPTP — (англ. Point to Point Tunneling Protocol) туннельный протокол типа точка точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой сети. PPTP помещает… …   Википедия

  • L2CAP — Протокол L2CAP (англ. Logical Link Control and Adaptation Protocol) предоставляет услуги по работе с данными, как ориентированные на соединения, так и без ориентации на них, протоколам более высокого уровня с возможностями… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»