реклама на сайте
подробности

 
 
> lwIP при наличии двух каналов связи, установка приоритета, есть LAN и модем(ppp): использовать LAN, если он подключен
Ruslan1
сообщение Dec 27 2017, 11:26
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Здравствуйте!
В устройстве есть два вида соединения:
1) LAN (Ethernet)
2) Modem (ppp).
все это работает через lwIP & FreeRTOS на STM32F4

Вопрос: как красиво (просто, надежно) сделать автоматический переход на приоритетный канал общения?

Реальная ситуация: Прибор общается через модем, но ему подключили LAN. Прибор должен начать передавать данные в LAN и не использовать ppp соединение через модем. Если LAN отключили- то опять перейти на модем/ppp.

Можно ли в lwIP установить приоритет канала передачи?
Или это нужно делать более дубово, например, просто рвать ppp соединение и lwIP будет использовать единственный оставшийся канал для передачи (LAN)? ну и обратно, восстанавливать ppp если LAN отключили .
Хорошо, если просто можно указать lwIP какой из каналов связи использовать для конкретного устанавливаемого TCP соединения.
Например: как выполнить ping через указанное соединение (LAN или модем), если они оба подключены?
Подозреваю что RTFM, но вот какую именно часть M мне нужно R....
Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Dec 27 2017, 14:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Ruslan1 @ Dec 27 2017, 14:26) *
Вопрос: как красиво (просто, надежно) сделать автоматический переход на приоритетный канал общения?

Там есть функция netif_set_default(), она как раз для этого. ЕМНИП, код PPP вызывает её, когда устанавливается соединение. Нужно сделать наоборот: закомментировать вызов netif_set_default() из PPP и, видимо, вызывать его для eth0 (не знаю, нужно ли это делать каждый раз или достаточно один раз при запуске).
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Dec 29 2017, 16:24
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(scifi @ Dec 27 2017, 16:23) *
Там есть функция netif_set_default(), она как раз для этого.

Спасибо, значит только через нее.
Собственно, она сейчас и используется для полного переключения всего трафика модем/езернет.
То есть всегда использую текущий дефолтный интерфейс.
Но вот как использовать недефолтный?
Как сказать lwip, что я хочу чтобы это конкретное соединение установилось именно через ethernet, а не через дефолтовый канал?
Согласно описанию того же netif_set_default(), где-то существует возможность задать "specific route", но вот что-то я совсем туплю, не могу понять как это сделать:
Цитата
Set a network interface as the default network interface (used to output all packets for which no specific route is found
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 29 2017, 17:17
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Ruslan1 @ Dec 29 2017, 19:24) *
Согласно описанию того же netif_set_default(), где-то существует возможность задать "specific route", но вот что-то я совсем туплю, не могу понять как это сделать

Здрассте. "Specific route" - это когда адресат входит в диапазон адресов какого-то интерфейса (типа 192.168.0.x, как часто бывает). Всё остальное идёт в default interface, потому что куда ещё? У взрослых стеков есть статические маршруты, но в lwip этого нет, насколько я знаю.
Кстати, приделать сбоку обработку доп. маршрутов должно быть совсем не сложно. UPD: заглянул в lwip-2, там есть LWIP_HOOK_IP4_ROUTE() как раз для этого.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 03:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.02191 секунд с 7
ELECTRONIX ©2004-2016