Пакеты прикладного уровня, родительский адрес, RPL Contiki-ng
Я знаю ответ на этот вопрос теоретически, но я хочу знать, где получить доступ к информации на уровне кода. Итак, скажем, в примере rpl-udp, когда клиент отправляет сообщение на сервер, теоретически, поскольку мы используем rpl для маршрутизации, сообщение будет проходить через родителя клиента, вплоть до дерева DODAG, пока не достигнет сервера. Что я хочу сделать, чтобы отследить этот пакет уровня приложения, когда он поднимается по дереву, все узлы, которые ретранслируют этот пакет, я хочу знать, когда они получают пакет и когда они направляют его вверх по дереву.
Где я могу найти эту информацию в коде contiki-ng? Я предполагаю, что его нет в заголовочных файлах RPL, но я не уверен.
Любая помощь будет здорово. Спасибо.
1 ответ
RPL берет на себя управление маршрутом. Фактическая пересылка пакетов отделена от протоколов маршрутизации, это общий шаблон проектирования во всех операционных системах.
В Contiki-NG код переадресации находится в
os/net/ipv6/
. Основной файл
tcpip.c
. Структуры данных маршрута и связанные с ними функции определены в
uip-ds6-route.c
а также
uip-ds6-route.h
.
В Contiki-NG также есть опция исходной маршрутизации, и в этом случае список nexthops хранится непосредственно в IP-заголовках пакета, а обычная таблица маршрутизации IPv6 отсутствует. Исходная таблица маршрутов (присутствует только на корневом узле сети) определяется в
uip-sr.c
.