Forum Replies Created
-
AuthorPosts
-
1) Оригинальная
2) На ОС 64 бит используется 64 битная сборка Ethernet Bridge
3) Брал с гитхаба (файл у меня называется “ethernet_bridge-master.zip”) 16.10.2017 числа.
4) загрузка ЦП (1-3 %) и сети (0,25 %).До переключения IPEnableRouter был равен 1.
Здравствуйте! Есть вопрос по bandwidth при организации моста через ваш программу Ethernet Bridge. Использую такую тестовую систему из 2 компов .
Тестировал скорость моста через утилиту iperf3:
1) Сервер на адресе 192.168.хх.113, клиент забинден на адресе 192.168.хх.3
– трафик сервер <– клиент 548-612 Мбит/сек
– трафик сервер –> клиент 18-90 Мбит/сек
2) Сервер на адресе 192.168.хх.3, клиент забинден на адресе 192.168.хх.113
– трафик сервер <– клиент 471 Мбит/сек
– трафик сервер –> клиент 462 Мбит/сек
3) Сервер на адресе 192.168.хх.113, клиент забинден на адресе 192.168.хх.36
– трафик сервер <– клиент 600 Мбит/сек
– трафик сервер –> клиент 2,5 Мбит/сек
4) Сервер на адресе 192.168.хх.36, клиент забинден на адресе 192.168.хх.113
– трафик сервер <– клиент 2,5 Мбит/сек
– трафик сервер –> клиент 485 Мбит/секБеспокоят ситуации 3 и 4: почему скорость трафика от хх.113 до хх.36 такая низкая, всего 2,5 Мбит/сек, а в обратную сторону на 2 порядка больше? Также интересно, почему ситуации 1 и 2 не симметричные? В чем может быть причина этих феноменов?
1) Не знаю почему, но если установить событие через SetHwPacketFilterEvent, то мост перестает работать или работает так медленно, что связь нестабильная (не знаю точно).
2) Иногда сбивается режим фильтра с NDIS_PACKET_TYPE_PROMISCUOUS на значение 0, но мост все равно работает: пинг до интернета и до локальных компьютеров идет норм.Я нашел причину такого поведения. Версия 3.2.9.1 содержит такой конструктор:
public: __thiscall CNdisApi::CNdisApi(char const *)
А тестовая версия 3.2.10.1 содержит немного другой конструктор:
public: __thiscall CNdisApi::CNdisApi(wchar_t const *)
Может для совместимости лучше использовать вариант из версии 3.2.9.1?
У меня Win7 64 bit. Я удалил предыдущую версию, установил “Windows Packet Filter 3.2.10.1 x64.msi”, потом скопировал в папку своего проекта файл “ndisapi.dll” из папки Win32/Release, вызвал ф-цию OpenFilterDriver, и проверил IsDriverLoaded. К сожалению, он вернул False. Если же я использую старую dll из файла “WinpkFilter Runtime & Tools 3.2.9.1.exe”, то IsDriverLoaded возвращает True. Что делать?
Добавьте, пожалуйста, новую ф-цию SetHwPacketFilterEvent в C-interface вашей dll.
А можно попробовать вариант (custom build) с event, который уведомлял бы об изменении режима?
Оказалось, что сбился неразборчивый режим. В чем может быть причина? Как узнать о его изменении, кроме постоянного опроса через GetHwPacketFilter?
В свою тестовую программу я внедрил реакцию на событие SetAdapterListChangeEvent. Это не помогло. Симптомы повторились, но событие не сработало (не просигнализировало). Однако перезапуск 2-х тридов, организующих мост, помог. Что еще может быть?
Значит, чтобы в моей программе, которая организует мост таким же образом, как и ваш Ethernet Bridge, нужно мониторить событие по SetAdapterListChangeEvent и по его срабатыванию пересоздавать мост, используя новые индексы интерфейсов из GetTcpipBoundAdaptersInfo?
1) я потому и выбрал ваш продукт, т.к. нет возможности написать свой драйвер
2) а вот тут я мало что понял.Относительно вашего совета у меня есть сомнения:
1) если сделать мост программным, то при падении программы вся Internet-связь прекратится. А это не допустимо, т.к. компьютер-посредник может быть установлен в организации между роутером и провайдером для записи всех SIP-разговоров организации.
2) для большего перфоманса хотелось бы в user-mode обрабатывать не весь трафик, а только незначительную часть. Для этого я использую SetPacketFilterTable.
3) мне кажется надежность и скорость моста средствами самой ОС выше, чем использование собственной программы.
Что думаете? -
AuthorPosts