|
Оценка производителности графов Netgraph. |
Статьи |
|
|
|
На примере возможных схем анализа трафика, средствами ng_netflow.
В данном документе приведена простейшая методика оценки производительности графов Netgraph на примерах "сбора" трафика, проходящего в обоих направлениях, через интерфейс. Большая часть схем представляет лишь теоретичекие изыскания и не испытывалась на практике. Для анализа схем используются примитивные педставления о завимости производительности системы от количества узлов в графе. Для упрощения, при анализе не учитывается внутреннее устройство подсистемы Netgraph и отдельныхузлов.
Условные обозначения:
Длина графа - количество узлов, через которые проходит каждый пакет, по пути через netgraph. Для нивелирования схем узел em0: учитываться не будет. Предполагается, что чем длиннее граф, тем больше ресурсов запрачивается на прохождение каждого пакета.
Количество опреций копирования и перенаправления данных - показывает количество соответствующих опрераций затрачиваемых при прохождении через граф. Чем больше опрераций копирования и перенаправления, тем тем больше ресурсов запрачивается при прохождении через граф. Однако, перенаправление менее ресурсоемко в стравнении с копированием. Для упрощения, внутренне устройство узлов, рассматриватся не будет. Копирование лишь подразумевает, что после прохождения узла создается 2 и более копии данных. Перенаправление - обозначает, лишь то, что количество экземляров данных остается прежним.
Узел ng_netflow имеет 3 типа хуков: ifaceX, outX, export При прохождении пакета в направлении ifaceX - outX, анализируются заголовки пакета. Иформация о пакете заносится функцией hash_insert() в hash-таблицу. При достижении определенных условий функция export_send() формирует пакт netflow и отравляет в хук export.
Однако, при нормальных условиях, количество пакетов отправляемых в хук export значительно меньше количества пакетов, проходящих через узел в направлении ifaceX - outX. Таким образом, вкладом export_send() можно пренебречь. Можно считать, что производится лишь опрерация перенаправления.
При прохождении пакета в направлении outX - ifaceX, данные сразу перенаправляются в хук ifaceX.
Таким образом, при прохождении прафика через узел ng_netflow производится 0 операций коприования 1 операция перенаправления данных.
Узел ng_one2many может работать в 2-х режимах: XMIT_ALL - пакет приходящий на хук one перенаправляется в один из хуков many, в остальные доставляется копия.
XMIT_ROUNDROBIN - выбор хука many производится последовательным перебором всех хуков manyX. Таким образом, в этом случае делается лишь одна опрерация перенаправления.XMIT_ROUNDROBIN является поведением по умолчанию.
Пакеты, приходящие на любой из хуков manyX, в обоих случаях перенаправляются в хук one.
Пакеты приходящие на любой из хуков узла ng_hub перенаправляются в один из хуков, в остальные доставляется копия.
Длина графа при движении от em0:lower к em0:upper составляет 3 узла: tee - one2many - netflow
При этом делается 1 операция коприования и 2 перенаправления данных.
При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 1:
ngctl -f- <<-SEQ
mkpeer em0: tee lower left
name em0:lower tee
connect tee: em0: right upper
mkpeer tee: one2many left2right many0
name tee:left2right one2many
connect tee: one2many: right2left many1
mkpeer one2many: netflow one iface0
name one2many:one netflow
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 2 узла: tee - netflow
При этом делается 1 операция коприования и 1 перенаправления данных.
При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Оценка производителности графов Netgraph. На примере возможных схем анализа трафика, средствами ng_netflow.
В данном документе приведена простейшая методика оценки производительности графов Netgraph на примерах "сбора" трафика, проходящего в обоих направлениях, через интерфейс. Большая часть схем представляет лишь теоретичекие изыскания и не испытывалась на практике. Для анализа схем используются примитивные педставления о завимости производительности системы от количества узлов в графе. Для упрощения, при анализе не учитывается внутреннее устройство подсистемы Netgraph и отдельныхузлов.
Условные обозначения:
Длина графа - количество узлов, через которые проходит каждый пакет, по пути через netgraph. Для нивелирования схем узел em0: учитываться не будет. Предполагается, что чем длиннее граф, тем больше ресурсов запрачивается на прохождение каждого пакета.
Количество опреций копирования и перенаправления данных - показывает количество соответствующих опрераций затрачиваемых при прохождении через граф. Чем больше опрераций копирования и перенаправления, тем тем больше ресурсов запрачивается при прохождении через граф. Однако, перенаправление менее ресурсоемко в стравнении с копированием. Для упрощения, внутренне устройство узлов, рассматриватся не будет. Копирование лишь подразумевает, что после прохождения узла создается 2 и более копии данных. Перенаправление - обозначает, лишь то, что количество экземляров данных остается прежним.
Узел ng_netflow имеет 3 типа хуков: ifaceX, outX, export При прохождении пакета в направлении ifaceX - outX, анализируются заголовки пакета. Иформация о пакете заносится функцией hash_insert() в hash-таблицу. При достижении определенных условий функция export_send() формирует пакт netflow и отравляет в хук export.
Однако, при нормальных условиях, количество пакетов отправляемых в хук export значительно меньше количества пакетов, проходящих через узел в направлении ifaceX - outX. Таким образом, вкладом export_send() можно пренебречь. Можно считать, что производится лишь опрерация перенаправления.
При прохождении пакета в направлении outX - ifaceX, данные сразу перенаправляются в хук ifaceX.
Таким образом, при прохождении прафика через узел ng_netflow производится 0 операций коприования 1 операция перенаправления данных.
Узел ng_one2many может работать в 2-х режимах: XMIT_ALL - пакет приходящий на хук one перенаправляется в один из хуков many, в остальные доставляется копия.
XMIT_ROUNDROBIN - выбор хука many производится последовательным перебором всех хуков manyX. Таким образом, в этом случае делается лишь одна опрерация перенаправления.XMIT_ROUNDROBIN является поведением по умолчанию.
Пакеты, приходящие на любой из хуков manyX, в обоих случаях перенаправляются в хук one.
Пакеты приходящие на любой из хуков узла ng_hub перенаправляются в один из хуков, в остальные доставляется копия.
Длина графа при движении от em0:lower к em0:upper составляет 3 узла: tee - one2many - netflowПри этом делается 1 операция коприования и 2 перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 1:
ngctl -f- <<-SEQ
mkpeer em0: tee lower left
name em0:lower tee
connect tee: em0: right upper
mkpeer tee: one2many left2right many0
name tee:left2right one2many
connect tee: one2many: right2left many1
mkpeer one2many: netflow one iface0
name one2many:one netflow
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 2 узла: tee - netflowПри этом делается 1 операция коприования и 1 перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 2:
ngctl -f- <<-SEQ mkpeer em0: tee lower left name em0:lower tee connect tee: em0: right upper
mkpeer tee: netflow left2right iface0 name tee:left2right netflow connect tee: netflow: right2left iface1
mkpeer netflow: ksocket export inet/dgram/udp name netflow:export ksocket msg ksocket: connect inet/10.0.0.1:4444 SEQ
Длина графа при движении от em0:lower к em0:upper составляет 3 узла: split0 - netflow - split1При этом делается 3 операции перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 3:
ngctl -f- <<-SEQ
mkpeer em0: split lower mixed
name em0:lower splitlow
mkpeer split0: netflow out iface0
name split0:iface0 netflow
connect netflow: split0: out1 in
mkpeer netflow: split iface1 out
name netflow:out split1
connect split1: netflow: in out0
connect split1: em0: mixed upper
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 2 узла: hub - netflowПри этом делается 1 операция коприования и 1 перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 4:
ngctl -f- <<-SEQ
mkpeer em0: hub lower hook0
name em0:lower hub
connect hub: em0: hook1 upper
mkpeer hub: netflow hook2 iface0
name hub:hook2 netflow
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 2 узла: netflow0 - netflow1При этом делается 2 операции перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 5:
ngctl -f- <<-SEQ
mkpeer em0: netflow lower iface0
name em0:lower netflow0
mkpeer netflow0: netflow out0 out0
name netflow0:out0 netflow1
connect netflow1: em0: iface0 upper
mkpeer netflow0: one2many export many1
name netflow0:export one2many
connect netflow1: one2many: export many0
mkpeer one2many: ksocket one inet/dgram/udp
name one2many:one ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 3 узла: netflow - hub - netflowПри этом делается 3 операции перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 6:
ngctl -f- <<-SEQ
mkpeer em0: netflow lower iface0
name em0:lower netflow
mkpeer netflow: hub out0 hook0
name netflow:out0 hub
connect hub: netflow: hook1 out1
connect netflow: em0: iface1 upper
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 2 узла: netflow - netflowПри этом делается 2 операции перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 7:
ngctl -f- <<-SEQ
mkpeer em0: netflow lower iface0
name em0:lower netflow
connect netflow: em0: iface1 upper
connect netflow: netflow: out0 out1
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Приведенный метод анализа позволяет простыми средствами оценить ресурсоемкость графа Netgraph. Исходя из изложенных соображений
Схемы 2 и 4 равнозначны. Схемы 3 и 6 равнозначны. Схемы 5 и 7 равнозначны.
Схема 1 должна быть наименее произодительной. Схемы 5 и 7 должны быть наиболее произодительными.
Copyright © 2008, Евгений Мычло Разрешается копирование материалов статьи с обязательным указанием ссылки на оригинал. В случае обнаружения неточностей, ошибок и опечаток в данной публикации, просьба сообшить мне по адресу myc A barev.net
Длина графа при движении от em0:lower к em0:upper составляет 3 узла: split0 - netflow - split1 При этом делается 3 операции перенаправления данных.
При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Оценка производителности графов Netgraph. На примере возможных схем анализа трафика, средствами ng_netflow.
В данном документе приведена простейшая методика оценки производительности графов Netgraph на примерах "сбора" трафика, проходящего в обоих направлениях, через интерфейс. Большая часть схем представляет лишь теоретичекие изыскания и не испытывалась на практике. Для анализа схем используются примитивные педставления о завимости производительности системы от количества узлов в графе. Для упрощения, при анализе не учитывается внутреннее устройство подсистемы Netgraph и отдельныхузлов.
Условные обозначения:
Длина графа - количество узлов, через которые проходит каждый пакет, по пути через netgraph. Для нивелирования схем узел em0: учитываться не будет. Предполагается, что чем длиннее граф, тем больше ресурсов запрачивается на прохождение каждого пакета.
Количество опреций копирования и перенаправления данных - показывает количество соответствующих опрераций затрачиваемых при прохождении через граф. Чем больше опрераций копирования и перенаправления, тем тем больше ресурсов запрачивается при прохождении через граф. Однако, перенаправление менее ресурсоемко в стравнении с копированием. Для упрощения, внутренне устройство узлов, рассматриватся не будет. Копирование лишь подразумевает, что после прохождения узла создается 2 и более копии данных. Перенаправление - обозначает, лишь то, что количество экземляров данных остается прежним.
Узел ng_netflow имеет 3 типа хуков: ifaceX, outX, export При прохождении пакета в направлении ifaceX - outX, анализируются заголовки пакета. Иформация о пакете заносится функцией hash_insert() в hash-таблицу. При достижении определенных условий функция export_send() формирует пакт netflow и отравляет в хук export.
Однако, при нормальных условиях, количество пакетов отправляемых в хук export значительно меньше количества пакетов, проходящих через узел в направлении ifaceX - outX. Таким образом, вкладом export_send() можно пренебречь. Можно считать, что производится лишь опрерация перенаправления.
При прохождении пакета в направлении outX - ifaceX, данные сразу перенаправляются в хук ifaceX.
Таким образом, при прохождении прафика через узел ng_netflow производится 0 операций коприования 1 операция перенаправления данных.
Узел ng_one2many может работать в 2-х режимах: XMIT_ALL - пакет приходящий на хук one перенаправляется в один из хуков many, в остальные доставляется копия.
XMIT_ROUNDROBIN - выбор хука many производится последовательным перебором всех хуков manyX. Таким образом, в этом случае делается лишь одна опрерация перенаправления.XMIT_ROUNDROBIN является поведением по умолчанию.
Пакеты, приходящие на любой из хуков manyX, в обоих случаях перенаправляются в хук one.
Пакеты приходящие на любой из хуков узла ng_hub перенаправляются в один из хуков, в остальные доставляется копия.
Длина графа при движении от em0:lower к em0:upper составляет 3 узла: tee - one2many - netflowПри этом делается 1 операция коприования и 2 перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 1:
ngctl -f- <<-SEQ
mkpeer em0: tee lower left
name em0:lower tee
connect tee: em0: right upper
mkpeer tee: one2many left2right many0
name tee:left2right one2many
connect tee: one2many: right2left many1
mkpeer one2many: netflow one iface0
name one2many:one netflow
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 2 узла: tee - netflowПри этом делается 1 операция коприования и 1 перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 2:
ngctl -f- <<-SEQ
mkpeer em0: tee lower left
name em0:lower tee
connect tee: em0: right upper
mkpeer tee: netflow left2right iface0
name tee:left2right netflow
connect tee: netflow: right2left iface1
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 3 узла: split0 - netflow - split1При этом делается 3 операции перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 3:
ngctl -f- <<-SEQ
mkpeer em0: split lower mixed
name em0:lower splitlow
mkpeer split0: netflow out iface0
name split0:iface0 netflow
connect netflow: split0: out1 in
mkpeer netflow: split iface1 out
name netflow:out split1
connect split1: netflow: in out0
connect split1: em0: mixed upper
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 2 узла: hub - netflow
При этом делается 1 операция коприования и 1 перенаправления данных.
При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 4:
ngctl -f- <<-SEQ mkpeer em0: hub lower hook0 name em0:lower hub connect hub: em0: hook1 upper
mkpeer hub: netflow hook2 iface0 name hub:hook2 netflow
mkpeer netflow: ksocket export inet/dgram/udp name netflow:export ksocket msg ksocket: connect inet/10.0.0.1:4444 SEQ
Длина графа при движении от em0:lower к em0:upper составляет 2 узла: netflow0 - netflow1
При этом делается 2 операции перенаправления данных.
При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 5:
ngctl -f- <<-SEQ mkpeer em0: netflow lower iface0 name em0:lower netflow0
mkpeer netflow0: netflow out0 out0 name netflow0:out0 netflow1
connect netflow1: em0: iface0 upper mkpeer netflow0: one2many export many1 name netflow0:export one2many connect netflow1: one2many: export many0
mkpeer one2many: ksocket one inet/dgram/udp name one2many:one ksocket msg ksocket: connect inet/10.0.0.1:4444 SEQ
Длина графа при движении от em0:lower к em0:upper составляет 3 узла: netflow - hub - netflow
При этом делается 3 операции перенаправления данных.
При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 6:
ngctl -f- <<-SEQ mkpeer em0: netflow lower iface0 name em0:lower netflow
mkpeer netflow: hub out0 hook0 name netflow:out0 hub
connect hub: netflow: hook1 out1 connect netflow: em0: iface1 upper
mkpeer netflow: ksocket export inet/dgram/udp name netflow:export ksocket msg ksocket: connect inet/10.0.0.1:4444 SEQ
Длина графа при движении от em0:lower к em0:upper составляет 2 узла: netflow - netflow
При этом делается 2 операции перенаправления данных.
При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 7:
ngctl -f- <<-SEQ mkpeer em0: netflow lower iface0 name em0:lower netflow connect netflow: em0: iface1 upper
connect netflow: netflow: out0 out1
mkpeer netflow: ksocket export inet/dgram/udp name netflow:export ksocket msg ksocket: connect inet/10.0.0.1:4444 SEQ
Приведенный метод анализа позволяет простыми средствами оценить ресурсоемкость графа Netgraph. Исходя из изложенных соображений
Схемы 2 и 4 равнозначны. Схемы 3 и 6 равнозначны. Схемы 5 и 7 равнозначны.
Схема 1 должна быть наименее произодительной. Схемы 5 и 7 должны быть наиболее произодительными.
Длина графа при движении от em0:lower к em0:upper составляет 2 узла: hub - netflowПри этом делается 1 операция коприования и 1 перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 4:
ngctl -f- <<-SEQ
mkpeer em0: hub lower hook0
name em0:lower hub
connect hub: em0: hook1 upper
mkpeer hub: netflow hook2 iface0
name hub:hook2 netflow
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 2 узла: netflow0 - netflow1При этом делается 2 операции перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 5:
ngctl -f- <<-SEQ
mkpeer em0: netflow lower iface0
name em0:lower netflow0
mkpeer netflow0: netflow out0 out0
name netflow0:out0 netflow1
connect netflow1: em0: iface0 upper
mkpeer netflow0: one2many export many1
name netflow0:export one2many
connect netflow1: one2many: export many0
mkpeer one2many: ksocket one inet/dgram/udp
name one2many:one ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 3 узла: netflow - hub - netflowПри этом делается 3 операции перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 6:
ngctl -f- <<-SEQ
mkpeer em0: netflow lower iface0
name em0:lower netflow
mkpeer netflow: hub out0 hook0
name netflow:out0 hub
connect hub: netflow: hook1 out1
connect netflow: em0: iface1 upper
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 2 узла: netflow - netflowПри этом делается 2 операции перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 7:
ngctl -f- <<-SEQ
mkpeer em0: netflow lower iface0
name em0:lower netflow
connect netflow: em0: iface1 upper
connect netflow: netflow: out0 out1
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Приведенный метод анализа позволяет простыми средствами оценить ресурсоемкость графа Netgraph. Исходя из изложенных соображений
Схемы 2 и 4 равнозначны. Схемы 3 и 6 равнозначны. Схемы 5 и 7 равнозначны.
Схема 1 должна быть наименее произодительной. Схемы 5 и 7 должны быть наиболее произодительными.
Copyright © 2008, Евгений Мычло Разрешается копирование материалов статьи с обязательным указанием ссылки на оригинал. В случае обнаружения неточностей, ошибок и опечаток в данной публикации, просьба сообшить мне по адресу myc A barev.net
Длина графа при движении от em0:lower к em0:upper составляет 2 узла: tee - netflowПри этом делается 1 операция коприования и 1 перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 2:
ngctl -f- <<-SEQ
mkpeer em0: tee lower left
name em0:lower tee
connect tee: em0: right upper
mkpeer tee: netflow left2right iface0
name tee:left2right netflow
connect tee: netflow: right2left iface1
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 3 узла: split0 - netflow - split1При этом делается 3 операции перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 3:
ngctl -f- <<-SEQ
mkpeer em0: split lower mixed
name em0:lower splitlow
mkpeer split0: netflow out iface0
name split0:iface0 netflow
connect netflow: split0: out1 in
mkpeer netflow: split iface1 out
name netflow:out split1
connect split1: netflow: in out0
connect split1: em0: mixed upper
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 2 узла: hub - netflowПри этом делается 1 операция коприования и 1 перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 4:
ngctl -f- <<-SEQ
mkpeer em0: hub lower hook0
name em0:lower hub
connect hub: em0: hook1 upper
mkpeer hub: netflow hook2 iface0
name hub:hook2 netflow
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 2 узла: netflow0 - netflow1При этом делается 2 операции перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 5:
ngctl -f- <<-SEQ
mkpeer em0: netflow lower iface0
name em0:lower netflow0
mkpeer netflow0: netflow out0 out0
name netflow0:out0 netflow1
connect netflow1: em0: iface0 upper
mkpeer netflow0: one2many export many1
name netflow0:export one2many
connect netflow1: one2many: export many0
mkpeer one2many: ksocket one inet/dgram/udp
name one2many:one ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 3 узла: netflow - hub - netflowПри этом делается 3 операции перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 6:
ngctl -f- <<-SEQ
mkpeer em0: netflow lower iface0
name em0:lower netflow
mkpeer netflow: hub out0 hook0
name netflow:out0 hub
connect hub: netflow: hook1 out1
connect netflow: em0: iface1 upper
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Длина графа при движении от em0:lower к em0:upper составляет 2 узла: netflow - netflowПри этом делается 2 операции перенаправления данных. При движении в обратном направлении длина графа и количество операций коприования и перенаправления не изменяется.
Код к схеме 7:
ngctl -f- <<-SEQ
mkpeer em0: netflow lower iface0
name em0:lower netflow
connect netflow: em0: iface1 upper
connect netflow: netflow: out0 out1
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/10.0.0.1:4444
SEQ
Приведенный метод анализа позволяет простыми средствами оценить ресурсоемкость графа Netgraph. Исходя из изложенных соображений
Схемы 2 и 4 равнозначны. Схемы 3 и 6 равнозначны. Схемы 5 и 7 равнозначны.
Схема 1 должна быть наименее произодительной. Схемы 5 и 7 должны быть наиболее произодительными.
Copyright © 2008, Евгений Мычло Разрешается копирование материалов статьи
|
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем. |
|
Автор: hellevil | 13-03-2009, 18:43 | Просмотров: 22 487 |
|
|
|
|