Как отправить одноадресный пакет соседу в Contiki-NG?

Возможно ли в Contiki-NG отправить пользовательский пакет от узла udp-клиента к соседу, используя адрес ссылки из кеша соседа? Я ищу способ избежать отправки пакета icmpv6, потому что он идет к корню, а затем корень отправляет его в пункт назначения. Я видел, что Contiki поддерживает ячеистую топологию, поэтому должна быть возможность отправлять пакет напрямую соседу, не пересылая пакет родителю. Буду признателен за любую помощь в этом!


person phrick    schedule 17.05.2020    source источник


Ответы (1)


IPv6 имеет так называемые локальные адреса канала. Это адреса с префиксом fe80::/64. Если вы хотите отправить пакет в обход маршрутизации, вам следует использовать эти адреса. Например, если у вас есть сеть с префиксом fd00::/64 и сосед с глобальным IPv6-адресом fd00::201:1:1:1, отправьте пакет на fe80::201:1:1:1, чтобы связаться с этим соседом напрямую.

Дополнительное примечание, касающееся «Contiki включает ячеистую топологию» — если вы используете RPL Lite или RPL Classic с режимом без сохранения, все маршрутизируемые пакеты в любом случае будут проходить через корень, поскольку сетевые узлы не добавляют маршруты к родителей/детей к своим таблицам маршрутизации в этом режиме. Включите режим хранения, чтобы обеспечить прямой одноранговый обмен пакетами с использованием маршрутизации.

person kfx    schedule 18.05.2020
comment
Спасибо за ваш ответ. Я попытался скопировать локальный адрес ссылки в качестве IP-адреса и использовал uip_icmp6_send, но кажется, что он снова проходит через root. Какую функцию следует использовать для отправки с локальным адресом ссылки? - person phrick; 18.05.2020
comment
@phrick Как отправить? Адреса fe80::/64 не должны маршрутизироваться. - person kfx; 19.05.2020
comment
Хорошо, я изменил только первые байты, чтобы они соответствовали fe80, и теперь они отправляются правильно. Большое спасибо! - person phrick; 20.05.2020