Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
51
Добавлен:
11.04.2015
Размер:
22.9 Mб
Скачать

238Understanding IPv6, Second Edition

Table 10-2 Example Routing Table Entries

Route (by prefix)

Description

fd5e:2aa9:b3e:3f48:1b9:88d1:

Host route for a unique local unicast address assigned to the Local

cf98:fcaf/128

Area Connection interface.

 

 

fd5e:2aa9:b3e:3f48:b500:734b:

Host route for another unique local unicast address assigned to

fe5b:3945/128

the Local Area Connection interface.

 

 

fe80::/64

Route for the link-local address space.

 

 

fe80::5efe:10.0.0.2/128

Host route for a link-local unicast address assigned to the Local

 

Area Connection* 6 interface (ISATAP).

 

 

fe80::b500:734b:fe5b:3945/128

Host route for a link-local unicast address assigned to the Local

 

Area Connection interface.

 

 

ff00::/8

Routes for the multicast address space.

 

 

End-to-End IPv6 Delivery Process

The following sections describe the process of forwarding an IPv6 packet from the sending host, across one or more IPv6 routers, and its receipt at the final destination. This example assumes that the Hop-by-Hop Options, Destination Options, and Routing extension headers are not present.

IPv6 on the Sending Host

An IPv6 host uses the following algorithm when sending a packet to an arbitrary unicast destination address:

1.Set the Hop Limit field value to either a default or application-specified value.

2.Check the destination cache for an entry matching the destination address. For computers running Windows Server 2008 or Windows Vista, you can view the destination cache with the netsh interface ipv6 show destinationcache command.

3.If an entry matching the destination address is found in the destination cache, obtain the next-hop address and interface from the destination cache entry. Go to step 9.

4.If there is no source address for the packet, perform an unconstrained route lookup.

5.If there is a source address for the packet and strong host send behavior is enabled on the source interface, perform a constrained route lookup.

6.If there is a source address for the packet and strong host send behavior is disabled on the source interface, perform an unconstrained route lookup.

7.If there is a longest matching usable route, determine the next-hop interface and address used for forwarding the packet from the route.

If there is not a longest matching usable route, indicate an error.

Chapter 10 IPv6 Routing

239

8.Update the destination cache.

9.Check the neighbor cache for an entry matching the next-hop address. For computers running Windows Server 2008 or Windows Vista, you can view the neighbor cache with the netsh interface ipv6 show neighbors command.

10.If an entry matching the next-hop address is found in the neighbor cache, obtain the link-layer address. Go to step 12.

11.If an entry matching the next-hop address is not found in the neighbor cache, use address resolution to obtain the link-layer address for the next-hop address and add an entry to the neighbor cache.

If address resolution is not successful, indicate an error.

12.Send the packet using the link-layer address of the neighbor cache entry.

Note For unicast destination addresses that are assigned to the sending host, IPv6 skips steps 9 through 11.

Figure 10-1 shows the sending host process.

IPv6 on the Router

An IPv6 router uses the following algorithm when receiving and forwarding a packet to an arbitrary unicast or anycast destination:

1.Perform optional header error checks, such as ensuring that the Version field is set to 6 and that the source address is not the loopback address (::1) or a multicast address.

2.Verify whether the destination address in the IPv6 packet corresponds to an address assigned to a router interface.

If so, process the IPv6 packet as the destination host. (See step 3 in the “IPv6 on the Destination Host” section in this chapter.)

3.Decrement the value of the Hop Limit field by 1.

If the value of the Hop Limit field is less than 1, send an ICMPv6 Time Exceeded–Hop Limit Exceeded in Transit message to the sender and discard the packet.

4.If the value of the Hop Limit field is greater than 0, update the Hop Limit field in the IPv6 header of the packet.

5.Check the destination cache for an entry matching the destination address.

If an entry matching the destination address is found in the destination cache, obtain the next-hop interface and address from the destination cache entry. Go to step 9.

6.Check the local IPv6 routing table, and select the longest matching usable route to the destination IPv6 address with the lowest metric.

240 Understanding IPv6, Second Edition

Set value of hop limit field.

Check destination cache for an entry matching the destination address.

Entry found

Yes

in destination

 

 

 

 

cache?

 

 

No

Is there a

source address No for the

packet?

 

Yes

 

 

Is strong

No

host send

 

 

behavior enabled

 

 

 

 

on the source

 

 

interface

 

 

?

 

 

 

Yes

 

 

 

 

 

Perform a constrained route lookup.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Check neighbor

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cache for an entry

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

matching the

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

next-hop address.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Obtain next-hop

 

 

 

 

 

 

Is next-hop

 

Yes

 

 

Send packet using

 

address from

 

 

 

 

 

 

address entry

 

 

 

link-layer address

 

destination cache

 

 

 

 

 

 

in neighbor

 

 

 

 

 

of neighbor

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cache entry.

 

entry.

 

 

 

 

 

 

 

cache?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Update destination

 

 

No

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cache.

 

 

 

 

Use address

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

resolution to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

determine the link-

 

 

 

 

 

Perform an

 

 

 

 

 

 

 

 

 

 

 

layer address of the

 

 

 

 

 

unconstrained

 

 

 

 

 

 

 

 

 

 

 

next-hop address.

 

 

 

 

 

route lookup.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Determine the next-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hop address and

 

 

 

 

 

 

Was address

 

 

 

 

 

 

 

 

 

interface from

 

 

 

 

 

 

 

resolution

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

the route.

 

 

 

 

 

 

successful?

Yes

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Update neighbor

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cache.

Is there a

 

Yes

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

longest matching

 

 

 

 

 

 

 

 

 

 

 

No

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

usable

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

route?

 

 

 

 

 

 

 

 

 

 

 

Indicate an error.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

No

Indicate an error.

Figure 10-1 The sending host process

7.Based on the selected route, determine the next-hop interface and address used for forwarding the packet.

If no route is found, send an ICMPv6 Destination Unreachable—No Route to Destination message to the sending host and discard the packet.

Chapter 10 IPv6 Routing

241

8.Update the destination cache.

9.If the interface on which the packet was received is the same as the interface on which the packet is being forwarded, the interface is a point-to-point link, and the Destination Address field matches a prefix assigned to the interface, send an ICMPv6 Destination Unreachable—Address Unreachable message to the sending host and discard the packet. This prevents the needless “ping-pong” forwarding of IPv6 packets between the two interfaces on a point-to-point link for a packet whose destination matches the prefix of the point-to-point link but does not match the address of either interface.

10.If the interface on which the packet was received is the same as the interface on which the packet is being forwarded, and the Source Address field matches a prefix assigned to the interface, send a Redirect message to the sending host.

11.Compare the link maximum transmission unit (MTU) of the next-hop interface to the size of the IPv6 packet being forwarded.

If the link MTU is smaller than the packet size, send an ICMPv6 Packet Too Big message to the sending host and discard the packet.

12.Check the neighbor cache for an entry matching the next-hop address.

13.If an entry matching the next-hop address is found in the neighbor cache, obtain the link-layer address. Go to step 15.

14.If an entry matching the next-hop address is not found in the neighbor cache, use address resolution to obtain the link-layer address for the next-hop address and add an entry to the neighbor cache.

If address resolution is not successful, send an ICMPv6 Destination Unreachable— Address Unreachable message to the sending host and discard the packet.

15.Send the packet with the link-layer address of the neighbor cache entry.

Figures 10-2 and 10-3 show the router forwarding process.

This entire process is repeated at each router in the path between the source and destination hosts.

IPv6 on the Destination Host

An IPv6 host uses the following algorithm when receiving an IPv6 packet:

1.Perform optional header error checks, such as ensuring that the Version field is set to 6 and that the source address is not the loopback address (::1) or a multicast address.

2.Verify whether the destination address in the IPv6 packet corresponds to an IPv6 address assigned to a local host interface.

If the destination address is not assigned to a local host interface, silently discard the IPv6 packet.

242 Understanding IPv6, Second Edition

Check the destination address.

Is destination

Yes

 

Process packet

address assigned

 

as the

 

 

 

to the router?

 

 

destination.

No

Decrement Hop Limit

value by 1.

Is Hop

Yes

 

Update Hop

 

 

Limit field in

 

 

 

 

Limit > 0?

 

 

 

 

 

IPv6 header.

 

 

 

 

 

No

Send ICMPv6 Time

Exceeded-Hop Limit

Exceeded in Transit

message and

discard packet.

Check destination

 

cache for an entry

 

matching the

 

destination address.

A

Entry found

 

 

Obtain next-hop

 

Yes

 

address from

 

in destination

 

 

 

 

destination cache

 

cache?

 

 

 

 

 

entry.

 

 

 

 

 

 

 

 

 

 

No

Check routing table for longest matching route to the destination.

 

 

 

Send ICMPv6

Is there a

No

Destination

longest matching

Unreachable-No Route

 

 

 

 

route?

 

 

to Destination message

 

 

 

and discard packet.

 

 

 

 

Yes

Set the next-hop address to the next-

Update

hop address of

destination

the route.

cache.

Figure 10-2 Router forwarding process (part 1)

3.If the strong host model for received packets is enabled, verify that the receiving interface is assigned the destination address in the IPv6 packet. If the destination address in the IPv6 packet is not assigned to the receiving interface, silently discard the packet.

Computers running Windows Server 2008 or Windows Vista support the strong host model for received IPv6 packets by default. You can enable the weak host model for received IPv6 packets with the netsh interface ipv6 set interface InterfaceNameOrIndex weakhostreceive=enabled command.

4.Based on the Next Header field, process extension headers (if present).

5.Verify that the protocol for the value of the Next Header field exists.

If the protocol does not exist, send an ICMPv6 Parameter Problem—Unrecognized Next Header Type Encountered message back to the sender and discard the packet.

Chapter 10 IPv6 Routing

243

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Send ICMPv6

Is the packet

Yes

Destination

a ping-pong

Unreachable-Address

 

 

 

packet?

 

 

 

Unreachable message

 

 

 

 

 

and discard packet.

 

No

 

 

 

 

 

 

 

 

 

Does sender

Yes

 

 

 

Send ICMPv6

need to be

 

 

 

 

Redirect message.

redirected?

 

 

 

 

 

 

 

 

No

 

 

 

 

 

 

 

 

 

Is the

 

 

 

 

link MTU of

 

 

 

 

Yes

 

Send ICMPv6 Packet

the next-hop

 

 

Too Big message and

interface less than

 

 

 

 

 

 

discard packet.

the size of the

 

 

 

packet?

 

 

 

 

No

Figure 10-3 Router forwarding process (part 2)

Is next-hop

 

 

Send packet using

Yes

 

link-layer address

address entry in

 

 

 

of neighbor

neighbor

 

 

 

 

cache entry.

cache?

 

 

 

 

 

 

No

Use address resolution to determine the linklayer address of the next-hop address.

Was address

Yes

Update neighbor

resolution

 

 

cache.

successful?

 

 

 

 

 

No

Send ICMPv6

Destination

Unreachable-Address Unreachable message and discard packet.

6.If the upper-layer protocol data unit (PDU) is not a Transmission Control Protocol (TCP) segment or User Datagram Protocol (UDP) message, pass the upper-layer PDU to the appropriate protocol.

7.If the upper-layer PDU is a TCP segment or UDP message, check the destination port.

If no application exists for the UDP port number, send an ICMPv6 Destination Unreachable–Port Unreachable message back to the sender and discard the packet. If no application exists for the TCP port number, send a TCP Connection Reset segment back to the sender and discard the packet.

8.If an application exists for the UDP or TCP destination port, process the contents of the TCP segment or UDP message.

Figure 10-4 shows the receiving host process.

Receive the packet.

Is destination address assigned to a local interface?

Yes

Is strong host receive behavior enabled?

Yes

Was the

packet received on the interface assigned the destination address?

No

Silently discard the packet.

No

 

Silently discard

 

 

the packet.

 

 

 

 

 

No

 

Process extension

 

 

 

headers (if present).

 

 

 

 

 

 

 

 

Yes

Does the

 

Send ICMPv6 Parameter

protocol for the

No

Problem-Unrecognized

next header field

 

Next Header Type

 

value exist?

 

Encountered message

 

 

 

and discard the packet.

 

Yes

 

 

 

 

 

 

 

 

 

Is the upper-

 

Is there an

 

Yes

application listening

No

layer PDU a UDP

 

on the destination

 

 

 

message?

 

 

 

UDP port?

 

 

 

 

 

 

No

 

 

Yes

 

 

 

 

Is the upper-

 

Is there an

 

Yes

application listening

Yes

layer PDU a TCP

 

on the destination

 

 

 

segment?

 

 

 

TCP port?

 

 

 

 

 

 

No

 

 

No

 

 

 

 

 

Pass upper-layer PDU to

 

Send TCP Connection

 

upper-layer protocol.

 

Reset segment.

 

Send ICMPv6 Destination

Unreachable-Port Unreachable message and discard the packet.

Process contents.

Edition Second IPv6, Understanding 244

Figure 10-4 Receiving host process

Соседние файлы в папке Lecture 2_10