Mip6-enunciado
Sumario
- 1 1. Objectives
- 2 2. Background knowledge
- 3 3. Scenario description
- 4 4. Scenario configuration
- 5 5. Radvd dynamical configuration
- 6 6. Starting mip6 daemon
- 7 7. Moving the Mobile Node to a foreign network
- 8 8. Moving the Mobile Node back to the home network
- 9 9. Releasing the scenario
- 10 10. References
1. Objectives
The objectives of this practical are:
- To understand the dynamical configuration of a net using radvd server.
- To get familiar with an IPv6 scenario.
- To understand the Mobile IPv6 protocol throughout the analysis of the packets exchanged during a simple scenario.
2. Background knowledge
The understanding of this practical requires basic knowledge about protocols IPv6 [1] and Mobile IPv6 [2]. It also uses the protocol analyser software Ethereal [3], so it is also recommended to get familiar with it before starting with the practical.
In order to make easier the understanding of the practical, the user only needs to execute generic commands. The exactly commands that are executed in the virtual machines can be seen in the xml specification file. Therefore, if you would like to execute the practical more slowly, step by step, you only need to follow the commands specified in the xml file corresponding for each generic command.
3. Scenario description
The scenario is illustrated in figure 1. It is made of:
- A Mobile Node (mn), which will be initially at Net0 and moved later to Net2.
- A Home Agent (ha), which makes the functions of a home agent and a radvd server [4].
- An Access Router (ar), which makes the functions of a radvd server.
- A Correspondent Node (cn), which is used to ping6 and traceroute6 to the Mobile Node.
Figure 1
The following entries have been added to the /etc/hosts file of each of the virtual machines of the scenario. This allows the user typing symbolical names for the interfaces instead of having to write their IPv6 address, which means a significantly effort reduced.
2001:1:1:1:fcfd:ff:fe00:101 mn1 2001:1:1:3:fcfd:ff:fe00:102 mn2 2001:1:1:1:fcfd:ff:fe00:201 ha1 2001:1:1:2:fcfd:ff:fe00:202 ha2 2001:1:1:2:fcfd:ff:fe00:301 ar1 2001:1:1:3:fcfd:ff:fe00:302 ar2 2001:1:1:3:fcfd:ff:fe00:401 cn
4. Scenario configuration
Build the virtual machines of the scenario by starting the mipv6.xml file with the VNUML tool [5]:
cd /usr/share/vnuml/examples vnumlparser.pl -t mip6.xml -v -u root
Note: Depending on your linux distribution, the vnuml directory might be under /usr/share or /usr/local/share.
This instruction will boot the virtual machines and a shell will be prompted for each of them. The scenario is built as the user root since root privileges are needed to do so. The user for the virtual machines is root and the password is xxxx.
Initially the scenario is not configured, so there is no connectivity between the machines. Copy the configuration files and modify the appropriate virtual machines parameters for the correct configuration of the scenario. This is done with the following instruction in the host:
vnumlparser.pl -x start@mip6.xml -v -u root
The above instruction makes the following:
- It copies the radvd configuration files in the Home Agent and Access Router and gives read permission to other users different than root.
- It copies the mip6 daemon [6] configuration files in the Mobile Node, the Home Agent and the Correspondent Node.
- It prepares the interfaces in the virtual machines for their right configuration.
- It modifies the /etc/hosts file of each virtual machine to include the entries described in section 3.
- It turns down an interface in the Mobile Node that will later be used to simulate the movement between the home net and the foreign net.
To see the exact result of executing the start command, please see the mipv6.xml file.
5. Radvd dynamical configuration
At this point the scenario is prepared to configure itself using radvd. The only machines that have their interfaces configured are the radvd servers (ha and ar).
To study the way in which radvd works, run in the host Ethereal to capture packets in Net0.
Note: To be able to capture packets in the host from the virtual scenario it is necessary to install the modified version by Esteban Martín of the uml_switch. Documentation about how to do it can be found at the README file in the contrib/uml_router directory under the vnuml package.
Run the following command to start radvd in the radvd servers (ha and ar):
/etc/init.d/radvd start
After a few seconds the scenario is correctly configured with IPv6. Check the configuration using the ifconfig command in each virtual machine.
Check also that there is connectivity between the virtual machines by doing ping6 and traceroute6 between two of them (for example cn to mn).
Stop the Ethereal capture and save the file with the name radvd.cap. Analyze the packets that correspond to the radvd configuration. Take a look also to the other packets to understand how ping6 and traceroute6 work.
- What address does the radvd server send the router advertisements to?
- The router advertisements are sent to the IPv6 multicast address ff02::1 [7]. This address is the link-scope all-nodes address. A packet sent to this address reaches all nodes on a subnet.
- What prefix does the radvd server announce?
- The radvd server announces the 2001:1:1:1:: prefix. This can be found in the ICMPv6 options in any router advertisement packet.
6. Starting mip6 daemon
Run Ethereal to capture packets in Net0.
Start the mip6 daemon in the Home Agent, and wait about 30 seconds in order to see more easily the packets in the capture. Run the mip6 daemon in the Mobile Node, and wait again a few seconds. Finally, run the mip6 daemon in the Correspondent Node.
Note: To start the mip6 daemon you only need to type mip6d in the correspondent shell. This will left the daemon running in this shell. In order to be able to type other commands without stopping or taking to background the daemon, you should open a new shell and make ssh to the virtual machine you want (for example, ssh mn). It is necessary at least to open a new shell for the Mobile Node and the Correspondent Node.
- Analyze the verbose that appears as the result of running each mip6 daemon.
- In the verbose, the configuration options defined in the mip6d.conf file of each element implementing IPv6 Mobile are shown. This file can be found at the /usr/local/etc directory of each of them.
- The verbose for the Home Agent is:
ha:~# mip6d mip6d[1375]: MIPL Mobile IPv6 for Linux v2.0.2 started (Home Agent) main: MIPL Mobile IPv6 for Linux started in debug mode, not detaching from terminal conf_show: config_file = /usr/local/etc/mip6d.conf conf_show: mip6_entity = 2 conf_show: debug_level = 10 conf_show: PolicyModulePath = [internal] conf_show: DefaultBindingAclPolicy = 0 conf_show: NonVolatileBindingCache = disabled conf_show: KeyMngMobCapability = disabled conf_show: UseMnHaIPsec = disabled conf_show: MnMaxHaBindingLife = 262140 conf_show: MnMaxCnBindingLife = 420 conf_show: MnRouterProbes = 0 conf_show: MnRouterProbeTimeout = 0.000000 conf_show: InitialBindackTimeoutFirstReg = 1.500000 conf_show: InitialBindackTimeoutReReg = 1.000000 conf_show: UseCnBuAck = disabled conf_show: DoRouteOptimizationMN = enabled conf_show: MnUseAllInterfaces = disabled conf_show: MnDiscardHaParamProb = disabled conf_show: SendMobPfxSols = enabled conf_show: OptimisticHandoff = disabled conf_show: SendMobPfxAdvs = enabled conf_show: SendUnsolMobPfxAdvs = enabled conf_show: MaxMobPfxAdvInterval = 86400 conf_show: MinMobPfxAdvInterval = 600 conf_show: HaMaxBindingLife = 262140 conf_show: DoRouteOptimizationCN = enabled xfrm_cn_init: Adding policies and states for CN xfrm_ha_init: Adding policies and states for HA ha_if_addr_setup: Joined anycast group 2001:1:1:1:fdff:ffff:ffff:fffe on iface 1
- The verbose for the Mobile Node is:
mn:~# mip6d mip6d[1354]: MIPL Mobile IPv6 for Linux v2.0.2 started (Mobile Node) main: MIPL Mobile IPv6 for Linux started in debug mode, not detaching from terminal conf_show: config_file = /usr/local/etc/mip6d.conf conf_show: mip6_entity = 1 conf_show: debug_level = 10 conf_show: PolicyModulePath = [internal] conf_show: DefaultBindingAclPolicy = 0 conf_show: NonVolatileBindingCache = disabled conf_show: KeyMngMobCapability = disabled conf_show: UseMnHaIPsec = disabled conf_show: MnMaxHaBindingLife = 262140 conf_show: MnMaxCnBindingLife = 420 conf_show: MnRouterProbes = 0 conf_show: MnRouterProbeTimeout = 0.000000 conf_show: InitialBindackTimeoutFirstReg = 1.500000 conf_show: InitialBindackTimeoutReReg = 1.000000 conf_show: UseCnBuAck = disabled conf_show: DoRouteOptimizationMN = enabled conf_show: MnUseAllInterfaces = disabled conf_show: MnDiscardHaParamProb = enabled conf_show: SendMobPfxSols = enabled conf_show: OptimisticHandoff = disabled conf_show: SendMobPfxAdvs = enabled conf_show: SendUnsolMobPfxAdvs = enabled conf_show: MaxMobPfxAdvInterval = 86400 conf_show: MinMobPfxAdvInterval = 600 conf_show: HaMaxBindingLife = 262140 conf_show: DoRouteOptimizationCN = enabled xfrm_cn_init: Adding policies and states for CN xfrm_mn_init: Adding policies and states for MN conf_home_addr_info: HoA address 2001:1:1:1:fcfd:ff:fe00:101 conf_home_addr_info: HA address 2001:1:1:1:fcfd:ff:fe00:201 __tunnel_add: created tunnel ip6tnl1 (8) from 2001:1:1:1:fcfd:ff:fe00:101 to 2001:1:1:1:fcfd:ff:fe00:201 user count 1 conf_home_addr_info: Home address 2001:1:1:1:fcfd:ff:fe00:101 flag_hoa: set HoA 2001:1:1:1:fcfd:ff:fe00:101/128 iif 8 flags 10 preferred_time 4294967295 valid_time 4294967295 conf_home_addr_info: Added new home_addr_info successfully __md_discover_router: discover link on iface eth1 (1) md_change_default_router: add new router fe80:0:0:0:fcfd:ff:fe00:201 on interface eth1 (1) mn_addr_do_dad: DAD succeeded! mn_addr_do_dad: DAD succeeded! mn_move: 1535 mn_move: in home net mv_hoa: move HoA 2001:1:1:1:fcfd:ff:fe00:101/64 from iface 8 to 1
- DAD stands for Duplicated Address. The daemon checks that there is not already any machine with the Mobile's Node address. The packets that are sent to check this can be seen at the Ethereal capture.
- The verbose for the Correspondent Node is:
cn:~# mip6d mip6d[1349]: MIPL Mobile IPv6 for Linux v2.0.2 started (Correspondent Node) main: MIPL Mobile IPv6 for Linux started in debug mode, not detaching from terminal conf_show: config_file = /usr/local/etc/mip6d.conf conf_show: mip6_entity = 0 conf_show: debug_level = 10 conf_show: PolicyModulePath = [internal] conf_show: DefaultBindingAclPolicy = 0 conf_show: NonVolatileBindingCache = disabled conf_show: KeyMngMobCapability = disabled conf_show: UseMnHaIPsec = enabled conf_show: MnMaxHaBindingLife = 262140 conf_show: MnMaxCnBindingLife = 420 conf_show: MnRouterProbes = 0 conf_show: MnRouterProbeTimeout = 0.000000 conf_show: InitialBindackTimeoutFirstReg = 1.500000 conf_show: InitialBindackTimeoutReReg = 1.000000 conf_show: UseCnBuAck = disabled conf_show: DoRouteOptimizationMN = enabled conf_show: MnUseAllInterfaces = disabled conf_show: MnDiscardHaParamProb = disabled conf_show: SendMobPfxSols = enabled conf_show: OptimisticHandoff = disabled conf_show: SendMobPfxAdvs = enabled conf_show: SendUnsolMobPfxAdvs = enabled conf_show: MaxMobPfxAdvInterval = 86400 conf_show: MinMobPfxAdvInterval = 600 conf_show: HaMaxBindingLife = 262140 conf_show: DoRouteOptimizationCN = enabled xfrm_cn_init: Adding policies and states for CN
Make ping6 and traceroute6 from cn to mn to check connectivity.
Stop the Ethereal capture and save the file with the name ha_mn.cap. Identify and analyze the packets that correspond to the configuration of each mip6 daemon.
- What packets produce the launch of the mip6 daemon in the Home Agent? To what address are sent?
- When the mip6 daemon is launched in the Home Agent Multicast Listener Report Messages v2 are sent. They are sent to the multicast address ff02::16 [7]. This address is the link-scope all-MLDv2 (Multicast Listener Discovery v2) routers address. A packet sent to this address reaches all MLDv2 routers on a subnet.
- What happens when the mip6 daemon is launched in the Mobile Node?
- Is it necessary to launch the mip6 daemon in the Correspondent Node?
- The launch of mip6 daemon in the Correspondent Node is not strictly necessary. It does not provoke any exchange of packets when the Mobile Node is at the home net (it does not even send packets from the interface of the Correspondent Node).
- However it is necessary to allow Route Optimization between the Correspondent Node and the Mobile Node. If it is not launched, the mip6 daemon in the Mobile Node tries to start Route Optimization every time that receives a packet from the Correspondent Node, but it never can make it.
- The verbose that is shown in the mip6 daemon in the Mobile Node when ping6 is made from the Correspondent Node to the Mobile Node without the Correspondent Node implementing mip6 daemon is:
_start_ro: MN: Start RO to 2001:1:1:3:fcfd:ff:fe00:401, from 2001:1:1:1:fcfd:ff:fe00:101 bul_add: Adding bule == BUL_ENTRY == Home address 2001:1:1:1:fcfd:ff:fe00:101 Care-of address 2001:1:1:3:fcfd:ff:fe00:102 CN address 2001:1:1:3:fcfd:ff:fe00:401 lifetime = 210, delay = 210000 flags: rrl_get: 2001:1:1:1:fcfd:ff:fe00:101 rrl_get: 2001:1:1:3:fcfd:ff:fe00:401 rre_create: 2001:1:1:1:fcfd:ff:fe00:101 rre_create: 2001:1:1:3:fcfd:ff:fe00:401 mn_rr_cond_start_hot: Home keygen token not valid, send HoTI mh_send: sending MH type 1 from 2001:1:1:1:fcfd:ff:fe00:101 to 2001:1:1:3:fcfd:ff:fe00:401 rrl_get: 2001:1:1:3:fcfd:ff:fe00:102 rrl_get: 2001:1:1:3:fcfd:ff:fe00:401 rre_create: 2001:1:1:3:fcfd:ff:fe00:102 rre_create: 2001:1:1:3:fcfd:ff:fe00:401 mn_rr_cond_start_cot: Care-of keygen token not valid, send CoTI mh_send: sending MH type 2 from 2001:1:1:3:fcfd:ff:fe00:102 to 2001:1:1:3:fcfd:ff:fe00:401 mn_start_ro: MN: Start RO to 2001:1:1:3:fcfd:ff:fe00:401, from 2001:1:1:1:fcfd:ff:fe00:101 mn_recv_param_prob: Parameter problem: offending octet 6 [0x87] mn_recv_param_prob: CN doesn't implement MH handling. bule_invalidate: CN unable to handle binding, changing BUL entry to NON_MIP_CN_ENTRY rrl_get: 2001:1:1:3:fcfd:ff:fe00:102 rrl_get: 2001:1:1:3:fcfd:ff:fe00:401 rrl_delete_co_hoa: 211 rrl_delete: 188 rrl_get: 2001:1:1:1:fcfd:ff:fe00:101 rrl_get: 2001:1:1:3:fcfd:ff:fe00:401 rrl_delete: 188 bul_delete: Deleting bule == BUL_ENTRY == Home address 2001:1:1:1:fcfd:ff:fe00:101 Care-of address 2001:1:1:1:fcfd:ff:fe00:101 CN address 2001:1:1:3:fcfd:ff:fe00:401 lifetime = 210, delay = 210000 flags: bul_add: Adding bule == NON_MIP_CN_ENTRY == Home address 2001:1:1:1:fcfd:ff:fe00:101 Care-of address 0:0:0:0:0:0:0:0 CN address 2001:1:1:3:fcfd:ff:fe00:401 lifetime = 420, delay = 420000 flags: mn_recv_param_prob: Parameter problem: offending octet 6 [0x87] mn_recv_param_prob: CN doesn't implement MH handling. mn_start_ro: MN: Start RO to 2001:1:1:3:fcfd:ff:fe00:401, from 2001:1:1:1:fcfd:ff:fe00:101 mn_start_ro: MN: Start RO to 2001:1:1:3:fcfd:ff:fe00:401, from 2001:1:1:1:fcfd:ff:fe00:101 mn_start_ro: MN: Start RO to 2001:1:1:3:fcfd:ff:fe00:401, from 2001:1:1:1:fcfd:ff:fe00:101 mn_start_ro: MN: Start RO to 2001:1:1:3:fcfd:ff:fe00:401, from 2001:1:1:1:fcfd:ff:fe00:101 mn_start_ro: MN: Start RO to 2001:1:1:3:fcfd:ff:fe00:401, from 2001:1:1:1:fcfd:ff:fe00:101 mn_start_ro: MN: Start RO to 2001:1:1:3:fcfd:ff:fe00:401, from 2001:1:1:1:fcfd:ff:fe00:101
- Every time that a ping packet is sent, the Mobile Node tries to start Route Optimization.
7. Moving the Mobile Node to a foreign network
The simulation of the movement of the Mobile Node to a foreign network is performed by turning up an interface that is connected to the foreign net (in this case Net2) and turning down the interface connected to the home net (Net0).
The scenario when the Mobile Node is at the foreign network is shown in figure 2.
Figure 2
The interface connected to Net2 is defined in the mip6.xml file, but it was turned down when executing the start command of the VNUML parser (see section 4 for more details).
Run Ethereal to capture packets in Net0. Run another Ethereal to capture packets in Net2.
Turn up the foreign interface in mn and wait about 30 seconds in order to see more easily the packets in the capture. Then turn down its home interface. You can do that by typing in a mn's shell the following:
ifconfig eth2 up ifconfig eth1 down
- Observe the modifications that are done in the verbose of the mip6 daemons.
- When turning up eth2, in the mn's mip6 daemon:
__md_discover_router: discover link on iface eth2 (2) md_change_default_router: add new router fe80:0:0:0:fcfd:ff:fe00:302 on interface eth2 (2)
- When turning down eth1, in the mn's mip6 daemon:
md_expire_router: expiring router fe80:0:0:0:fcfd:ff:fe00:201 on iface eth1 (1) mn_move: 1535 mn_move: in foreign net mv_hoa: move HoA 2001:1:1:1:fcfd:ff:fe00:101/128 from iface 1 to 8 mn_send_home_bu: 682 mn_get_home_lifetime: CoA lifetime 11995 s, HoA lifetime 11996 s, BU lifetime 11992 s mn_ro_pol_add: Adding default RO triggering policies for all Correspondent Nodesprocess_first_home_bu: New bule for HA bul_add: Adding bule == BUL_ENTRY == Home address 2001:1:1:1:fcfd:ff:fe00:101 Care-of address 2001:1:1:3:fcfd:ff:fe00:102 CN address 2001:1:1:1:fcfd:ff:fe00:201 lifetime = 11992, delay = 1500 flags: IP6_MH_BU_HOME IP6_MH_BU_ACK IP6_MH_BU_LLOCAL mn_send_home_bu: New bule for HA mh_send: sending MH type 5 from 2001:1:1:1:fcfd:ff:fe00:101 to 2001:1:1:1:fcfd:ff:fe00:201 mh_send: local CoA 2001:1:1:3:fcfd:ff:fe00:102 bul_update_timer: Updating timer == BUL_ENTRY == Home address 2001:1:1:1:fcfd:ff:fe00:101 Care-of address 2001:1:1:3:fcfd:ff:fe00:102 CN address 2001:1:1:1:fcfd:ff:fe00:201 lifetime = 11992, delay = 1500 flags: IP6_MH_BU_HOME IP6_MH_BU_ACK IP6_MH_BU_LLOCAL tunnel_mod: modifying tunnel 8 end points with from 2001:1:1:3:fcfd:ff:fe00:102 to 2001:1:1:1:fcfd:ff:fe00:201 __tunnel_mod: modified tunnel iface ip6tnl1 (8)from 2001:1:1:3:fcfd:ff:fe00:102 to 2001:1:1:1:fcfd:ff:fe00:201 mn_recv_ba: 928 mn_recv_ba: Got BA from 2001:1:1:1:fcfd:ff:fe00:201 to home address 2001:1:1:1:fcfd:ff:fe00:101 with coa 2001:1:1:3:fcfd:ff:fe00:102 and status 0 mn_recv_ba: Dumping corresponding BULE == BUL_ENTRY == Home address 2001:1:1:1:fcfd:ff:fe00:101 Care-of address 2001:1:1:3:fcfd:ff:fe00:102 CN address 2001:1:1:1:fcfd:ff:fe00:201 lifetime = 11992, delay = 1500 flags: IP6_MH_BU_HOME IP6_MH_BU_ACK IP6_MH_BU_LLOCAL mpd_schedule_first_mps: schedule MPS in 2 s set_bule_lifetime: Set bule lifetime to 11992 (s) and resend to bule->delay 11392 (s) mn_recv_ba: Callback to bu_refresh after 11392 seconds bul_update_timer: Updating timer == BUL_ENTRY == Home address 2001:1:1:1:fcfd:ff:fe00:101 Care-of address 2001:1:1:3:fcfd:ff:fe00:102 CN address 2001:1:1:1:fcfd:ff:fe00:201 lifetime = 11992, delay = 11392000 flags: IP6_MH_BU_HOME IP6_MH_BU_ACK IP6_MH_BU_LLOCAL mpd_schedule_first_mps: schedule MPS in 10793 s
- And in the ha's daemon:
mh_bu_parse: Binding Update Received ndisc_do_dad: Dad success __tunnel_add: created tunnel ip6tnl1 (8) from 2001:1:1:1:fcfd:ff:fe00:201 to 2001:1:1:3:fcfd:ff:fe00:102 user count 1 mh_send_ba: status 0 mh_send: sending MH type 6 from 2001:1:1:1:fcfd:ff:fe00:201 to 2001:1:1:1:fcfd:ff:fe00:101 mh_send: remote CoA 2001:1:1:3:fcfd:ff:fe00:102
Stop the Ethereal capture in Net0 and save the file with the name eth1_down.cap. Analyze the packets that are sent as the result of turning down the interface.
- What happens when the home interface is turned down?
- The router asks for the address that has just been turned down, and as no one replies, it sends Multicast Listener Report Messages to exclude that address. These messages are sent to the multicast address ff02::16 [7]. This address is the link-scope all-MLDv2 routers address—A packet sent to this address reaches all MLDv2 routers on a subnet.
Make ping6 from cn to the Mobile Node's home address (mn1).
- Observe the modifications that are done in the verbose of the mip6 daemons.
- When ping6 is done, in the mn's mip6 daemon:
mn_start_ro: MN: Start RO to 2001:1:1:3:fcfd:ff:fe00:401, from 2001:1:1:1:fcfd:ff:fe00:101 bul_add: Adding bule == BUL_ENTRY == Home address 2001:1:1:1:fcfd:ff:fe00:101 Care-of address 2001:1:1:3:fcfd:ff:fe00:102 CN address 2001:1:1:3:fcfd:ff:fe00:401 lifetime = 210, delay = 210000 flags: rrl_get: 2001:1:1:1:fcfd:ff:fe00:101 rrl_get: 2001:1:1:3:fcfd:ff:fe00:401 rre_create: 2001:1:1:1:fcfd:ff:fe00:101 rre_create: 2001:1:1:3:fcfd:ff:fe00:401 mn_rr_cond_start_hot: Home keygen token not valid, send HoTI mh_send: sending MH type 1 from 2001:1:1:1:fcfd:ff:fe00:101 to 2001:1:1:3:fcfd:ff:fe00:401 rrl_get: 2001:1:1:3:fcfd:ff:fe00:102 rrl_get: 2001:1:1:3:fcfd:ff:fe00:401 rre_create: 2001:1:1:3:fcfd:ff:fe00:102 rre_create: 2001:1:1:3:fcfd:ff:fe00:401 mn_rr_cond_start_cot: Care-of keygen token not valid, send CoTI mh_send: sending MH type 2 from 2001:1:1:3:fcfd:ff:fe00:102 to 2001:1:1:3:fcfd:ff:fe00:401 mn_start_ro: MN: Start RO to 2001:1:1:3:fcfd:ff:fe00:401, from 2001:1:1:1:fcfd:ff:fe00:101 rrl_get: 2001:1:1:3:fcfd:ff:fe00:102 rrl_get: 2001:1:1:3:fcfd:ff:fe00:401 rrl_get: 2001:1:1:1:fcfd:ff:fe00:101 rrl_get: 2001:1:1:3:fcfd:ff:fe00:401 mn_recv_cot: Still waiting for HoT, not sending BU rrl_get: 2001:1:1:1:fcfd:ff:fe00:101 rrl_get: 2001:1:1:3:fcfd:ff:fe00:401 rrl_get: 2001:1:1:3:fcfd:ff:fe00:102 rrl_get: 2001:1:1:3:fcfd:ff:fe00:401 mn_recv_hot: Got HoT and found RR entry for care-of address mh_send: sending MH type 5 from 2001:1:1:1:fcfd:ff:fe00:101 to 2001:1:1:3:fcfd:ff:fe00:401 mh_send: local CoA 2001:1:1:3:fcfd:ff:fe00:102 mh_send: Adding bind auth data mh_send: Adding auth_data bul_update_timer: Updating timer == BUL_ENTRY == Home address 2001:1:1:1:fcfd:ff:fe00:101 Care-of address 2001:1:1:3:fcfd:ff:fe00:102 CN address 2001:1:1:3:fcfd:ff:fe00:401 lifetime = 420, delay = 420000 flags:
- These messages only appear the first time you execute ping6.
- And in the cn's mip6 daemon:
mh_send: sending MH type 3 from 2001:1:1:3:fcfd:ff:fe00:401 to 2001:1:1:1:fcfd:ff:fe00:101 mh_send: sending MH type 4 from 2001:1:1:3:fcfd:ff:fe00:401 to 2001:1:1:3:fcfd:ff:fe00:102 mh_bu_parse: Binding Update Received mh_bu_parse: src 2001:1:1:1:fcfd:ff:fe00:101 mh_bu_parse: coa 2001:1:1:3:fcfd:ff:fe00:102
Stop the Ethereal capture in Net2 and save the file with the name bu_foreign.cap. Analyze the packets that are sent as the result of turning up the interface eth2, turning up eth1 and making ping6 to the Mobile Node's home address.
- What happens when the foreign interface is turned up?
- The Mobile Node checks that no one has already the address he is about to get, and then it announces the address to the MLDv2 routers of the subnet.
- What happens when the home interface is turned down?
- How does the Correspondent Node learn the Mobile Node's care of address?
8. Moving the Mobile Node back to the home network
Run Ethereal to capture packets in Net0. Run another Ethereal to capture packets in Net2.
Turn up the home interface in mn and wait about 30 seconds in order to see more easily the packets in the capture. Then turn down its foreign interface:
ifconfig eth1 up ifconfig eth2 down
- Observe the modifications that are done in the verbose of the mip6 daemons.
- When turning up eth1, in the mn's mip6 daemon:
__md_discover_router: discover link on iface eth1 (1) md_change_default_router: add new router fe80:0:0:0:fcfd:ff:fe00:201 on interface eth1 (1) mn_recv_na: ret 0 mn_addr_do_dad: HA answered DAD probe! mn_move: 1535 mn_move: in home net mv_hoa: move HoA 2001:1:1:1:fcfd:ff:fe00:101/64 from iface 8 to 1 mn_send_home_bu: 682 mn_get_home_lifetime: BU lifetime 0 s mn_send_home_bu: Moved to home network mn_pol_ext_cleanup: mpd_cancel_mps: canceling MPS mn_ro_pol_del: Deleting default RO triggering policies for all Correspondent Nodes mn_send_home_bu: Bule for HA exists. Updating it. mh_send: sending MH type 5 from 2001:1:1:1:fcfd:ff:fe00:101 to 2001:1:1:1:fcfd:ff:fe00:201 mh_send: local CoA 2001:1:1:1:fcfd:ff:fe00:101 bul_update_timer: Updating timer == BUL_ENTRY == Home address 2001:1:1:1:fcfd:ff:fe00:101 Care-of address 2001:1:1:1:fcfd:ff:fe00:101 CN address 2001:1:1:1:fcfd:ff:fe00:201 lifetime = 0, delay = 1000 flags: IP6_MH_BU_HOME IP6_MH_BU_ACK IP6_MH_BU_LLOCAL tunnel_mod: modifying tunnel 8 end points with from 2001:1:1:1:fcfd:ff:fe00:101 to 2001:1:1:1:fcfd:ff:fe00:201 __tunnel_mod: modified tunnel iface ip6tnl1 (8)from 2001:1:1:1:fcfd:ff:fe00:101 to 2001:1:1:1:fcfd:ff:fe00:201 mn_recv_ba: 928 mn_recv_ba: Got BA from 2001:1:1:1:fcfd:ff:fe00:201 to home address 2001:1:1:1:fcfd:ff:fe00:101 with coa 0:0:0:0:0:0:0:0 and status 0 mn_recv_ba: Dumping corresponding BULE == BUL_ENTRY == Home address 2001:1:1:1:fcfd:ff:fe00:101 Care-of address 2001:1:1:1:fcfd:ff:fe00:101 CN address 2001:1:1:1:fcfd:ff:fe00:201 lifetime = 0, delay = 1000 flags: IP6_MH_BU_HOME IP6_MH_BU_ACK IP6_MH_BU_LLOCAL icmp6_send: sendmsg: Invalid argument bul_delete: Deleting bule == BUL_ENTRY == Home address 2001:1:1:1:fcfd:ff:fe00:101 Care-of address 2001:1:1:1:fcfd:ff:fe00:101 CN address 2001:1:1:1:fcfd:ff:fe00:201 lifetime = 0, delay = 1000 flags: IP6_MH_BU_HOME IP6_MH_BU_ACK IP6_MH_BU_LLOCAL mn_rr_start_handoff: Returning home, no need for Care-of keygen token rrl_get: 2001:1:1:1:fcfd:ff:fe00:101 rrl_get: 2001:1:1:3:fcfd:ff:fe00:401 mn_rr_cond_start_hot: Home keygen token valid, no HoTI rrl_get: 2001:1:1:1:fcfd:ff:fe00:101 rrl_get: 2001:1:1:3:fcfd:ff:fe00:401 mn_get_ro_lifetime: BU lifetime 0 s mh_send: sending MH type 5 from 2001:1:1:1:fcfd:ff:fe00:101 to 2001:1:1:3:fcfd:ff:fe00:401 mh_send: local CoA 2001:1:1:1:fcfd:ff:fe00:101 mh_send: Adding bind auth data mh_send: Adding auth_data rrl_get: 2001:1:1:1:fcfd:ff:fe00:101 rrl_get: 2001:1:1:3:fcfd:ff:fe00:401 rrl_delete: 188 bul_delete: Deleting bule == BUL_ENTRY == Home address 2001:1:1:1:fcfd:ff:fe00:101 Care-of address 2001:1:1:1:fcfd:ff:fe00:101 CN address 2001:1:1:3:fcfd:ff:fe00:401 lifetime = 0, delay = 420000 flags:
- And in the ha's mip6 daemon:
mh_bu_parse: Binding Update Received tunnel_mod: modifying tunnel 8 end points with from 2001:1:1:1:fcfd:ff:fe00:201 to 2001:1:1:1:fcfd:ff:fe00:101 __tunnel_mod: modified tunnel iface ip6tnl1 (8)from 2001:1:1:1:fcfd:ff:fe00:201 to 2001:1:1:1:fcfd:ff:fe00:101 __tunnel_del: tunnel ip6tnl1 (8) from 2001:1:1:1:fcfd:ff:fe00:201 to 2001:1:1:1:fcfd:ff:fe00:101 user count decreased to 0 __tunnel_del: tunnel deleted mh_send_ba: status 0 mh_send: sending MH type 6 from 2001:1:1:1:fcfd:ff:fe00:201 to 2001:1:1:1:fcfd:ff:fe00:101
- And in the cn's mip6 daemon:
mh_bu_parse: Binding Update Received mh_bu_parse: src 2001:1:1:1:fcfd:ff:fe00:101 mh_bu_parse: coa 2001:1:1:1:fcfd:ff:fe00:101
- When turning down eth2, in the mn's mip6 daemon:
md_expire_router: expiring router fe80:0:0:0:fcfd:ff:fe00:302 on iface eth2 (2)
- Now, when ping6 is done again from the cn to the mn's home interface, no messages are shown in the mip6 daemons.
- When turning up eth1, in the mn's virtual machine appears the following message:
eth1: duplicate address detected!
- This is because eth2 is still up and it has the same home address.
Stop the Ethereal capture in Net2 and save the file with the name eth2_down.cap. Analyze the packets that are sent as the result of turning down the interface.
Make ping6 from cn to the Mobile Node's home address (mn1).
Stop the Ethereal capture in Net0 and save the file with the name bu_home.cap. Analyze the packets that are sent as the result of turning up the interface eth1, turning down eth2 and making ping6 to the Mobile Node's home address.
9. Releasing the scenario
To stop the scenario type in the host:
vnumlparser.pl -P mip6.xml -v -u root
This will close the shell of the virtual machines. Those that were additionally opened using ssh from the host will still remain, and you will need to close them manually.
10. References
- [1] http://www.ietf.org/rfc/rfc2460.txt
- [2] http://www.rfc-editor.org/rfc/rfc3775.txt
- [3] http://www.ethereal.com
- [4] http://linuxreviews.org/man/radvd.conf/
- [5] http://www.dit.upm.es/vnuml
- [6] http://www.mobile-ipv6.org/software/ link mipv6-2.0.2.tar.gz in the latest user space.
- [7] http://www.juniper.net/techpubs/software/erx/junose72/swconfig-multicast-routing/html/ipv6-MLD-config2.html