sealinx software organization set of cooperative processes rather than a monolithic process three...

17
SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: Core Module Modem Driver Protocol Modules 1 AquaSeNT OFDM Modems Protocol Modules Core Module Modem Driver SeaLinx

Upload: katherine-simpson

Post on 30-Dec-2015

221 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

SeaLinx Software Organization

• Set of cooperative processes rather than a monolithic process• Three processes:

– Core Module– Modem Driver– Protocol Modules

1

AquaSeNT OFDM Modems

AquaSeNT OFDM Modems

ProtocolModules

CoreModule

ModemDriver

SeaLinx

Page 2: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

SeaLinx Features

• FEATURE #1: Supports simultaneous protocol bundles to support various applications running on a single node

• FEATURE #2: Provides a uniform method for cross-layer communication

• FEATURE #3: Runs protocols as separate processes

2

Page 3: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

SeaLinx Features

• FEATURE #1: Supports simultaneous protocol bundles to support various applications running on a single node

• FEATURE #2: Provides a uniform method for cross-layer communication

• FEATURE #3: Runs protocols as separate processes

3

Data SensingData

SensingRemoteControlRemoteControl

Page 4: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

SeaLinx Features

• FEATURE #1: Supports simultaneous protocol bundles to support various applications running on a single node

• FEATURE #2: Provides a uniform method for cross-layer communication

• FEATURE #3: Runs protocols as separate processes

4

AquaSeNT OFDM Modems

AquaSeNT OFDM Modems

ProtocolProcesses

Page 5: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

SeaLinx Features

• FEATURE #1: Supports simultaneous protocol bundles to support various applications running on a single node

• FEATURE #2: Provides a uniform method for cross-layer communication

• FEATURE #3: Runs protocols as separate processes

5

AquaSeNT OFDM Modems

AquaSeNT OFDM Modems

ProtocolModule

ProtocolModule

ProtocolModule

ProtocolModule

Page 6: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

SeaLinx Protocol Organization

• Layer-based organization

• Cross-layer communication capability via core module

6

AquaSeNT OFDM Modems

AquaSeNT OFDM Modems

Page 7: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

SeaLinx Software Processes

7

Core Component Physical Layer MAC Layer Network Layer Transport Layer Application Layer

Dispatch data among layers by waiting for connections from protocol stack layers

Interprets data from, and sends data to, acoustic modems; an OFDM driver is proved here

Provide addressing and channel access control mechanism for node communication within a multiple access network that uses a shared medium; a dummy MAC and UW-ALHOHA are provided here

Provide functions and procedures to transfer datagram between nodes in same network; a dummy network layer, as we all as static and dynamic routing layer are provided here

Provide reliable transmission of datagrams between nodes in same network; a dummy transport layers is provided here

Interacts with software application that implements a communication component; a Possion traffic generator is included here

sealinx -core -p <core port>(Uses implicit settings.ini file)

sealinx-ofdm-cmd -p <core port>(Uses implicit config_ser.cfg and config_ofdm.cfg files)

sealinx-mac -i <protocol ID> -p <core port>------------------------------------------sealinx-uwaloha –i <protocol ID> -p <core port> -c <aloha config file> -t <arp table file>

sealinx-net-i <protocol ID> -p <core port> -m <mac protocol ID>---------------------------------------------sealinx-sroute-i <protocol ID> -p <core port> -m <mac protocol ID> -c <routing table file>---------------------------------------------sealinx-droute-i <protocol ID> -p <core port> -m <mac protocol ID> -c <dynamic routing config>

sealinx-tra-i <protocol ID> -p <core port>-m <mac protocol ID> -n <net protocol ID>

sealinx-tx-poi-i <app ID> -p <core port> -m <mac protocol ID> -n <net protocol ID>-t <transport protocol ID>-l <packet length> -r <traffic route>-d <destination node>

<core port> = port that core is listening on <core port> = port that core is listening on

<protocol ID> = protocol identifier, which will be used to fill in MAC layer type field<core port> = port that core is listening on<aloha config file> = configuration for aloha<arp table file> = address resolution protocol to map MAC address with network addresses

<protocol ID> = protocol identifier<core port> = port core is listening on<mac protocol ID> = identifier of underlying MAC protocol<routing table file> = file listing routes in network<dynamic routing config> = configuration file for dynamic routing

<protocol ID> = protocol identifier<core port> = port core is listening on<mac protocol ID> = identifier of underlying MAC protocol<net protocol ID> = identifier of underlying network protocol

<app ID> = application identifier, which will be filled in service type field<core port> = port core is listening on<mac protocol ID> = identifier of underlying MAC protocol<net protocol ID> = identifier of underlying network protocol<transport protocol ID> = identifier of underlying transport protocol<packet length> = size of sent packet<traffic route> = sending rate (bps)<destination node> = network address of destination

settings.ini-----------------------------------[GeneralSettings]MacAddress=1NetworkAddress=1PacketSize=1024

config_ser: serial settings-----------------------------------------/dev/tty0 #port38400 #baud rate

<aloha config file>---------------------------------------------------------------UWALOHA_SOCK_TIMEOUT : 10UWALOHA_ACK_TIMEOUT : 25UWALOHA_RETX_MAX : 3UWALOHA_BROADCAST_ADD : 99AQUA_MAC_LOG : aloha.log

<routing table file>------------------------------------1 : 5 : 6 #source : relay : destination2 : 4 : 3 #source : relay : destination

1) MacAddress = MAC address of node2) NetworkAddress = network address of node3) PacketSize = max packet size (in bytes) transmitted between layers

1) port = serial port being used2) baud rate = baud rate to use for serial communication

1) UWALOHA_SOCK_TIMEOUT = timeout length for reading from core socket2) UWALOHA_ACK_TIMEOUT = acknowledgment timeout3) UWALOHA_RETX_MAX = maximum number of retransmissions4) UWALOHA_BROADCAST_ADD = broadcast address (to be deprecated soon)5) AQUA_MAC_LOG = name of log file

<dynamic routing config>---------------------------------------------[Protocol Parameters]StableHelloPeriod=180UnstableHelloPeriod=20NumRoutingEntries=10EntryTimeout=190MinimumUpdateWait=10MaximumUpdateWiat=30

config_ofdm.cfg: specifies modem settings------------------------------------------OFDM_ACOUSTIC_RATE: 2500OFDM_MTU: 1280OFDM_IFGT: 110

<arp table file>--------------------------------------------1 : 1 #mac : network2 : 2 #mac : network3 : 3 #max : network

1) StableHelloPeriod = frequency of sending HELLO messages when routing table is stable2) UnstableHelloPeriod = frequency of sending HELLO messages when table is unstable3) NumRoutingEntries = max number of routes, which is at least the number of nodes4) EntryTimeout = validity interval of an updated routing entry5) MinimumUpdateWait = min time a node needs to wait before broadcasting table change6) MaximumUpdateWait = max time a node needs to wait before broadcasting table change

1) OFDM_ACOUSTIC_RATE = sending rate (bps)2) OFDM_MTU = maximum transmission unit (units)3) OFDM_IFGT = inter-frame guard time (ms)

Core Modem Protocol

Page 8: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

Core Component

• Purpose: Dispatch data among layers by waiting for connections from protocol stack layers

• Execution: sealinx-core –p <core port>

8

sealinx-core<core port>[GeneralSettings]MacAddress=1NetworkAddress=1PacketSize=1024

Example of settings.ini

settings.inisettings.ini

Page 9: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

Physical Layer

9

• Purpose: Interprets data from, and sends data to, acoustic modems; an OFDM driver is provided here

• Exectution: sealinx-ofdm-cmd –p <core port>

sealinx-ofdm-cmd<core port> /dev/tty0 #port38400 #baud rate

Example of config_ser.cfg

OFDM_ACOUSTIC_RATE: 2500OFDM_MTU: 1280OFDM_IFGT: 110

Example of config_ofdm.cfgconfig_ser.cfgconfig_ser.cfg config_ofdm.cfgconfig_ofdm.cfg

Page 10: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

Physical Layer Configuration File

1) OFDM_ACOUSTIC_RATE = sending rate (bps)2) OFDM_MTU = maximum transmission unit (units)3) OFDM_IFGT = inter-frame guard time (ms)

10

/dev/tty0 #port38400 #baud rate

Example of config_ser.cfg

OFDM_ACOUSTIC_RATE: 2500OFDM_MTU: 1280OFDM_IFGT: 110

Example of config_ofdm.cfg

Page 11: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

MAC Layer

11

• Purpose: Provide addressing and channel access control mechanism for node communication within a multiple access network that uses a shared medium; a dummy MAC and UW-ALHOHA are provided here

• Execution: sealinx-mac –i <protocol ID> -p <core port>

sealinx-mac<protocol ID>

<core port>

Page 12: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

MAC Layer

12

• Execution: sealinx-uwaloha –i <protocol ID> -p <core port> -c <aloha config file> -t <arp table file>

sealinx-uw-aloha<protocol ID>

<core port>

UWALOHA_SOCK_TIMEOUT : 10UWALOHA_ACK_TIMEOUT : 25UWALOHA_RETX_MAX : 3UWALOHA_BROADCAST_ADD : 99AQUA_MAC_LOG : aloha.log

Example of <aloha config file>

1 : 1 #mac : network2 : 2 #mac : network3 : 3 #max : network

Example of <arp table file><aloha config file><aloha config file> <arp table file><arp table file>

Page 13: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

MAC Layer UW-Aloha Configuration File

1) UWALOHA_SOCK_TIMEOUT = timeout length for reading from core socket2) UWALOHA_ACK_TIMEOUT = acknowledgment timeout3) UWALOHA_RETX_MAX = maximum number of retransmissions4) UWALOHA_BROADCAST_ADD = broadcast address (to be deprecated)5) AQUA_MAC_LOG = name of log file

13

UWALOHA_SOCK_TIMEOUT : 10UWALOHA_ACK_TIMEOUT : 25UWALOHA_RETX_MAX : 3UWALOHA_BROADCAST_ADD : 99AQUA_MAC_LOG : aloha.log

Example of <aloha config file>

1 : 1 #mac : network2 : 2 #mac : network3 : 3 #max : network

Example of <arp table file>

Page 14: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

UW-Aloha Program

14

UWALOHA_SOCK_TIMEOUT : 10UWALOHA_ACK_TIMEOUT : 25UWALOHA_RETX_MAX : 3UWALOHA_BROADCAST_ADD : 99AQUA_MAC_LOG : aloha.log

Wait Time > ACK_TIMEOUT

Waiting for acknowledgment?

Num retx > RETX_MAX

Transmit(again)

Drop packet, prepare for new packet

Yes

Yes

YesNo

Listen from Core for acknowledgment or new packet

No

No

Page 15: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

Network Layer

15

• Purpose: Provide functions and procedures to transfer datagram between nodes in same network; a dummy network layer, as we all as static and dynamic routing layers are provided here

• Execution: sealinx-net -i <protocol ID> -p <core port> -m <mac protocol ID>

• Execution: sealinx-sroute -i <protocol ID> -p <core port> -m <mac protocol ID> -c <routing table file>

• Execution: sealinx-droute -i <protocol ID> -p <core port> -m <mac protocol ID> -c <dynamic routing config>

Page 16: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

Transport Layer

16

• Purpose: Provide reliable transmission of datagrams between nodes in same network; a dummy transport layer is provided here

• Execution: sealinx-tra -i <protocol ID> -p <core port> -m <mac protocol ID> -n <net protocol ID>

Page 17: SeaLinx Software Organization Set of cooperative processes rather than a monolithic process Three processes: –Core Module –Modem Driver –Protocol Modules

Application Layer

17

• Purpose: Interacts with software application that implements a communication component; a Poisson traffic generator is included here

• Execution: sealinx-tx-poi -i <app ID> -p <core port> -m <mac protocol ID> -n <net protocol ID> -t <transport protocol ID> -l <packet length> -r <traffic route> -d <destination node>