Mip6-enunciado

De EDUC@REDES
Revisión del 23:57 26 oct 2011 de David (discusión | contribuciones) (Página creada con '===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 u...')
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

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.


Mip6 Fig1.jpg

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.


Archivo:Mip62v2.jpg

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