Когда 2 модема находятся в воде, они могут общаться друг с другом, используя свой PHYSICAL сервисный агент (часто называемый phy
). Агенты более высокого уровня, такие как uwlink
, затем используют phy
для обеспечения надежности и т. Д.
В моделируемой среде ФИЗИЧЕСКАЯ услуга предоставляется агентом HalfDuplexModem
(также называемым phy
). Этот агент может общаться с HalfDuplexModem
агентами на других имитируемых узлах так же, как модемы под водой общаются друг с другом. Агенты более высокого уровня, такие как uwlink
, будут использовать этот phy
для связи, и приложение не заметит разницы.
Однако HalfDuplexModem
в моделируемой среде не может напрямую передать пакетк реальному модему в воде, или получите пакет от него. Узлы в моделируемой среде могут общаться только друг с другом, а узлы в воде могут общаться только друг с другом. Таким образом, вы можете представить себе симулированный мир как одну подсеть, а реальный мир - как другую подсеть, даже если оба они могут быть частью одного Unet. Чтобы соединить подсети вместе, вам нужен узел шлюза, который передает пакеты между подсетями.
Чтобы сделать вещи более конкретными, скажем, узлы B и C находятся в водяная подсеть , и узел Aнаходится в подсети моделирования . Чтобы узел A мог общаться с узлами B и C, вам необходим хотя бы один из узлов B или C, который также должен находиться в подсети моделирования. Чтобы избежать многошаговой маршрутизации, скажем, мы предпочитаем, чтобы узлы B и C присутствовали в обеих подсетях. Способ сделать это - создать симуляцию с узлами A, B и C. Затем на узлах B и C добавьте новый phy2
PHYSICAL агент, который будет использоваться новым агентом службы uwlink2
LINK. Агент phy2
будет прокси для реального модема, посылая любые TxFrameReq
или DatagramReq
модему через UnetSocket
и передавая RxFrameNtf
(и другие уведомления) от модема. Затем настройте router
на узлах B и C для маршрутизации пакетов на узлы B и C через uwlink2
и на узел A через uwlink
.
Настройка агента на узлах B и C будет выглядеть как-тонапример:
|--------------------- Simulator -------------------------------| |--- Modem ----|
[DatagramReq] --> router -A--> uwlink --> phy (HalfDuplexModem)
\----BC-> uwlink2 --> phy2 --> UnetSocket --> phy (on modem)
с общей конфигурацией сети:
A -sim--- B ---(UnetSocket)--- modem B --\
\ acoustic
\-sim-- C ---(UnetSocket)--- modem C --/
Единственный агент, который вам нужно написать, это прокси phy2
. Писать довольно просто, так как вам нужно отправить все сообщения на него через сокет к модему и отправить все уведомления из сокета обратно в тему уведомлений для прокси-агента.