Dynamics | ||
Mobile Node Signaling State Machine | $Revision: 1.3 $ | State approved |
Date 08-Dec-1998 | Author Jari Hautio | |
Review date 10-Dec-1998 | Reviewed by Jouni Malinen | |
Approval date 10-Dec-1998 | Approved by Jouni Malinen |
$Id: mn_machine.html,v 1.3 1998/12/09 23:46:03 jkmaline Exp $
Objects and variables used in state machine:
FA - Address of closest foreign agent
Sequence Number - Storage for last heard Mobility Agent Advertisement message
Timer - Timer, which generates a timer expiration event to machine input, when in times out.
Lifetime_left - Variable indicating lifetime left for the tunnel
Adv_timer - Timer, which indicates advertisement lifetime left for a heard advertisement
Reply_timer - Timer to measure time needed for registration.
Transition: Initialize
Input: -State: Disconnected
Output: Log agent startup message
Variables: Read configuration information from ini-file and initialize variables
Next State: Disconnected
Transition: Create_Tunnel
Input: API Call "Create Tunnel"State: Find_agent
Output: Broadcast Mobile Agent Solicitation Message
Variables: Set Timer to X
Next State: Find_agent
Transition: Timer
Input: Timer expiresTransition: Foreign_Advertisement
Output: Broadcast Mobile Agent Solicitation message
Variables: Set Timer to X
Next State: Find_agent
Input: Mobile Agent Advertisement message from foreign agentTransition: Home_Advertisement
Output: Send Registration Request to FA
Variables: Set Timer to X, set FA to advertised agent, Store Sequence Number, start Reply_timer, set Adv_timer
Next State: Request_Tunnel
Input: Mobile Agent Advertisement message from home agentTransition: Disconnect
Output: -
Variables:
Next State: At_Home
Input: API Call "Disconnect"Transition: Location_Update
Output:
Variables: -
Next State: Disconnected
Input: API Call "Location Update"Transition: Too_Many_Retries
Output: Mobile Agent Solicitation message
Variables: Set Timer to X
Next State: Find_agent
Input Retry counter expiresTransition: Home_Update
Output: -
Variables: -
Next State: Passive_Find
Input: Api Call "Home Update"State: Request_Tunnel
Output: -
Variables:
Next State: At_Home
Transition: Timer
Input: Timer expiresTransition: Adv_Lifetime Ends
Output: Send Registration Request to FA
Variables: Set Timer to X
Next State: Request_Tunnel
Input: Adv_timer for MA Advertisement expiresTransition: Disconnect
Output: Broadcast Mobile Agent Solicitation message
Variables: Set Timer to X
Next State: Find_Agent
Input: API Call "Disconnect"Transition: Location_Update
Output:
Variables: -
Next State: Disconnected
Input: API Call "Location Update"Transition: Reply_Accept
Output: Mobile Agent Solicitation message
Variables: Set Timer to X
Next State: Find_agent
Input: Registration Reply, accepting the tunnelTransition: Reply_Deny
Output: -
Variables: Set Lifetime_left to replied lifetime - Reply_timer,
Set Timer to Lifetime / 2,
Start tunneling
Next State: Connected
Input: Registration Reply, tunnel rejectedTransition: Home_Update
Output: Log error
Variables: Stop tunneling
Next State: Depends on error Disconnected, if unrecovarable error, else Find Agent or Reques Tunnel
Input: Api Call "Home Update"State: Connected
Output: Send Registration Request with zero lifetime to HA
Variables: Set Timer to X
Next State: Close_for_Home
Transition: Timer
Input: Timer expiresTransition: Location_Update
Output: Registration Request
Variables: Set Timer to Max(Lifetime_left / 2,Min_Timeout),
Set Lifetime_left toLifetime_left /2
Next State: Connected
Input: API Call "Location Update"Transition: Home_Update
Output: Mobile Agent Solicitation message
Variables: Set Timer to X, stop tunneling
Next State: Find_Agent
Input: Api Call "Home Update"Transition: Agent_Reboot
Output: Send Registration Request with zero lifetime to HA
Variables: Set Timer to X
Next State: Close_for_Home
Input: Mobility Agent Advertisement with lower Sequence Number than last time (stored seq.n.)Transition: Forced_Request
Output: Send Registration Request to FA
Variables: Set Timer to X, Store Sequence Number, start Reply_timer, set Adv_timer
Next State: Request_Tunnel
Input: API call "Confirm"State: Forced_Request
Output: Send Registration Request with force bit on
Variables: Set call variables, Set Timer to Retry interval
Next State: Forced_Request
Transition: Timer
Input: Timer expiresTransition: Location_Update
Output: Registration Request, force bit on
Variables: Set Timer to retry interval
Next State: Forced_Request
Input: API Call "Location Update"Transition: Agent_Reboot
Output: Mobile Agent Solicitation message
Variables: Set Timer to X, stop tunneling
Next State: Find_Agent
Input: Mobility Agent Advertisement with lower Sequence Number than last time (stored seq.n.)Transition: Reply_Home
Output: Send Registration Request to FA, force bit on
Variables: Set Timer to X, Store Sequence Number, start Reply_timer, set Adv_timer
Next State: Forced_Request
Input: Accepting Registration Reply from Home AgentTransition: Home_Update
Output: Return Api Call with success
Variables: Set lifetime_left and Set Timer to Lifetime / 2
Next State: Connected
Input: Api Call "Home Update"State: Error
Output: Send Registration Request with zero lifetime to HA
Variables: Set Timer to X
Next State: Close_for_Home
Transition: Reset
Input: -State: Close_for_Home
Output: Log error
Variables: Stop tunneling
Next State: Startup
Transition: Timer
Input: Timer expiresTransition: Location_Update
Output: Registration Request, lifetime = 0
Variables: Set Timer to X
Next State: Close_for_Home
Input: API Call "Location Update"Transition: Home_Reply
Output: Mobile Agent Solicitation message
Variables: Set Timer to X
Next State: Find_Agent
Input: Registration Reply from HAState:At_Home
Output: -
Variables: -
Next State: At_Home
Transition: Location_Update
Input: API Call "Location Update"Transition: Disconnect
Output: Broadcast Mobile Agent Solicitation message
Variables: Set Timer to X
Next State: Find_Agent
Input: API Call "Disconnect"State: Passive_Find
Output: -
Variables: -
Next State: Disconnected
Transition: Foreign_Advertisement
Input: Mobility Agent Advertisement from FA (different than HA)Transition: Location_Update
Output: Send Registration Request to FA
Variables: Set Timer to X, Set FA to advertised agent, Store Sequence Number, start Reply_timer, set Adv_timer
Next State: Request_Tunnel
Input: API Call "Location Update"Transition: Disconnect
Output: Broadcast Mobile Agent Solicitation message
Variables: Set Timer to X
Next State: Find_Agent
Input: API Call "Disconnect"Transition: Home_Advertisement
Output:
Variables: -
Next State: Disconnected
Input: Mobile Agent Advertisement message from HATransition: Home_Update
Output: Send Registration Request with zero lifetime to HA
Variables: Set Timer to X
Next State: Close_for_Home
Input: Api Call "Home Update"
Output: Send Registration Request with zero lifetime to HA
Variables: Set Timer to X
Next State: Close_for_Home