Title: Wireless Token Ring Protocol UDP Implementation
1Wireless Token Ring Protocol UDP Implementation
Duke Lee, Mustafa Ergen, Jeff Ko, Ruchira Datta
2Overview
- Accomplished Project Objectives
- Protocol Design Status
- Simulation
- UDP Implementation
- Conclusion
3Accomplished Project Objectives
- Implemented Kernel Support Functions.
- Improvement of Protocol.
- Lean and flexible design.
- Improved user friendliness.
- Providing UDP user interface.
- Implementation of Simulation Platform.
- Simple Admission Control.
- Compatibility across different computer
architecture.
4Finite State Machine
5Joining
Have_Token
J_M
H_M
F_J
I_H
I_M
Monitoring
J_F
M_F
M_I
M_O
S_M
Floating
Idle
F_I
I_F
S_F
I_O
I_S
B_F
O_F
Soliciting
Offline
S_O
Beginning
S_I
6Transitions From/To Beginning
Beginning
Always
Floating
7Transitions From/To Have_Token
Idle
received normal token with greater priority
output queue is nonempty
Have_Token
done transmitting
Monitoring
token_holding expired
8States
Claim_token_timer_expires
Offline_timer_expires
Receive_Solicit_Successor
9Transitions From/To Offline
Idle
another ring not is_selfring
another ring not is_selfring
Offline
joined failed to transmit
Floating
offline expired
exceeded max token pass tries
Monitoring
token_pass expired
Soliciting
another ring not is_selfring
10Transitions From/To Floating
another ring and is_selfring
Beginning
Idle
Idle
inring expired
claim token expired
always
Offline
offline expired
Floating
Joining
Joining
contention expired
got solicit_successor decided to join
failed to join
Monitoring
another ring and is_selfring
another ring and is_selfring
Soliciting
11States
Receive_Implicit_Ack
Receive_Set_Predecessor from solicitor
Token_pass_timer_expires
Contention_timer_expires
12Transitions From/To Joining
Floating
contention expired
Floating
Joining
got solicit_successor decided to join
failed to join
Monitoring
succeeded in joining
13Transitions From/To Monitoring
Have_Token
token_holding expired
another ring not is_selfring
Joining
succeeded in joining
Offline
joined failed to transmit
received set_successor
received set_predecessor with greater priority
exceeded max token pass tries
Monitoring
token_pass expired
Idle
idle expired
Idle
received normal token w/ greater priority
output queues empty decided not to solicit
successor
received implicit ack
Floating
solicit_wait expired not is_selfring
another ring is_selfring
Soliciting
received request to join
14States
Idle_timer_expires
Inring_timer_expires (Selfring)
Receive_Set_Successor
Receive_Set_Successor _Normal
_Set_Predessor
Solicit_successor_timer_expires
Solicit_wait_timer_expires
Inring_timer_expires (Not Selfring)
Receive_from_other_ring
15Transitions From/To Soliciting
solicit_wait expired not is_selfring
Monitoring
received normal token w/ greater priority
output queues empty decided to solicit successor
received request to join
Idle
solicit_successor expired
Soliciting
solicit_wait expired is_selfring
Idle
received token of higher priority
Floating
another ring is_selfring
Offline
another ring not is_selfring
16Transitions From/To Idle
Offline
another ring not is_selfring
another ring and is_selfring
Floating
claim token expired
Floating
inring expired
received normal token with greater priority
output queue is nonempty
Have_Token
received set_successor
received set_predecessor with greater priority
Monitoring
Monitoring
Idle
idle expired
received implicit ack
received normal token w/ greater priority
output queues empty decided not to solicit
successor
solicit_successor expired
received normal token w/ greater priority
output queues empty decided to solicit successor
Soliciting
Soliciting
solicit_wait expired is_selfring
got token of greater priority
17Transition Conditions From B,F,H,J
- B_F always
- F_I claim_token timer expired
- F_J received solicit_successor packet and
decided to join - H_M token_holding timer expired
- J_F contention timer expired, or failed to join
- J_M succeeded in joining
18Transition Conditions From I(1)
- I_F received packet from another ring and
is_selfring or inring timer expired - I_H received normal token with greater priority
an output queue is nonempty - I_O received packet from another ring and not
is_selfring - I_S received normal token with greater priority
output queues are empty decided to solicit
successor or solicit_successor timer expired
19Transition Conditions From I(2),O
- I_M received set_successor or received token
with greater priority and (token is
set_predecessor or (token is normal output
queues are empty and didnt decide to solicit
successor)) or idle timer expired - O_F offline timer expired
20Transition Conditions From M
- M_F received packet from another ring and
is_selfring - M_I received implicit ack
- M_O received packet from another ring and not
is_selfring or exceeded max token pass tries or
just joined and failed to transmit or token_pass
timer expired
21Transition Conditions From S
- S_F received packet from another ring and
is_selfring - S_I received token of lesser priority or
solicit_wait timer expired and is_selfring - S_M received request to join or solicit_wait
timer expired and not is_selfring - S_O received packet from another ring and not
is_selfrin
22Simulator
INPUT File
NAM File
TRACE File
23Simulator
- Packet Loss
- Free Way Propagation Model
- Packet Corruption
- Signal to Noise Ratio (pending)
24Simulator
- Node File (input)
- Simulation time, Range, Velocity, Seed, Namfile,
Tracefile, node, Mobility pattern, xy location. - Nam File (output)
- Gives in NAM format
- Shows node movement,Transmission,Reception and
Ring Address - Trace File (output)
- Detailed information of received and sent packets
for analysis.
25Simulator
Bounce
Brownian
Stable
26UDP Implementation
Tx_Handler Process Packet
Timeout
Packet from Application
SELECT
Packet from Medium
Timer_Handler
Change State
Rx_Handler
Process Packet Reset Timers
Initialize Timers
27Packet Formats
UDPApplications 2
UDPApplications 1
ltDADDR1, DPORT1gt,PACKET1
ltLOCAL, TOKAPPPORT gt, ltDADDR1, DPORT1gt PACKET1
Token Ring
TOKAPPPORT
TOKDEVPORT
NET
ltDADDR1, TOKDEVPORT gt, DPORT1 PACKET1
28User Interface
- int my_socket(int domain, int type, int protocol)
- int my_bind(int sockfd, struct sockaddr my_addr,
socklen_t addrlen) - int my_recvfrom(int s, void buf, size_t len, int
flags, struct sockaddr from, socklen_t fromlen) - int my_sendto(int s, const void msg, size_t len,
int flags, const struct sockaddr to, socklen_t
tolen) - int select(int. . . .)
- Int close(int s)
29Example my_sendto
- int my_sendto(int s, const void msg, size_t len,
int flags, const struct sockaddr to, socklen_t
tolen) -
- deviceAddr.sin_family AF_INET
- deviceAddr.sin_port htons(TOKPORT)
- deviceAddr.sin_addr.s_addr
inet_addr("127.0.0.1") - memcpy(newmsg, to, sockAddrSize)
- memcpy(newmsg sockAddrSize, msg, len)
- return sendto(s, newmsg, len sockAddrSize,
flags, - (struct sockaddr ) deviceAddr,
sockAddrSize)
30Demo (hellohello Application)
- Uses all the functions described above.
- Processes Compete in trying to send hellohello
packet periodically every 1 second.
31Conclusion (Design)
- Restricted the use of timers corresponding to
each state. - Reduced the number of states.
- Optimization.
- Further debugging.
- Simplified Parameterization.
- Minimized Memory allocation.
- Use of queues.
- Maximum use of existing kernel functions.
32Parametrization (Example)
- station-gtMAX_TOKEN_PASS_TIME upper_token_holding
_time(station, station-gtTS) upper_proc_time(stat
ion, station-gtTS) upper_token_holding_time(stati
on, station-gtNS) upper_proc_time(station,
station-gtNS) - station-gtMAX_SOLICIT_SUCCESSOR_TIME
upper_proc_time(station, station-gtTS)
((SOLICIT_SUCCESSOR_SIZE PHY_HEADER_SIZE)TICKS_
PER_SEC / lower_transmission_rate(station))
upper_proc_time(station, station-gtTS)
((SET_SUCCESSOR_SIZE PHY_HEADER_SIZE)TICKS_PER_
SEC / lower_transmission_rate(station))
upper_proc_time(station, station-gtTS)
((SET_PREDECESSOR_SIZE PHY_HEADER_SIZE)TICKS_PE
R_SEC / lower_transmission_rate(station))
33Parameterization (Enforcement)
- ASSERT((station-gtMTRT gt station-gtMAX_TOKEN_PASS_TI
ME)) - ASSERT(station-gtMAX_TOKEN_PASS_TIME gt
station-gtMIN_TOKEN_PASS_TIME) - ASSERT(station-gtMTRT gt upper_total_token_holding_
time(station) upper_total_management_time(station
))
34Conclusion (Simulation Platform)
- Modeling of Channel.
- Location Information.
- Graphical Interface.
- Modeling of Device.
35Going Forward
- Release of UDP version.
- Clean up code.
- Making more user friendly.
- Documentation.
- Kernel Implementation.
- Current code is implemented with kernel
integration in mind. - Need to test our assumptions of kernels (timers,
sk_buff, flow control, hardware access
libraries). - Software Integration.