TSHOOT – Part III, Dist-layer

tshoot-distlayer

Tar och bygger vidare på vårat tshoot-nät med Distribution-layer den här gången. Vi behöver bl.a. konfa upp EIGRP<->OSPF & RIP_NG <->OSPFv3 redistrubution.

Men först måste vi givetvis fixa L2/L3-konfig.. Tyvärr är just switch-funktionen i GNS3 väldigt begränsad (använder endast NM-16ESW-kort i 3640s), så våra port-channel nummer kommer inte stämma överens. Det finns inte heller möjlighet att skapa en L3-channel mellan DSW1 & DSW2 så här blir det endast en port som kommer användas.

Basic L3

R4

R4(config)#inte fa0/0
R4(config-if)#ip add 10.1.4.5 255.255.255.252
R4(config-if)#descrip to DSW1
R4(config-if)#no shut
R4(config-if)#ipv6 add 2026::2:1/122
R4(config-if)#inte fa0/1
R4(config-if)#ip add 10.1.4.9 255.255.255.252
R4(config-if)#desc to DSW2
R4(config-if)#no shut

DSW1

DSW1(config)#ip routing
DSW1(config)#ipv6 unicast-routing
DSW1(config)#int fa0/0
DSW1(config-if)#ip add 10.1.4.6 255.255.255.252
DSW1(config-if)#descrip to R4
DSW1(config-if)#no shut
DSW1(config-if)#ipv6 add 2026::2:2/122
DSW1(config)#int range fa1/13 - 14
DSW1(config-if-range)#descrip L3 Etherchannel to DSW2
DSW1(config-if-range)#no switchport
DSW1(config-if-range)#shut
DSW1(config-if-range)#
DSW1(config-if-range)#inte fa1/13
DSW1(config-if)#ip add 10.2.4.13 255.255.255.252
DSW1(config-if)#ipv6 add 2026::3:1/122
DSW1(config-if)#no shut

DSW2

DSW2(config)#ip routing
DSW2(config)#ipv6 uni
DSW2(config)#ipv6 unicast-routing
DSW2(config)#inte fa0/0
DSW2(config-if)#ip add 10.1.4.10 255.255.255.252
DSW2(config-if)#descrip to R4
DSW2(config-if)#no shut
DSW2(config-if)#int range fa1/13 - 14
DSW2(config-if-range)#descrip L3 Etherchannel to DSW1
DSW2(config-if-range)#no switchport
DSW2(config-if-range)#shut
DSW2(config-if-range)#inte fa1/13
DSW2(config-if)#ip add 10.2.4.14 255.255.255.252
DSW2(config-if)#no shut
DSW2(config-if)#ipv6 add 2026::3:2/122
DSW2(config-if)#exit

EIGRP

R4

R4(config)#router eigrp 10
R4(config-router)#no auto
R4(config-router)#no auto-summary
R4(config-router)#passive-
R4(config-router)#passive-interface default
R4(config-router)#no passive
R4(config-router)#no passive-interface fa0/0
R4(config-router)#no passive-interface fa0/1
R4(config-router)#network 10.1.4.4 0.0.0.3
R4(config-router)#network 10.1.4.8 0.0.0.3

DSW1

DSW1(config)#router eigrp 10
DSW1(config-router)#no auto-summary
DSW1(config-router)#passive-interface default
DSW1(config-router)#no passive-interface fa0/0
DSW1(config-router)#no passive-interface fa1/13
DSW1(config-router)#network 10.1.4.4 0.0.0.3
DSW1(config-router)#network 10.2.4.12 0.0.0.3

DSW2

DSW2(config)#router eigrp 10
DSW2(config-router)#no auto-summary
DSW2(config-router)#passive-interface default
DSW2(config-router)#no passive-interface fa0/0
DSW2(config-router)#no passive-interface fa1/13
DSW2(config-router)#network 10.1.4.8 0.0.0.3
DSW2(config-router)#network 10.2.4.12 0.0.0.3

RIPng

R4

R4(config-router)#inte fa0/0
R4(config-if)#ipv6 rip RIP_ZONE enable
R4(config-if)#int fa0/1
R4(config-if)#ipv6 rip RIP_ZONE enable

DSW1

DSW1(config)#inte fa0/0
DSW1(config-if)#ipv6 rip RIP_ZONE enable
DSW1(config)#int fa1/13
DSW1(config-if)#ipv6 rip RIP_ZONE enable

DSW2

DSW2(config)#inte fa0/0
DSW2(config-if)#ipv6 rip RIP_ZONE enable
DSW2(config)#int fa1/13
DSW2(config-if)#ipv6 rip RIP_ZONE enable

Redistribution

Då vi inte har multipoint-redistribution behöver vi inte använda oss av route-maps/tags i det här fallet.

R4(config)#router eigrp 10
R4(config-router)#redistribute ospf 1 metric 1500 1 255 1 1500
R4(config-router)#router ospf 1
R4(config-router)#redistribute eigrp 10 subnets
R4(config)#ipv6 router ospf 6
R4(config-rtr)#redistribute rip RIP_ZONE include-connected metric 20
R4(config)#ipv6 router rip RIP_ZONE
R4(config-rtr)#redistribute ospf 6 metric 5 include-connected

Verifiering

DSW2#sh ipv6 rip database
RIP process "RIP_ZONE", local RIB
 2026::2:0/122, metric 2, installed
 FastEthernet1/13/FE80::CE03:13FF:FE54:F10D, expires in 165 secs
 2026::3:0/122, metric 2
 FastEthernet1/13/FE80::CE03:13FF:FE54:F10D, expires in 165 secs
 2026::34:0/122, metric 7, installed
 FastEthernet1/13/FE80::CE03:13FF:FE54:F10D, expires in 165 secs
 ::/0, metric 7, installed
 FastEthernet1/13/FE80::CE03:13FF:FE54:F10D, expires in 165 secs

Ping till R1 från DSW2

DSW2#ping ipv6 2026::12:1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2026::12:1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 136/160/200 ms
DSW2#ping 10.1.1.1
Translating "10.1.1.1"
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 52/111/192 ms

Vackert!

En trace till webservern fungerar dock ej:

DSW2#traceroute 209.65.200.241 Translating "209.65.200.241"
Type escape sequence to abort.
 Tracing the route to 209.65.200.241
1 10.1.4.9 16 msec 48 msec 48 msec
 2 10.1.1.9 108 msec 48 msec 44 msec
 3 10.1.1.5 40 msec 80 msec 84 msec
 4 10.1.1.1 140 msec 108 msec 156 msec
 5 * * *

Detta beror helt enkelt på att vi inte konfigurerat upp någon NAT ännu i R1 så trafiken hittar inte tillbaka. Det fixar vi imorgon tillsammans med DHCP-tjänsten & access-layer. 🙂

TSHOOT – Part II, Frame-Relay, IPv6 & OSPF

tshoot-ospf

Frame-Relay är min överlägset svagaste sida så det här är verkligen välkommen repetition. Innan vi börjar med OSPF etc så lär vi först fixa basic L2-connectivity.

Frame-Relay IPv4

R1

R1(config)#interface s1/0
 R1(config-if)#encapsulation frame-relay
 R1(config-if)#no shut
 R1(config-if)#
 R1(config-if)#interface s1/0.12 point-to-point
 R1(config-subif)#ip add 10.1.1.1 255.255.255.252
 R1(config-subif)#frame-relay interface-dlci 102
 R1(config-fr-dlci)#desc to R2

R2

R2(config)#interface s1/0
 R2(config-if)#encapsulation frame-relay
 R2(config-if)#no shut
 R2(config-if)#
 R2(config-if)#interface serial 1/0.21 point-to-point
 R2(config-subif)#ip add 10.1.1.2 255.255.255.252
 R2(config-subif)#desc to R1
 R2(config-subif)#frame-relay interface-dlci 201
 R2(config-fr-dlci)#
 R2(config-fr-dlci)#interface serial 1/0.23 point-to-point
 R2(config-subif)#ip add 10.1.1.5 255.255.255.252
 R2(config-subif)#desc to R3
 R2(config-subif)#frame-relay interface-dlci 203
 R2(config-fr-dlci)#end

R3

R3(config)#interface s1/0
 R3(config-if)#encapsulation frame-relay
 R3(config-if)#no shut
 R3(config-if)#
 R3(config-if)#interface serial 1/0.32 point-to-point
 R3(config-subif)#ip add 10.1.1.6 255.255.255.252
 R3(config-subif)#frame-relay interface-dlci 302
 R3(config-fr-dlci)#
 R3(config-fr-dlci)#interface serial 1/0.34 point-to-point
 R3(config-subif)#ip add 10.1.1.9 255.255.255.252
 R3(config-subif)#frame-relay interface-dlci 304
 R3(config-fr-dlci)#

R4

R4(config)#interface s1/0
 R4(config-if)#encapsulation frame-relay
 R4(config-if)#no shut
 R4(config-if)#
 R4(config-if)#interface serial 1/0.43 point-to-point
 R4(config-subif)#ip add 10.1.1.10 255.255.255.252
 R4(config-subif)#desc to R3
 R4(config-subif)#frame-relay interface-dlci 403

Frame-Relay IPv6

R1

R1(config)#ipv6 unicast-routing
 R1(config)#int s1/0.12 point-to-point
 R1(config-subif)#ipv6 add 2026::12:1/122

R2

R2(config)#ipv6 unicast-routing
 R2(config)#interface s1/0.21 point-to-point
 R2(config-subif)#ipv6 add 2026::12:2/122
R2(config-subif)#interface s1/0.23 point-to-point
 R2(config-subif)#ipv6 add 2026::1:1/122
 R2(config-subif)#end

R3

R3(config)#ipv6 unicast-routing
 R3(config)#interface s1/0.32 point-to-point
 R3(config-subif)#ipv6 add 2026::1:2/122
 R3(config-subif)#end

Mellan R3 & R4 ska vi enligt skissen istället ha en GRE-tunnel. Se tidigare inlägg här för mer info om hur vi sätter upp statiska/6to4/ISATAP-IPv6 tunnlar.

R3

R3(config)#interface Tunnel0
 R3(config-if)#ipv6 address 2026::34:1/122
 R3(config-if)#tunnel source s1/0.34
 R3(config-if)#tunnel destination 10.1.1.10
 R3(config-if)#tunnel mode ipv6ip

R4

R4(config)#ipv6 unicast-routing
 R4(config)#interface Tunnel0
 R4(config-if)#ipv6 address 2026::34:2/122
 R4(config-if)#tunnel source s1/0.43
 R4(config-if)#tunnel destination 10.1.1.9
 R4(config-if)#tunnel mode ipv6ip

OSPFv2

Inget avancerat här direkt, glöm bara inte att annonsera default-routen från R1 till övriga (default-information originate).

R1

R1(config)#router ospf 1
 R1(config-router)#router-id 1.1.1.1
 R1(config-router)#network 10.1.1.0 0.0.0.3 area 12
 R1(config-router)#default-information originate

R2

R2(config)#router ospf 1
 R2(config-router)#router-id 2.2.2.2
 R2(config-router)#network 10.1.1.0 0.0.0.3 area 12
 R2(config-router)#network 10.1.1.4 0.0.0.3 area 0

R3 – Kom ihåg “Totally Not-so-stubby” för area 34!

R3(config)#router ospf 1
 R3(config-router)#router-id 3.3.3.3
 R3(config-router)#network 10.1.1.4 0.0.0.3 area 0
 R3(config-router)#network 10.1.1.8 0.0.0.3 area 34
 R3(config-router)#area 34 nssa no-summary

R4

R4(config)#router ospf 1
 R4(config-router)#router-id 4.4.4.4
 R4(config-router)#network 10.1.1.8 0.0.0.3 area 34
 R4(config-router)#area 34 nssa

OSPFv3

R1

R1(config-rtr)#interface Serial1/0.12 point-to-point
R1(config-subif)# ipv6 ospf 6 area 12

R2

R2(config)#interface Serial1/0.21 point-to-point
R2(config-subif)# ipv6 ospf 6 area 12
R2(config-subif)#interface Serial1/0.23 point-to-point
R2(config-subif)# ipv6 ospf 6 area 0

R3

R3(config)#ipv6 router ospf 6
R3(config-rtr)#area 34 nssa no-summary
R3(config-rtr)#exit
R3(config)#interface Serial1/0.32 point-to-point
R3(config-subif)#ipv6 ospf 6 area 0
R3(config)#interface Tunnel0
R3(config-if)# ipv6 ospf 6 area 34

R4

R4(config)#ipv6 router ospf 6
 R4(config-rtr)#area 34 nssa
 R4(config-rtr)#exit
 R4(config)#interface Tunnel0
 R4(config-if)# ipv6 ospf 6 area 34

Verifiering

En hel del adresser att testa så enklast är att göra ett TCL-script istället.

R1#tclsh
 R1(tcl)#tclsh
R1(tcl)#foreach address {
 +>(tcl)#209.65.200.241
 +>(tcl)#209.65.200.242
 +>(tcl)#209.65.200.226
 +>(tcl)#209.65.200.225
 +>(tcl)#10.1.1.1
 +>(tcl)#10.1.1.2
 +>(tcl)#10.1.1.5
 +>(tcl)#10.1.1.6
 +>(tcl)#10.1.1.9
 +>(tcl)#10.1.1.10
 +>(tcl)#2026::12:1
 +>(tcl)#2026::12:2
 +>(tcl)#2026::1:1
 +>(tcl)#2026::1:2
 +>(tcl)#2026::34:1
 +>(tcl)#2026::34:2
 +>(tcl)#} { ping $address re 3 }
 Translating "209.65.200.241"
Type escape sequence to abort.
 Sending 3, 100-byte ICMP Echos to 209.65.200.241, timeout is 2 seconds:
 ..!
 Success rate is 33 percent (1/3), round-trip min/avg/max = 136/136/136 ms
 Translating "209.65.200.242"
Type escape sequence to abort.
 Sending 3, 100-byte ICMP Echos to 209.65.200.242, timeout is 2 seconds:
 !!!
 Success rate is 100 percent (3/3), round-trip min/avg/max = 16/34/60 ms
 Translating "209.65.200.226"
Type escape sequence to abort.
 Sending 3, 100-byte ICMP Echos to 209.65.200.226, timeout is 2 seconds:
 !!!
 Success rate is 100 percent (3/3), round-trip min/avg/max = 20/32/44 ms
 Translating "209.65.200.225"
Type escape sequence to abort.
 Sending 3, 100-byte ICMP Echos to 209.65.200.225, timeout is 2 seconds:
 ...
 Success rate is 0 percent (0/3)
 Translating "10.1.1.1"
Type escape sequence to abort.
 Sending 3, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:
 !!!
 Success rate is 100 percent (3/3), round-trip min/avg/max = 28/58/76 ms
 Translating "10.1.1.2"
Type escape sequence to abort.
 Sending 3, 100-byte ICMP Echos to 10.1.1.2, timeout is 2 seconds:
 !!!
 Success rate is 100 percent (3/3), round-trip min/avg/max = 28/34/48 ms
 Translating "10.1.1.5"
Type escape sequence to abort.
 Sending 3, 100-byte ICMP Echos to 10.1.1.5, timeout is 2 seconds:
 !!!
 Success rate is 100 percent (3/3), round-trip min/avg/max = 8/38/76 ms
 Translating "10.1.1.6"
Type escape sequence to abort.
 Sending 3, 100-byte ICMP Echos to 10.1.1.6, timeout is 2 seconds:
 !!!
 Success rate is 100 percent (3/3), round-trip min/avg/max = 60/89/112 ms
 Translating "10.1.1.9"
Type escape sequence to abort.
 Sending 3, 100-byte ICMP Echos to 10.1.1.9, timeout is 2 seconds:
 !!!
 Success rate is 100 percent (3/3), round-trip min/avg/max = 36/64/92 ms
 Translating "10.1.1.10"
Type escape sequence to abort.
 Sending 3, 100-byte ICMP Echos to 10.1.1.10, timeout is 2 seconds:
 !!!
 Success rate is 100 percent (3/3), round-trip min/avg/max = 92/118/152 ms
 Type escape sequence to abort.
 Sending 3, 100-byte ICMP Echos to 2026::12:1, timeout is 2 seconds:
 !!!
 Success rate is 100 percent (3/3), round-trip min/avg/max = 0/1/4 ms
 Type escape sequence to abort.
 Sending 3, 100-byte ICMP Echos to 2026::12:2, timeout is 2 seconds:
 !!!
 Success rate is 100 percent (3/3), round-trip min/avg/max = 8/46/84 ms
 Type escape sequence to abort.
 Sending 3, 100-byte ICMP Echos to 2026::1:1, timeout is 2 seconds:
 !!!
 Success rate is 100 percent (3/3), round-trip min/avg/max = 16/25/36 ms
 Type escape sequence to abort.
 Sending 3, 100-byte ICMP Echos to 2026::1:2, timeout is 2 seconds:
 !!!
 Success rate is 100 percent (3/3), round-trip min/avg/max = 44/70/88 ms
 Type escape sequence to abort.
 Sending 3, 100-byte ICMP Echos to 2026::34:1, timeout is 2 seconds:
 !!!
 Success rate is 100 percent (3/3), round-trip min/avg/max = 24/52/68 ms
 Type escape sequence to abort.
 Sending 3, 100-byte ICMP Echos to 2026::34:2, timeout is 2 seconds:
 !!!
 Success rate is 100 percent (3/3), round-trip min/avg/max = 84/112/160 ms
 R1(tcl)#tclquit
 R1#ping 2026::34:2
Type escape sequence to abort.
 Sending 5, 100-byte ICMP Echos to 2026::34:2, timeout is 2 seconds:
 !!!!!
 Success rate is 100 percent (5/5), round-trip min/avg/max = 36/100/160 ms
 R1#ping ipv6 2026::34:2
Type escape sequence to abort.
 Sending 5, 100-byte ICMP Echos to 2026::34:2, timeout is 2 seconds:
 !!!!!
 Success rate is 100 percent (5/5), round-trip min/avg/max = 60/80/104 ms
 R1#ping 2026::34:1
Type escape sequence to abort.
 Sending 5, 100-byte ICMP Echos to 2026::34:1, timeout is 2 seconds:
 !!!!!
 Success rate is 100 percent (5/5), round-trip min/avg/max = 40/56/76 ms

IPv6 – Static, 6to4 & ISATAP Tunnels

Har haft lite för mycket att göra senaste dagarna för att skriva en post om detta, nöjer mig istället med en video som förklarar konceptet väldigt bra och enklare konfig-exempel:

https://www.youtube.com/watch?v=JY7INWIcqvk

Topologi:

ipv6-tunnels

Static MCT

  • Point-to-point
  • RFC 4213
  • “Manually-Configured-Tunnels”
  • 20 bytes overhead
  • Genererar Link-local adress för tunneln med ett FE80::/96 prefix, varav sista 32 bitarna tas från IPv4 source-adressen

Exempel: IPv4 10.9.9.1 -> Hex 0A09:0901 -> IPv6 Link-local FE80::A09:901

R5

ipv6 unicast-routing
interface lo0
 ipv6 address 2001:DB8:CC1E:100::1/64
 ipv6 eigrp 1
interface Tunnel0
 ipv6 address 2001:DB8:CC1E:500::1/64
 ipv6 eigrp 1
 tunnel source Loopback0
 tunnel destination 6.6.6.6
 tunnel mode ipv6ip
ipv6 router eigrp 1
 no shutdown

R6

ipv6 unicast-routing
interface lo0
 ipv6 address 2001:DB8:CC1E:200::1/64
 ipv6 eigrp 1
interface Tunnel0
 ipv6 address 2001:DB8:CC1E:500::2/64
 ipv6 eigrp 1
 tunnel source Loopback0
 tunnel destination 5.5.5.5
 tunnel mode ipv6ip
ipv6 router eigrp 1
 no shutdown

Verifiering

R6#sh ipv6 interface tunnel0
Tunnel0 is up, line protocol is up
 IPv6 is enabled, link-local address is FE80::606:606
IPv4 6.6.6.6 -> Hex 0606:0606 -> FE80::606:606

R6#sh int tu0
Tunnel0 is up, line protocol is up
Hardware is Tunnel
MTU 1514 bytes, BW 9 Kbit/sec, DLY 500000 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation TUNNEL, loopback not set
Keepalive not set
Tunnel source 6.6.6.6 (Loopback0), destination 5.5.5.5
Tunnel protocol/transport IPv6/IP
  Tunnel TTL 255
  Fast tunneling enabled
  Tunnel transmit bandwidth 8000 (kbps)
  Tunnel receive bandwidth 8000 (kbps)
  Last input 00:00:03, output 00:00:02, output hang never
  Last clearing of "show interface" counters never
  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
  Queueing strategy: fifo
  Output queue: 0/0 (size/max)
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
     280 packets input, 33744 bytes, 0 no buffer
     Received 0 broadcasts, 0 runts, 0 giants, 0 throttles
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
     273 packets output, 27464 bytes, 0 underruns
     0 output errors, 0 collisions, 0 interface resets
     0 unknown protocol drops
     0 output buffer failures, 0 output buffers swapped out

R5#ping ipv6 2001:db8:cc1e:200::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:DB8:CC1E:200::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 140/499/780 ms
R5#sh ipv6 eigrp neighbor
IPv6-EIGRP neighbors for process 1
H Address Interface Hold Uptime SRTT RTO Q Seq
 (sec) (ms) Cnt Num
0 Link-local address: Tu0 13 00:05:16 417 5000 0 3
 FE80::606:606

Static GRE

  • Point-to-Point
  • RFC 2784
  • Lägger till ytterligare 4 bytes till overhead (24b, Max MTU 1476)
  • Tillåter att vi använder ett flertal protokoll över tunneln (inte bara IPv6)
  • Default-encapsulering i Ciscos IOS
  • Genererar en link-local adress på samma sätt som ett serial-interface (Tar Eth-if + EUI-64)
R5#sh ipv6 int tunnel0
Tunnel0 is up, line protocol is up
 IPv6 is enabled, link-local address is FE80::C004:BFF:FEB4:0
R5#sh int fa0/0
FastEthernet0/0 is up, line protocol is up 
 Hardware is Gt96k FE, address is c204.0bb4.0000 (bia c204.0bb4.0000)

Det enda som skiljer sig från att konfigurera en MCT-tunnel är kommandot:

no tunnel mode ipv6ip
tunnel mode gre ip

I övrigt är all konfig identisk.

6to4

  • Point-To-Multipoint
  • RFC 3056
  • Stödjer ej IGPs utan kräver användandet av BGP eller Statiska routes
  • 2002::/16 reserverat för intern användning
  • Genererar Link-local adress för tunneln med ett FE80::/96 prefix, varav sista 32 bitarna tas från IPv4 source-adressen på samma sätt som vid MCT
  • Rekommenderar användandet av /48-prefix per site, /64-prefix per subnät
  • Använd IPv4-adressen för 2 & 3 “quartet” / 17-48 bits;

Exempel:

2002 (prefix) : AABB : CCDD (ipv4-add) : subnet :: /64

IPv4 10.9.9.1 ->Hex 0A09:0901
6to4 adress – > 2002:0A09:0901::/48

Site-links -> 2002:0A09:0901:0::/64
Site 1 -> 2002:0A09:0901:1::/64
Site 2 -> 2002:0A09:0901:2::/64
Site 3 -> 2002:0A09:0901:3::/64

ipv6-6to4tunnel

IPv4 är redan konfigurerat enligt ovanstående bild med full BGP-peering mellan samtliga AS. R5 annonserar 5.5.5.0/24 prefixet, R6 annonserar 6.6.6.0/24 och R7 annonserar 7.7.7.0/24.

R5#sh ip bgp
BGP table version is 9, local router ID is 200.0.3.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
 r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 5.5.5.0/24 0.0.0.0 0 32768 i
*> 6.6.6.0/24 172.16.51.1 0 500 200 i
*> 7.7.7.0/24 172.16.51.1 0 500 50 i

R5

IPv4 5.5.5.5 -> Hex 0505:0505 -> 2002:505:505::/48

ipv6 unicast-routing
interface lo0
 ipv6 address 2002:505:505::5/64

interface Tunnel0
 ipv6 unnumbered Loopback0
 tunnel source Loopback0
 tunnel mode ipv6ip 6to4
ipv6 route 2002::/16 Tunnel0

R6

IPv4 6.6.6.6-> Hex 0606:0606 -> 2002:606:606::/48

ipv6 unicast-routing
interface lo0
 ipv6 address 2002:606:606::6/64

interface Tunnel0
 ipv6 unnumbered Loopback0
 tunnel source Loopback0
 tunnel mode ipv6ip 6to4
ipv6 route 2002::/16 Tunnel0

R7

IPv4 7.7.7.7 -> Hex 0707:0707 -> 2002:707:707::/48

ipv6 unicast-routing
interface lo0
 ipv6 address 2002:707:707::7/64

interface Tunnel0
 ipv6 unnumbered Loopback0
 tunnel source Loopback0
 tunnel mode ipv6ip 6to4
ipv6 route 2002::/16 Tunnel0

Verifiering

R5(tcl)#foreach ip { 
+>(tcl)#2002:505:505::5 
+>(tcl)#2002:606:606::6 
+>(tcl)#2002:707:707::7 
+>(tcl)#} { ping $ip source lo0 repeat 2 timeout 1 }
Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 2002:505:505::5, timeout is 1 seconds:
Packet sent with a source address of 2002:505:505::5
!!
Success rate is 100 percent (2/2), round-trip min/avg/max = 0/0/0 ms
Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 2002:606:606::6, timeout is 1 seconds:
Packet sent with a source address of 2002:505:505::5
!!
Success rate is 100 percent (2/2), round-trip min/avg/max = 124/126/128 ms
Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 2002:707:707::7, timeout is 1 seconds:
Packet sent with a source address of 2002:505:505::5
!!
Success rate is 100 percent (2/2), round-trip min/avg/max = 124/216/308 ms
R5#sh int tunnel0
Tunnel0 is up, line protocol is up 
 Hardware is Tunnel
 MTU 1514 bytes, BW 9 Kbit/sec, DLY 500000 usec, 
 reliability 255/255, txload 1/255, rxload 1/255
 Encapsulation TUNNEL, loopback not set
 Keepalive not set
 Tunnel source 5.5.5.5 (Loopback0), destination UNKNOWN
 Tunnel protocol/transport IPv6 6to4
 Tunnel TTL 255
 Fast tunneling enabled
 Tunnel transmit bandwidth 8000 (kbps)
 Tunnel receive bandwidth 8000 (kbps)
 Last input 00:00:38, output 00:00:38, output hang never
 Last clearing of "show interface" counters never
 Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
 Queueing strategy: fifo
 Output queue: 0/0 (size/max)
 5 minute input rate 0 bits/sec, 0 packets/sec
 5 minute output rate 0 bits/sec, 0 packets/sec
 19 packets input, 2660 bytes, 0 no buffer
 Received 0 broadcasts, 0 runts, 0 giants, 0 throttles
 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
 24 packets output, 2784 bytes, 0 underruns
 0 output errors, 0 collisions, 0 interface resets
 0 unknown protocol drops
 0 output buffer failures, 0 output buffers swapped out
R5#sh ipv6 int tunnel0
Tunnel0 is up, line protocol is up
 IPv6 is enabled, link-local address is FE80::505:505

Det finns dock även möjlighet att använda “vanliga” global unicast ipv6-adresser för våra siter. Vi behöver då endast använda 2002::/16 för Tunnel-interfacen och sedan skapa en statisk route för varje nät, ex:

!till R6
ipv6 route 2001:db8:cc1e:600::/64 2002:606:606::
!till R7
ipv6 route 2001:db8:cc1e:700::/64 2002:707:707::

ISATAP

ISATAP har väldigt mycket gemensamt med 6to4, det som skiljer är:

  • Använder inget reserverat prefix
  • Använder vanligtvis ett prefix för samtliga tunnel-interface/samma subnät
  • Kräver att vi sätter upp en statisk route för varje enskild site
  • Vi kan antingen använda oss av EUI-64 (modifierad) eller manuellt konfigurera IPv6-adresseringen enligt samma uträkningssätt för våra tunnelinterface:

Ta det /64-prefix du vill använda, ex: 2001:db8:cc1e:100::/64 och lägg till 0000:5EFE till “quartets” 5 & 6 ->

2001:db8:cc1e:100:0000:5EFE;;, Ta sedan IPv4-adressen från tunnelns IPv4-source adress och konvertera till hex (ex. 10.9.9.1) ->

0A09:0901 -> ISATAP adress;

2001:db8:cc1e:100:0:5EFE:A09:901/64 – klart!

Om vi istället konfigurerar “ipv6 add 2001:db8:cc1e::/64 eui-64” på Tunnel-interfacet så gör routern denna uträkning åt oss. 🙂

Låt oss använda samma topologi men istället ta IPv6-prefixet 2001:db8:cc1e:500::/64 som länknät för våra tunnel-interface.

ipv6-6to4tunnel

R5

ipv6 unicast-routing
interface lo0
 ipv6 address 2002:505:505::5/64

interface Tunnel0
 ipv6 add 2001:db8:cc1e:500::/64 eui-64
 tunnel source Loopback0
 tunnel mode ipv6ip isatap

ipv6 route 2002:606:606::/48 2001:db8:cc1e:500:0:5EFE:606:606
ipv6 route 2002:707:707::/48 2001:db8:cc1e:500:0:5EFE:707:707

Vi kan verifiera att routern använt samma uträkningsformel för adressen på tunnel-interfacet:

R5#sh ipv6 int tunnel0 | sec Global
 Global unicast address(es):
 2001:DB8:CC1E:500:0:5EFE:505:505, subnet is 2001:DB8:CC1E:500::/64 [EUI]

Som synes måste vi även konfigurera next-hop för våra statiska routes, och kan inte bara peka på vårat tunnel-interface som vid 6to4. R6 har som bekant IPv4 6.6.6.6 -> Hex 0606:0606 -> ISATAP EUI-64 2001:db8:cc1e:0:5EFE:606:606,samma sak gäller för R7 (7.7.7.7).

R6

ipv6 unicast-routing
interface lo0
 ipv6 address 2002:606:606::6/64

interface Tunnel0
 ipv6 add 2001:db8:cc1e:500::/64 eui-64
 tunnel source Loopback0
 tunnel mode ipv6ip isatap

ipv6 route 2002:505:505::/48 2001:db8:cc1e:500:0:5EFE:505:505
ipv6 route 2002:707:707::/48 2001:db8:cc1e:500:0:5EFE:707:707

R7

ipv6 unicast-routing
interface lo0
 ipv6 address 2002:707:707::7/64

interface Tunnel0
 ipv6 add 2001:db8:cc1e:500::/64 eui-64
 tunnel source Loopback0
 tunnel mode ipv6ip isatap

ipv6 route 2002:505:505::/48 2001:db8:cc1e:500:0:5EFE:505:505
ipv6 route 2002:606:606::/48 2001:db8:cc1e:500:0:5EFE:606:606

Verifiering

R5(tcl)#foreach ip { 
+>(tcl)#2001:db8:cc1e:500:0:5EFE:505:505
+>(tcl)#2001:db8:cc1e:500:0:5EFE:606:606
+>(tcl)#2001:db8:cc1e:500:0:5EFE:707:707
+>(tcl)#2002:505:505::5
+>(tcl)#2002:606:606::6
+>(tcl)#2002:707:707::7
+>(tcl)#} { ping $ip source lo0 rep 2 timeout 1 }
Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 2001:DB8:CC1E:500:0:5EFE:505:505, timeout is 1 seconds:
Packet sent with a source address of 2002:505:505::5
!!
Success rate is 100 percent (2/2), round-trip min/avg/max = 0/2/4 ms
Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 2001:DB8:CC1E:500:0:5EFE:606:606, timeout is 1 seconds:
Packet sent with a source address of 2002:505:505::5
!!
Success rate is 100 percent (2/2), round-trip min/avg/max = 96/104/112 ms
Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 2001:DB8:CC1E:500:0:5EFE:707:707, timeout is 1 seconds:
Packet sent with a source address of 2002:505:505::5
!!
Success rate is 100 percent (2/2), round-trip min/avg/max = 72/88/104 ms
Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 2002:505:505::5, timeout is 1 seconds:
Packet sent with a source address of 2002:505:505::5
!!
Success rate is 100 percent (2/2), round-trip min/avg/max = 0/0/0 ms
Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 2002:606:606::6, timeout is 1 seconds:
Packet sent with a source address of 2002:505:505::5
!!
Success rate is 100 percent (2/2), round-trip min/avg/max = 96/114/132 ms
Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 2002:707:707::7, timeout is 1 seconds:
Packet sent with a source address of 2002:505:505::5
!!
Success rate is 100 percent (2/2), round-trip min/avg/max = 80/90/100 ms

Härligt! Måste erkänna att detta var riktigt jäkla knepigt att sätta sig in i, speciellt hur adresseringen av siterna ska gå till. Rekommenderar att labba upp detta många gånger för att få det att verkligen fastna! Funderar faktiskt på att åka till Stockholm och skriva CCNP Route nästa vecka. Men det innebär då att det blir till att nöta repetering av endast CCNP-materialet nu några dagar framöver, så de planerade posterna om IPv6 Anycast/Stateless autoconfig m.m. får vänta ett tag.

IPv6 – HSRP

Hot Standby Routing Protocol är ett Cisco proprietärt protokoll som erbjuder redundans genom användandet av en virtuell ip-adress som delas mellan routrar för att sedan användas som default-gateway. Denna video förklarar grunderna väldigt bra:

https://www.youtube.com/watch?v=kxhdPI1jh6I

Detta är dock som synes för IPv4, så funktionaliteten skiljer lite när vi använder oss av IPv6 istället. Något som jag själv inte kände till var att IPv6 faktiskt har en light-version av detta inbyggt i protokollet, och genom att modifiera timers för Router Advertisements & Neighbor Discoverys kan få “fail-over” tiden under 1 sekund. Packetlife.net har en väldigt läsvärd post om just detta här.

ipv6-hsrp

Vår host kommer ha sin default-gateway konfigurerad till FE80:CC1E:1, men innan den kan skicka paketen dit behöver den först ta reda på Lager 2-adressen (MAC). Då vi inte har ARP-requests i IPv6 skickas istället en “Neighbor Solicitation” över multicast till den L2-adress hosten TROR att FE80:CC1E;:1 har. Vi tog upp allt detta i en tidigare post om just Neighbor Solicitation här om du behöver friska upp minnet lite.

När vi konfigurerat upp HSRP kommer den aktiva routern att gå med i multicast-gruppen som relaterar till den virtuella adress vi konfigurerat. Den aktiva routern kommer då svara hosten med en tillhörande virtuell mac-adress (deriverad från HSRPs grupp-nummer).

Innan vi konfigurerat mer än grundkonfigen från ovanstående topologi så visar en show ipv6 int fa0/0 på R2 (mot SW1) följande:

FastEthernet0/0 is up, line protocol is up
 IPv6 is enabled, link-local address is FE80::2
 No Virtual link-local address(es):
 No global unicast address is configured
 Joined group address(es):
  FF02::1 <- all nodes
  FF02::2 <- all routers
  FF02::1:FF00:2 <- solicited-node

Hur konfar vi då upp HSRP? Enkelt! Vi gör det direkt på interfacet.

R2(config)#inte fa0/0
 R2(config-if)#standby ?
 <0-4095> group number
 authentication Authentication
 bfd Enable HSRP BFD
 delay HSRP initialisation delay
 follow Name of HSRP group to follow
 ip Enable HSRP IPv4 and set the virtual IP address
 ipv6 Enable HSRP IPv6
 mac-address Virtual MAC address
 mac-refresh Refresh MAC cache on switch by periodically sending packet
 from virtual mac address
 name Redundancy name string
 preempt Overthrow lower priority Active routers
 priority Priority level
 redirect Configure sending of ICMP Redirect messages with an HSRP
 virtual IP address as the gateway IP address
 timers Hello and hold timers
 track Priority tracking
 use-bia HSRP uses interface's burned in address
 version HSRP version

Vi har en hel del valmöjligheter för finjustering som synes, men för att få upp en enkel HSRP-session mellan R1 & R2 behövs endast följande:

R1

interface FastEthernet0/0
 standby version 2
 standby 1 ipv6 FE80:ccie::1
 standby 1 priority 101
 standby 1 preempt
*Mar  1 02:20:04.447: %HSRP-5-STATECHANGE: FastEthernet0/0 Grp 1 state Standby -> Active

R2

interface FastEthernet0/0
 standby version 2
 standby 1 ipv6 FE80:ccie::1
 standby 1 priority 99
 standby 1 preempt
*Mar  1 02:28:31.107: %HSRP-5-STATECHANGE: FastEthernet0/0 Grp 1 state Speak -> Standby

För att kunna använda HSRP tillsammans med IPv6 krävs det att vi aktiverar version 2 av protokollet (standby version 2). Vi kan även styra vilken router som ska vara aktiv genom att modifiera priority, högst värde vinner (default: 100), i detta fall kommer därför R1 bli aktiv. Om vi inte inkluderar kommandot “preempt” kommer sekundären fortsätta vara aktiv även om den primära routern blir nåbar igen vid ett eventuellt avbrott.

Både R1 & R2 kommer nu börja skicka HSRPv2 Hello-paket till multicast-adressen FF02::66.

R1 skickar dock sitt Hello-paket med state – Active

ipv6-hsrp-hello

R3 markerar istället sitt Hello-paket som state – standby

ipv6-hsrp-hello-standby

Om vi återigen tar en titt på R2s interface kan vi nu se att den gått med i ytterligare två multicast-grupper som förväntat:

R2#sh ipv6 int fa0/0
 FastEthernet0/0 is up, line protocol is up
 IPv6 is enabled, link-local address is FE80::2 [UNA]
 Virtual link-local address(es):
 FE80:CC1E::1 [OOD]
 No global unicast address is configured
 Joined group address(es):
 FF02::1
 FF02::2
 FF02::66 <- HSRP
 FF02::1:FF00:1 <- Solicited-node adress för FE80:CC1E::1
 FF02::1:FF00:2

Och för R3:

R3#sh ipv6 int fa0/0
 FastEthernet0/0 is up, line protocol is up
 IPv6 is enabled, link-local address is FE80::3 [UNA]
 Virtual link-local address(es):
 FE80:CC1E::1 [UNA/OOD/TEN]
 No global unicast address is configured
 Joined group address(es):
 FF02::1
 FF02::2
 FF02::66
 FF02::1:FF00:3

Observera att R3 endast gått med i HSRP-multicastgruppen, bara den aktiva routern går med i solicited-node gruppen (FF02::1:FF00:1)! 

Vi kan verifiera att allt är ok via kommandot show standby:

R2#sh standby 
FastEthernet0/0 - Group 1 (version 2)
 State is Active
 2 state changes, last state change 00:25:37
 Virtual IP address is FE80:CC1E::1
 Active virtual MAC address is 0005.73a0.0001
 Local virtual MAC address is 0005.73a0.0001 (v2 IPv6 default)
 Hello time 3 sec, hold time 10 sec
 Next hello sent in 1.756 secs
 Preemption enabled
 Active router is local
 Standby router is FE80::3, priority 99 (expires in 7.040 sec)
 Priority 101 (configured 101)
 Group name is "hsrp-Fa0/0-1" (default)

Vi sätter nu denna virtuella adress som default-gateway på R1:

R1(config)#ipv6 route ::/0 FastEthernet0/0 FE80:cc1e::1
R1(config)#end
R1#ping ipv6 2001:db8:cc1e:4444::4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:DB8:CC1E:4444::4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 40/56/92 ms

Vi stänger ner R2’s interface via shutdown och ser vad som händer..

R2 skickar ut ett HSRP Resign-paket för att informera om att den är på väg ner:

ipv6-hsrp-resign

R3 ser detta och ändrar state från Standby till Active.

*Mar  1 02:49:30.131: %HSRP-5-STATECHANGE: FastEthernet0/0 Grp 1 state Standby -> Active
R1#ping ipv6 2001:db8:cc1e:4444::4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:DB8:CC1E:4444::4, timeout is 2 seconds:
!.!.!
Success rate is 60 percent (3/5), round-trip min/avg/max = 12/32/52 ms

Anledningen till att vi tappar paket är bara för att jag varit lite lat. R4 har två default-routes som pekar mot R2 & R3, så vartannat paket skickas tillbaka till R2 och timar ut.. 😉

När vi återigen aktiverar interfacet på R2 skickas ett HSRP “Coup”-paket innehållande R2’s priority. R3 ser detta och ändrar sin state från Active -> Speak -> Standby, samtidigt som R2 går tillbaka till Active.

ipv6-hsrp-coup
*Mar 1 02:56:18.195: %HSRP-5-STATECHANGE: FastEthernet0/0 Grp 1 state Active -> Speak
*Mar 1 02:56:28.195: %HSRP-5-STATECHANGE: FastEthernet0/0 Grp 1 state Speak -> Standby

Om vi vill ge vår primära router lite tid att få “stabilisera” sig innan vi skickar över stafettpinnen igen kan vi konfigurera en delay-timer via kommandot:

R2(config-if)#standby 1 preempt delay minimum ?
 <0-3600> Number of seconds for minimum delay

Ytterligare en intressant sak är att efter vi aktiverat HSRP på ett interface så slutar routern annonsera sina övriga link-local prefix (FF80::2 / FF80::3) via Router Advertisement.

ipv6-hsrp-linklocal

Men konfigurerar vi istället ytterligare en global adress annonseras det:

R2(config-if)#ipv6 add 2001:db8:cc1e:999::1/64

ipv6-hsrp-globalRA

Det var allt jag hade om HSRP i IPv6, borde väl ta och sätta ihop en post som tar upp lite mer avancerade exempel för IPv4 men det får nog bli lite längre fram i tiden när vi är klara med IPv6.

IPv6 – BGP Dual stack

Dags för ett inlägg om implementering av BGP i IPv6. Detta ingår dock ej i CCIEs Blueprint så finns väl egentligen ingen anledning lära sig detta, men tycker ändå det var intressant så vi kör på.. 🙂

ipv6-bgp

Tänkte göra ett försök att konfigurera IPv6-dualstack i ovanstående topologi som vi använde i inlägget om iBGP & Transitareas.

IPv4-stacken är redan konfat, R5 annonserar prefixet 5.5.5.0/24 och R6 annonserar 6.6.6.0/24, AS500 används endast som en transit-area,

R5#sh ip bgp
BGP table version is 3, local router ID is 5.5.5.5
 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
 r RIB-failure, S Stale
 Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
 *> 5.5.5.0/24 0.0.0.0 0 32768 i
 *> 6.6.6.0/24 172.16.51.1 0 500 200 i
R6#sh ip bgp
 BGP table version is 3, local router ID is 6.6.6.6
 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
 r RIB-failure, S Stale
 Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
 *> 5.5.5.0/24 172.16.36.3 0 500 100 i
 *> 6.6.6.0/24 0.0.0.0 0 32768 i

Vi har full-mesh iBGP-peering inom AS500 och peerar mot Loopbacks & next-hop-self, För mer information om hur vi konfat upp detta se den tidigare posten om iBGP jag länkade till.

R5 – eBGP

Låt oss börja med R5:

ipv6 unicast-routing
 ipv6 route 2001:DB8:CC1E:100::/64 Null0
int fa0/0
 ipv6 address FE80::5 link-local
 ipv6 address 2001:DB8:CC1E:51::5/64
router bgp 100
 bgp router-id 5.5.5.5
 neighbor 2001:DB8:CC1E:51::1 remote-as 500

So far inget nytt, dock behöver vi även aktivera IPv6-funktionalitet i BGP-processen och annonsera vårat prefix. Observera att vi gick in i den vanliga bgp-processen, till skillnad mot ex. OSPF/EIGRP där vi skriver “ipv6 router ospf n”.

R5(config-router)#address-family ipv6
 R5(config-router-af)#neighbor 2001:DB8:CC1E:51::1 activate
 R5(config-router-af)#network 2001:DB8:CC1E:100::/64

R6 – eBGP

ipv6 unicast-routing
 ipv6 route 2001:DB8:CC1E:200::/64 Null0
 !
 interface FastEthernet0/0
 ipv6 address FE80::6 link-local
 ipv6 address 2001:DB8:CC1E:36::6/64
 !
 router bgp 200
 bgp router-id 6.6.6.6
 neighbor 2001:DB8:CC1E:36::3 remote-as 500
 !
 address-family ipv6
 neighbor 2001:DB8:CC1E:36::3 activate
 network 2001:DB8:CC1E:200::/64

Transit-area

R1

Här har vi lite mer att konfigurera. R1s BGP-konfig ser just nu ut enligt följande:

R1#sh run | sec bgp
 redistribute bgp 500
 router bgp 500
 no synchronization
 bgp log-neighbor-changes
 neighbor 2.2.2.2 remote-as 500
 neighbor 2.2.2.2 update-source Loopback0
 neighbor 2.2.2.2 next-hop-self
 neighbor 3.3.3.3 remote-as 500
 neighbor 3.3.3.3 update-source Loopback0
 neighbor 3.3.3.3 next-hop-self
 neighbor 4.4.4.4 remote-as 500
 neighbor 4.4.4.4 update-source Loopback0
 neighbor 4.4.4.4 next-hop-self
 neighbor 172.16.51.5 remote-as 100
 no auto-summary

Men med våra nyvunna BGP-kunskaper från tidigare inlägg kan vi väl ta och rensa upp detta lite först via peer-groups.

router bgp 500
 neighbor iBGP peer-group
 neighbor iBGP remote-as 500
 neighbor iBGP update-source Loopback0
 neighbor iBGP next-hop-self
 neighbor 2.2.2.2 peer-group iBGP
 neighbor 3.3.3.3 peer-group iBGP
 neighbor 4.4.4.4 peer-group iBGP
 neighbor 172.16.51.5 remote-as 100
 no auto-summary

Grundkonfig:

ipv6 unicast-routing
interface FastEthernet0/0
 ipv6 address FE80::1 link-local
 ipv6 address 2001:DB8:CC1E:51::1/64
interface Serial0/0
 ipv6 address FE80::1 link-local
 ipv6 address 2001:DB8:CC1E:12::1/64
 !
 interface Serial0/1
 ipv6 address FE80::1 link-local
 ipv6 address 2001:DB8:CC1E:14::1/64
 !
 interface Loopback0
 ipv6 address 2001:DB8:CC1E:1111::1/128

IGP:

För att kunna peera mot IPv6-loopback adresser måste vi även annonsera dessa nät över IGP, i detta fall använder i OSPF.

interface Loopback0
 ipv6 ospf 100 area 0
 !
 interface Serial0/0
 ipv6 ospf 100 area 0
 !
 interface Serial0/1
 ipv6 ospf 100 area 0
 !
 interface FastEthernet0/0
 ipv6 ospf 100 area 0
 !
 ipv6 router ospf 100
 router-id 1.1.1.1

iBGP:

router bgp 500
neighbor iBGP_ipv6 peer-group
 neighbor iBGP_ipv6 remote-as 500
 neighbor iBGP_ipv6 update-source Loopback0
 neighbor iBGP_ipv6 next-hop-self
neighbor 2001:DB8:CC1E:2222::2 peer-group iBGP_ipv6
 neighbor 2001:DB8:CC1E:3333::3 peer-group iBGP_ipv6
 neighbor 2001:DB8:CC1E:4444::4 peer-group iBGP_ipv6
adress-family ipv6
 neighbor 2001:DB8:CC1E:2222::2 activate
 neighbor 2001:DB8:CC1E:3333::3 activate
 neighbor 2001:DB8:CC1E:4444::4 activate

eBGP:

router bgp 500
 neighbor 2001:DB8:CC1E:51::5 remote-as 100
address-family ipv6
 neighbor 2001:DB8:CC1E:51::5 activate

Puhh..

R2

Grundkonfig & IGP:

ipv6 unicast-routing
 !
 interface Loopback0
 ipv6 address 2001:DB8:CC1E:2222::2/128
 ipv6 ospf 100 area 0
 !
 interface Serial0/0
 ipv6 address FE80::2 link-local
 ipv6 address 2001:DB8:CC1E:12::2/64
 ipv6 ospf 100 area 0
 !
 interface Serial0/1
 ipv6 address FE80::2 link-local
 ipv6 address 2001:DB8:CC1E:23::2/64
 ipv6 ospf 100 area 0
 !
 ipv6 router ospf 100
 router-id 2.2.2.2

iBGP:

router bgp 500
 neighbor iBGP_ipv6 peer-group
 neighbor iBGP_ipv6 remote-as 500
 neighbor iBGP_ipv6 update-source Loopback0
 neighbor iBGP_ipv6 next-hop-self
 neighbor 2001:DB8:CC1E:1111::1 peer-group iBGP_ipv6
 neighbor 2001:DB8:CC1E:3333::3 peer-group iBGP_ipv6
 neighbor 2001:DB8:CC1E:4444::4 peer-group iBGP_ipv6
 !
 address-family ipv6
 neighbor 2001:DB8:CC1E:1111::1 activate
 neighbor 2001:DB8:CC1E:3333::3 activate
 neighbor 2001:DB8:CC1E:4444::4 activate

R3

Grundkonfig & IGP:

ipv6 unicast-routing
 !
 interface Loopback0
 ipv6 address 2001:DB8:CC1E:3333::3/128
 ipv6 ospf 100 area 0
 !
 interface FastEthernet0/0
 ipv6 address FE80::3 link-local
 ipv6 address 2001:DB8:CC1E:36::3/64
 ipv6 ospf 100 area 0
 !
 interface Serial0/0
 ipv6 address FE80::1 link-local
 ipv6 address 2001:DB8:CC1E:43::3/64
 ipv6 ospf 100 area 0
 !
 interface Serial0/1
 ip address 172.16.23.3 255.255.255.0
 ipv6 address FE80::1 link-local
 ipv6 address 2001:DB8:CC1E:23::3/64
 ipv6 ospf 100 area 0
 !
 ipv6 router ospf 100
 router-id 3.3.3.3

iBGP:

router bgp 500
 neighbor iBGP_ipv6 peer-group
 neighbor iBGP_ipv6 remote-as 500
 neighbor iBGP_ipv6 update-source Loopback0
 neighbor iBGP_ipv6 next-hop-self
 neighbor 2001:DB8:CC1E:1111::1 peer-group iBGP_ipv6
 neighbor 2001:DB8:CC1E:2222::2 peer-group iBGP_ipv6
 neighbor 2001:DB8:CC1E:4444::4 peer-group iBGP_ipv6
 !
 address-family ipv6
 neighbor 2001:DB8:CC1E:1111::1 activate
 neighbor 2001:DB8:CC1E:2222::2 activate
 neighbor 2001:DB8:CC1E:4444::4 activate

eBGP:

router bgp 500
 neighbor 2001:DB8:CC1E:36::6 remote-as 100
 !
 address-family ipv6
 neighbor 2001:DB8:CC1E:36::6 activate

R4

Grundkonfig & IGP:

interface Loopback0
 ipv6 address 2001:DB8:CC1E:4444::4/128
 ipv6 ospf 100 area 0
 !
 interface Serial0/0
 ipv6 address FE80::4 link-local
 ipv6 address 2001:DB8:CC1E:43::4/64
 ipv6 ospf 100 area 0
 !
 interface Serial0/1
 ipv6 address FE80::4 link-local
 ipv6 address 2001:DB8:CC1E:14::4/64
 ipv6 ospf 100 area 0
 !
 ipv6 router ospf 100
 router-id 4.4.4.4

iBGP:

router bgp 500
 neighbor iBGP_ipv6 peer-group
 neighbor iBGP_ipv6 remote-as 500
 neighbor iBGP_ipv6 update-source Loopback0
 neighbor iBGP_ipv6 next-hop-self
 neighbor 2001:DB8:CC1E:1111::1 peer-group iBGP_ipv6
 neighbor 2001:DB8:CC1E:2222::2 peer-group iBGP_ipv6
 neighbor 2001:DB8:CC1E:3333::3 peer-group iBGP_ipv6
 !
 address-family ipv6
 neighbor 2001:DB8:CC1E:1111::1 activate
 neighbor 2001:DB8:CC1E:2222::2 activate
 neighbor 2001:DB8:CC1E:3333::3 activate

Verifiering:

R5:

ipv6-bgp-summary-r5

ipv6-bgp-unicast-r5

R2:

ipv6-bgp-summary-r2

R6:

ipv6-bgp-summary-r6

ipv6-bgp-unicast-r6

All done!

Se tidigare inlägg för information om hur vi sätter upp RIPng, EIGRP & OSPFv3.

IPv6 – EIGRP

Detta blir ett kort inlägg om EIGRP för att ta upp de skillnader som finns i implementering av EIGRP under IPv6 till skillnad mot IPv4. Se tidigare inlägg för information om mer grundläggande saker som Query-packets, Successor/Feasible successor, Stuck in Active etc.

  • Aktiveras per interface istället för via network-statements (ipv6 eigrp n)
  • Vi måste konfigurera ett router-id under eigrp-processen
  • EIGRP-processen är per default i shutdown, aktiveras genom “no shutdown” under ipv6 router eigrp n
  • Kräver IOS >=12.4.(6)T
  • Split-Horizon inaktiverat då vi kan ha flera ip-adresser per interface
  • Ingen klassfull routing eller auto-summering
  • Använder multicast-adressen FF02::A (L2 dst-adr 33:33:00:00:00:0A)

Vi konfar upp EIGRP-IPV6 enligt följande:

R1(config)#inte fa0/1
R1(config-if)#ipv6 eigrp 10 
R1(config-if)#ipv6 router eigrp 10
R1(config-rtr)#router-id 10.10.10.10
R1(config-rtr)#no shutdown
*Mar 1 00:14:58.123: %DUAL-5-NBRCHANGE: IPv6-EIGRP(0) 10: Neighbor FE80::2 (FastEthernet0/1) is up: new adjacency

Vi kan verifiera att allt är ok via:

R1#show ipv6 protocols
IPv6 Routing Protocol is "connected"
IPv6 Routing Protocol is "static"
IPv6 Routing Protocol is "eigrp 10"
 EIGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0
 EIGRP maximum hopcount 100
 EIGRP maximum metric variance 1
 Interfaces:
 FastEthernet0/1
 Redistribution:
 None
 Maximum path: 16
 Distance: internal 90 external 170
R1#show ipv6 eigrp neighbors 
IPv6-EIGRP neighbors for process 10
H Address Interface Hold Uptime SRTT RTO Q Seq
 (sec) (ms) Cnt Num
0 Link-local address: Fa0/1 11 00:24:58 1291 5000 0 3
 FE80::2
R1#show ipv6 eigrp topology 
IPv6-EIGRP Topology Table for AS(10)/ID(10.10.10.10)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
 r - reply Status, s - sia Status
P 2001:DB8:6783::/64, 1 successors, FD is 281600
 via Connected, FastEthernet0/1
R1#show ipv6 eigrp traffic 
IPv6-EIGRP Traffic Statistics for AS 10
 Hellos sent/received: 332/332
 Updates sent/received: 4/5
 Queries sent/received: 0/0
 Replies sent/received: 0/0
 Acks sent/received: 3/2
 SIA-Queries sent/received: 0/0
 SIA-Replies sent/received: 0/0
 Hello Process ID: 230
 PDM Process ID: 194
 IPv6 Socket queue: 0/50/1/0 (current/max/highest/drops)
 Eigrp input queue: 0/2000/1/0 (current/max/highest/drops)

Debug från skapande av adjacency (debug ipv6 eigrp):

*Mar 1 00:40:48.855: %DUAL-5-NBRCHANGE: IPv6-EIGRP(0) 10: Neighbor FE80::2 (FastEthernet0/1) is up: new adjacency
*Mar 1 00:40:48.871: IPv6-EIGRP(0:10): 2001:DB8:6783::/64 - do advertise out FastEthernet0/1
*Mar 1 00:40:48.875: IPv6-EIGRP(0:10): Int 2001:DB8:6783::/64 metric 281600 - 256000 25600
*Mar 1 00:40:48.967: IPv6-EIGRP(0:10): Processing incoming UPDATE packet
*Mar 1 00:40:50.919: IPv6-EIGRP(0:10): 2001:DB8:6783::/64 - do advertise out FastEthernet0/1
*Mar 1 00:40:50.927: IPv6-EIGRP(0:10): Int 2001:DB8:6783::/64 metric 281600 - 256000 25600
*Mar 1 00:40:50.931: IPv6-EIGRP(0:10): Processing incoming UPDATE packet
*Mar 1 00:40:50.931: IPv6-EIGRP(0:10): Int 2001:DB8:6783::/64 M 307200 - 256000 51200 SM 281600 - 256000 25600
*Mar 1 00:40:50.935: IPv6-EIGRP(0:10): 2001:DB8:6783::/64 routing table not updated

Om vi vill summera ett nät använder vi kommandot:

R1(config-if)#ipv6 summary-address eigrp 10 2001:DB8:6783::/32
R2#sh ipv6 route eigrp
 IPv6 Routing Table - 18 entries
 Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
 U - Per-user Static route, M - MIPv6
 I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
 O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
 ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
 D - EIGRP, EX - EIGRP external
D 2001:DB8::/32 [90/307200]
 via FE80::1, FastEthernet0/1

En debug visar följande, observera att vi precis som i IPv4 river adjacency och inte bara skickar ett nytt Update-packet:

*Mar 1 00:43:32.199: IPv6-EIGRP(0:10): 2001:DB8::/32 (5/281600) added to RIB
 *Mar 1 00:43:32.199: %DUAL-5-NBRCHANGE: IPv6-EIGRP(0) 10: Neighbor FE80::2 (FastEthernet0/1) is down: summary configured
 *Mar 1 00:43:34.299: %DUAL-5-NBRCHANGE: IPv6-EIGRP(0) 10: Neighbor FE80::2 (FastEthernet0/1) is up: new adjacency
 *Mar 1 00:43:34.315: IPv6-EIGRP(0:10): 2001:DB8:6783::/64 - don't advertise out FastEthernet0/1
 *Mar 1 00:43:34.319: IPv6-EIGRP(0:10): 2001:DB8::/32 - do advertise out FastEthernet0/1
 *Mar 1 00:43:34.319: IPv6-EIGRP(0:10): Int 2001:DB8::/32 metric 281600 - 256000 25600
 *Mar 1 00:43:34.379: IPv6-EIGRP(0:10): Processing incoming UPDATE packet

Det finns inte så mycket mer att ta upp faktiskt, det mesta är sig likt från IPv4. Next up, BGP! 🙂

IPv6 – OSPFv3

I ett utdrag från Jeff Doyle’s bok “Routing TCP/IP vol.1” står följande om historiken bakom OSPFv3:

As you have seen in previous chapters, routing IPv6 requires modifications to a protocol; primarily, the protocol messages must be modified to carry addresses four times as long as IPv4 addresses. In theory, this also could be done with Open Shortest Path First (OSPF), either by modifying the existing Link State Advertisements (LSA) or by defining new LSAs. But development of OSPF began in the very late 1980s, when router performance was low, latency was high, and memory was expensive. None of these are valid now, and several characteristics of OSPFv2 that were intended to accommodate or compensate for those early networking realities are now irrelevant. Further, extensive operational experience with OSPFv2 revealed several areas of inefficiency.

So when extension of OSPF to support IPv6 was first considered, it was recognized that there was an opportunity to improve the protocol itself. The result is that rather than just extending OSPFv2 for IPv6, a new and improved version of OSPF—OSPF version 3—has been created.

Vad är då nytt i OSPFv3?

  • RFC 5340
  • Ej bakåtkompatibelt med OSPFv2
  • Använder “link” för att kommunicera med neighbors istället för tidigare network/subnet, vilket innebär att neighbors nu kan ligga i skilda subnät
  • LSA Type-1 & 2 innehåller inte längre någon prefix-information
  • Routrar identifieras nu alltid via Router-ID, även för broadcast & NBMA network-types per default
  • LSA Type-3 Summary-network döptes om till inter-area-prefix-LSA
  • LSA Type-4 Summary-ASBR döptes om till inter-area-router-LSA
  • Två helt nya LSAs, Type 0008 link-LSA & Type 2009 intra-area-prefix-LSA
  • Förlitar sig nu på IPv6 Authentication Head (AH) & Encapsulating Security Paylod (ESP) för autentisering & kryptering
  • LSA Type skrivs nu i hex (16 bitar)

LSA Types

Se tidigare inlägg här (LSA 1-5) & här (area-types & LSA 7) för en mer ingående förklaring vad varje LSA-typ har för funktion och hur det fungerar i praktiken mellan olika area-typer etc.

Nu när vi gått över till IPv6 så benämns LSA-typerna i hex (16 bitar), men de har tack och lov ändå hållit det väldigt snarlikt som vi kan se i tabellen nedan:

OSPFv3-LSAtypes

Type-3 & 4 har bevisligen bytt namn, och tänker vi tillbaka hur dessa LSA-paket fungerar är det egentligen bara mer logiskt nu (Summary-network summerade ej per default osv).

Funktionen är fortfarande i princip densamma för alla LSA-typer, med några nya tillägg/modifieringar:

  • LSA Type-2001 – Skickas endast inom arean (Router-ID)
  • LSA Type-2002 – Skickas endast inom arean från DR (Router-ID)
  • LSA Type-2003 – Skickas mellan areas från ABRs, annonserar O IA-routes
  • LSA Type-2004 – Skickas mellan areas, annonserar gateway (ABR) för ASBR/LSA Type-4005
  • LSA Type-4005 – Skickas mellan areas, annonserar O E1/E2-routes
  • LSA Type-2007 – Skickas inom arean vid användandet av NSSA/T-NSSA, annonseras sedan av ABR som Type-4005 (O E1/E2-routes)
  • LSA Type-0008 – Skickas endast link-local till neighbors som är “Directly connected”
  • LSA Type-2009 – Skickas inom arean, annonserar de prefix som vi annars hade haft med i Type-2001/2002

OSPFv3-Topology

Satte upp följande topologi så vi kan testa detta lite mer ingående. R6 redistributar förövrigt fyra statiska ipv6-routes till RIPng, som R4 i sin tur redist. till OSPF-processen (ASBR).

Kommer hoppa direkt in i OSPFv3-Konfigen nu men den är väldigt basic så känns inte som det krävs någon närmare förklaring:

R1

ipv6 unicast-routing
 !
 interface Loopback0
 ipv6 address 2001:DB8:6783:1111::1/64
 !
 interface FastEthernet0/0
 ipv6 address FE80::1 link-local
 ipv6 address 2001:DB8:6783:1::1/64
 ipv6 ospf 1 area 64
 !
 interface FastEthernet0/1
 ipv6 address FE80::1 link-local
 ipv6 address 2001:DB8:6783::1/64
 ipv6 ospf 1 area 0
 !
 ipv6 router ospf 1
 router-id 1.1.1.1

R2

ipv6 unicast-routing
!
interface Loopback0
 ipv6 address 2001:DB8:6783:2222::2/64
!
interface FastEthernet0/0
 ipv6 address FE80::2 link-local
 ipv6 address 2001:DB8:6783:2::2/64
 ipv6 ospf 1 area 10
! 
interface FastEthernet0/1
 ipv6 address FE80::2 link-local
 ipv6 address 2001:DB8:6783::2/64
 ipv6 ospf 1 area 0
!
ipv6 router ospf 1
 router-id 2.2.2.2

R3

ipv6 unicast-routing
!
interface Loopback0
 ipv6 address 2001:DB8:6783:3333::3/64
!
interface FastEthernet0/0
 ipv6 address FE80::3 link-local
 ipv6 address 2001:DB8:6783:3::3/64
!
interface FastEthernet0/1
 ipv6 address FE80::3 link-local
 ipv6 address 2001:DB8:6783::3/64
 ipv6 ospf 1 area 0
 !
ipv6 router ospf 1
 router-id 3.3.3.3

R4

ipv6 unicast-routing
!
interface FastEthernet0/0
 ipv6 address FE80::4 link-local
 ipv6 address 2001:DB8:6783:1::4/64
 ipv6 ospf 1 area 64
!
interface FastEthernet0/1
 ipv6 address FE80::4 link-local
 ipv6 address 2001:DB8:6783:64::4/64
 ipv6 rip RIP-LAB enable
 !
ipv6 router ospf 1
 router-id 4.4.4.4
redistribute rip RIP-LAB metric 100

R5

ipv6 unicast-routing
!
interface FastEthernet0/0
 ipv6 address FE80::5 link-local
 ipv6 address 2001:DB8:6783:2::5/64
 ipv6 ospf 1 area 10
!
ipv6 router ospf 1
 router-id 5.5.5.5

R6

ipv6 unicast-routing
 !
 interface FastEthernet0/0
 ipv6 address FE80::6 link-local
 ipv6 address 2001:DB8:6783:64::6/64
 ipv6 rip RIP-LAB enable
 !
 ipv6 route 2002:DB10::/64 Null0
 ipv6 route 2002:DB10:1::/64 Null0
 ipv6 route 2002:DB10:2::/64 Null0
 ipv6 route 2002:DB10:3::/64 Null0
 !
 ipv6 router rip RIP-LAB
 redistribute static metric 5

För att få några inter-area routes la jag även till några loopbacks på R3 i efterhand:

int lo0
 ipv6 address 2001:DB8:6783:200::1/64
 ipv6 ospf 1 area 0
 ipv6 ospf network point-to-point
 int lo1
 ipv6 address 2001:DB8:6783:201::1/64
 ipv6 ospf 1 area 0
 ipv6 ospf network point-to-point
 int lo2
 ipv6 address 2001:DB8:6783:202::1/64
 ipv6 ospf 1 area 0
 ipv6 ospf network point-to-point
 int lo3
 ipv6 address 2001:DB8:6783:203::1/64
 ipv6 ospf 1 area 0
 ipv6 ospf network point-to-point

En show ip route på R1 visar nu följande:

ospfv3-r1

Och R5:

ospfv3-r5

So far so good.

OSPFv3s Hello-paket ser förövrigt ut såhär:

ospv3-hello

Om vi jämför med ett Hello-paket från OSPFv2 (IPv4) så kan vi se att det skiljer sig lite:

ospv2-hello

  • OSPFv3 använder inte längre någon inbyggd autentisering utan förlitar sig på underliggande protokoll (IPv6)
  • Använder Link-id istället för network
  • Listar förutom DR&BDR även övriga neighbors i arean

Vad har vi då för LSAs snurrandes i vårat nät?

Vi rensar ospf-processen på R1 med clear ipv6 ospf process [yes] och ser vad som händer..

LSA Type-0008

Det första R1 skickar ut innehåller den nya Link-LSA typen 0008.

lsa-link

Paketet innehåller:

  • Router-ID
  • Link-id
  • De ipv6-prefix som finns konfigurerade på interfacet

Vi kan även använda kommandot “sh ipv6 ospf database link” för att få ut samma information, och för enkelhetens skull skippar jag wireshark för resten av det här inlägget.

OSPFv3 Router with ID (1.1.1.1) (Process ID 1)
Link (Type-8) Link States (Area 0)
LS age: 1851
 Options: (V6-Bit E-Bit R-bit DC-Bit)
 LS Type: Link-LSA (Interface: FastEthernet0/1)
 Link State ID: 5 (Interface ID)
 Advertising Router: 1.1.1.1
 LS Seq Number: 80000005
 Checksum: 0x2A3F
 Length: 56
 Router Priority: 1
 Link Local Address: FE80::1
 Number of Prefixes: 1
 Prefix Address: 2001:DB8:6783::
 Prefix Length: 64, Options: None
LS age: 1375
 Options: (V6-Bit E-Bit R-bit DC-Bit)
 LS Type: Link-LSA (Interface: FastEthernet0/1)
 Link State ID: 5 (Interface ID)
 Advertising Router: 2.2.2.2
 LS Seq Number: 80000004
 Checksum: 0x2441
 Length: 56
 Router Priority: 1
 Link Local Address: FE80::2
 Number of Prefixes: 1
 Prefix Address: 2001:DB8:6783::
 Prefix Length: 64, Options: None
LS age: 1431
 Options: (V6-Bit E-Bit R-bit DC-Bit)
 LS Type: Link-LSA (Interface: FastEthernet0/1)
 Link State ID: 5 (Interface ID)
 Advertising Router: 3.3.3.3
 LS Seq Number: 80000004
 Checksum: 0x1C44
 Length: 56
 Router Priority: 1
 Link Local Address: FE80::3
 Number of Prefixes: 1
 Prefix Address: 2001:DB8:6783::
 Prefix Length: 64, Options: None

Vi kan se att vi tre Link-LSAs, vår egen samt R2 & R3s, Detta skickas som link-local och sprids endast till våra neighbors som är “Directly Connected”.  Vad händer då med neighbors som EJ är DC? Ta detta exempel:

lsa-linktype9

R5 kommer aldrig få information om vad R1 har för Link-ID & Prefix konfigurerat på sitt interface då R2 inte kommer vidarebefordra paketet. Det är istället här LSA Type-2009 intra-area-prefix-LSA kommer in i bilden, mer om den senare.

LSA Type-2001 Router-LSA

LSA Type-2001 Router LSA fungerar precis som i OSPFv2 med skillnaden att OSPF-Speakers EJ inkluderar intra-area prefixen den annars annonserar, detta skickas istället även det som ett LSA Type-2009 intra-area-prefix-LSA. Type-2001 innehåller endast information om Router-ID, Network-type & DR/BDR. Notera att den även hänvisar till interface-id vi lärt oss från LSA Type 0008 för att informera om vilket interface det gäller.

R1#sh ipv6 ospf database router
[...]
OSPFv3 Router with ID (1.1.1.1) (Process ID 1)
Router Link States (Area 0)
Routing Bit Set on this LSA
 LS age: 315
 Options: (V6-Bit E-Bit R-bit DC-Bit)
 LS Type: Router Links
 Link State ID: 0
 Advertising Router: 2.2.2.2
 LS Seq Number: 80000012
 Checksum: 0xBD08
 Length: 40
 Area Border Router
 Number of Links: 1
Link connected to: a Transit Network
 Link Metric: 10
 Local Interface ID: 5
 Neighbor (DR) Interface ID: 5
 Neighbor (DR) Router ID: 3.3.3.3
 [...]

LSA Type-2002 network-LSA

Detta skickas precis som vanligt endast av DR och innehåller i OSPFv3 endast information om vilka övriga routrar som finns i arean. I OSPFv2 har även tillhörande prefix inkluderats, men än en gång så har detta flyttats till LSA Type-2009 intra-area-prefix-LSA.

R1#sh ipv6 ospf database network
OSPFv3 Router with ID (1.1.1.1) (Process ID 1)
Net Link States (Area 0)
LS age: 1286
 Options: (V6-Bit E-Bit R-bit DC-Bit)
 LS Type: Network Links
 Link State ID: 5 (Interface ID of Designated Router)
 Advertising Router: 3.3.3.3
 LS Seq Number: 80000006
 Checksum: 0x7F57
 Length: 36
 Attached Router: 3.3.3.3
  Attached Router: 1.1.1.1
  Attached Router: 2.2.2.2

LSA Type-2003 inter-area-prefix-LSA

Detta fungerar precis som i OSPFv2, men då vi endast har två inter-area nät sett från area 0 blir det enklast att kontrollera detta i R3. Den bör se nätet R1 har i area 64 samt R2s nät i area 10:

R3#sh ipv6 ospf database inter-area prefix
OSPFv3 Router with ID (3.3.3.3) (Process ID 1)
Inter Area Prefix Link States (Area 0)
Routing Bit Set on this LSA
 LS age: 1849
 LS Type: Inter Area Prefix Links
 Link State ID: 0
 Advertising Router: 1.1.1.1
 LS Seq Number: 80000002
 Checksum: 0x20F4
 Length: 36
 Metric: 10
 Prefix Address: 2001:DB8:6783:1::
 Prefix Length: 64, Options: None
Routing Bit Set on this LSA
 LS age: 1238
 LS Type: Inter Area Prefix Links
 Link State ID: 1
 Advertising Router: 2.2.2.2
 LS Seq Number: 80000004
 Checksum: 0x607
 Length: 36
 Metric: 10
 Prefix Address: 2001:DB8:6783:2::
 Prefix Length: 64, Options: None

Kom ihåg att nätet vi redistributar från R4 EJ räknas som inter-area nät utan external (Type-4005).

LSA Type-2004 inter-area-router-LSA

Inget nytt från OSPFv2, möjliggör endast för routrar i andra areas att nå vår ASBR (annonseras av ABR).

R4 är ju i detta fall vår ASBR och R1 i rollen som ABR bör annonsera detta LSA-paket till resterande routrar i area 0.

R3#sh ipv6 ospf database inter-area router
OSPFv3 Router with ID (3.3.3.3) (Process ID 1)
Inter Area Router Link States (Area 0)
Routing Bit Set on this LSA
 LS age: 134
 Options: (V6-Bit E-Bit R-bit DC-Bit)
 LS Type: Inter Area Router Links
 Link State ID: 67372036
 Advertising Router: 1.1.1.1
 LS Seq Number: 80000003
 Checksum: 0x27AF
 Length: 32
 Metric: 10
 Destination Router ID: 4.4.4.4

För R5 bör det vara samma sak med skillnaden att R2 agerar ABR:

R5#sh ipv6 ospf database inter-area router
OSPFv3 Router with ID (5.5.5.5) (Process ID 1)
Inter Area Router Link States (Area 10)
Routing Bit Set on this LSA
 LS age: 63
 Options: (V6-Bit E-Bit R-bit DC-Bit)
 LS Type: Inter Area Router Links
 Link State ID: 67372036
 Advertising Router: 2.2.2.2
 LS Seq Number: 80000003
 Checksum: 0x6D5B
 Length: 32
 Metric: 20
 Destination Router ID: 4.4.4.4

LSA Type-4005 AS-external-LSA

Fungerar även den precis som i OSPFv2, sett från exempelvis R3:

R3#sh ipv6 ospf database external
OSPFv3 Router with ID (3.3.3.3) (Process ID 1)
Type-5 AS External Link States
[...]
Routing Bit Set on this LSA
 LS age: 1902
 LS Type: AS External Link
 Link State ID: 0
 Advertising Router: 4.4.4.4
 LS Seq Number: 80000003
 Checksum: 0xE962
 Length: 36
 Prefix Address: 2002:DB10::
 Prefix Length: 64, Options: None
 Metric Type: 2 (Larger than any link state path)
 Metric: 100
 [...]

LSA Type-2007 NSSA-LSA

Inget nytt här heller, används när vi konfigurerat NSSA alternativt T-NSSA, Type-4005 skickas då istället som Type-2007 NSSA inom arean.

Vi kan verifiera detta genom att konfigurera area 64 till NSSA:

R1(config)#ipv6 router ospf 1
R1(config-rtr)#area 64 nssa

R4(config)#ipv6 router ospf 1
R4(config-rtr)#area 64 nssa
R4 får inte längre in några OE1/2 routes (type-4/5 blockeras):
R4#sh ipv6 route ospf 
IPv6 Routing Table - 16 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
 U - Per-user Static route, M - MIPv6
 I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
 O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
 ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
 D - EIGRP, EX - EIGRP external
OI 2001:DB8:6783::/64 [110/20]
 via FE80::1, FastEthernet0/0
OI 2001:DB8:6783:2::/64 [110/30]
 via FE80::1, FastEthernet0/0
OI 2001:DB8:6783:200::/64 [110/21]
 via FE80::1, FastEthernet0/0
OI 2001:DB8:6783:201::/64 [110/21]
 via FE80::1, FastEthernet0/0
OI 2001:DB8:6783:202::/64 [110/21]
 via FE80::1, FastEthernet0/0
OI 2001:DB8:6783:203::/64 [110/21]
 via FE80::1, FastEthernet0/0
OI 2001:DB8:6783:3333::/64 [110/21]
 via FE80::1, FastEthernet0/0

Men vi lyckas fortfarande annonsera våra externa routes till övriga areas:

R1#sh ipv6 ospf database NSSA
OSPFv3 Router with ID (1.1.1.1) (Process ID 1)
Type-7 AS External Link States (Area 64)
Routing Bit Set on this LSA
 LS age: 468
 LS Type: AS External Link
 Link State ID: 4
 Advertising Router: 4.4.4.4
 LS Seq Number: 80000001
 Checksum: 0xCB94
 Length: 36
 Prefix Address: 2002:DB10::
 Prefix Length: 64, Options: P 
 Metric Type: 2 (Larger than any link state path)
 Metric: 100
[...]
R3#sh ipv6 ospf database external
OSPFv3 Router with ID (3.3.3.3) (Process ID 1)
Type-5 AS External Link States
Routing Bit Set on this LSA
 LS age: 500
 LS Type: AS External Link
 Link State ID: 0
 Advertising Router: 1.1.1.1
 LS Seq Number: 80000001
 Checksum: 0x4812
 Length: 36
 Prefix Address: 2002:DB10::
 Prefix Length: 64, Options: None
 Metric Type: 2 (Larger than any link state path)
 Metric: 100

LSA Type-2009 intra-area-prefix-LSA

Detta har vi redan nämnt nu några gånger, Type-2009 är som sagt nytt för OSPFv3 och innehåller de prefix vi exkluderat från LSA Type-2001, 2002 & 0008 (i de fall vi ej är directly connected). R3 som i detta fall är DR sammanställer infon och skickar ut till sina neighbors. Observera att den även refererar till vilken LSA-typ prefixen hör till!:

R1#sh ipv6 ospf database prefix
OSPFv3 Router with ID (1.1.1.1) (Process ID 1)
Intra Area Prefix Link States (Area 0)
Routing Bit Set on this LSA
 LS age: 297
 LS Type: Intra-Area-Prefix-LSA
 Link State ID: 0
 Advertising Router: 3.3.3.3
 LS Seq Number: 80000009
 Checksum: 0x8856
 Length: 92
 Referenced LSA Type: 2001
 Referenced Link State ID: 0
 Referenced Advertising Router: 3.3.3.3
 Number of Prefixes: 5
 Prefix Address: 2001:DB8:6783:203::
 Prefix Length: 64, Options: None, Metric: 1
 Prefix Address: 2001:DB8:6783:202::
 Prefix Length: 64, Options: None, Metric: 1
 Prefix Address: 2001:DB8:6783:201::
 Prefix Length: 64, Options: None, Metric: 1
 Prefix Address: 2001:DB8:6783:200::
 Prefix Length: 64, Options: None, Metric: 1
 Prefix Address: 2001:DB8:6783:3333::
 Prefix Length: 64, Options: None, Metric: 1
Routing Bit Set on this LSA
 LS age: 559
 LS Type: Intra-Area-Prefix-LSA
 Link State ID: 5120
 Advertising Router: 3.3.3.3
 LS Seq Number: 80000005
 Checksum: 0x7846
 Length: 44
 Referenced LSA Type: 2002
 Referenced Link State ID: 5
 Referenced Advertising Router: 3.3.3.3
 Number of Prefixes: 1
 Prefix Address: 2001:DB8:6783::
 Prefix Length: 64, Options: None, Metric: 0
[...]

Puhhh! Tror vi avslutar OSPFv3 här, tanken var som sagt att endast ta upp det som skiljer från när vi kör OSPF i IPv4. 🙂

IPv6 – RIPng

Detta blir ett kortare inlägg om RIPng då det inte finns speciellt mycket att gå igenom, det är fortfarande precis lika basic som RIP/RIPv2 (IPv4). Det mesta är sig även likt när det kommer till hur själva protokollet fungerar.

  • Kommunicerar över UDP 521
  • Skickar uppdateringar över Multicast, dst-adr; FF02::9
  • Metric – Hop count (max 16)
  • Använder link-local som source-adress i sina uppdateringar
  • Har fortfarande en AD på 120
  • Skickar periodiska uppdateringar var 30:e sekund med hela sin rip-databas
  • Skickar även “triggered-updates” när ex. ett nät går ner/läggs till (innehållandes endast de påverkade näten)
  • RFC 2080

Den lilla skillnaden som finns är att routern vid en inkommande uppdatering alltid tar Hopcount + 1 innan den installerar routen i sin databas. Detta gör att om vi jämför en identisk topologi mellan RIPv2 & RIPng kommer vi se 1 högre hop-count för routes i RIPng. Vi aktiverar även själva RIPng-processen direkt på interfacet istället för via “router rip”.

Har i tidigare inlägg visat hur vi aktiverar RIPng så detta får bli lite repetition.

ipv6-simple-topology

R1 / R2 / R3:

int fa0/0
ipv6 rip RIP-LAB enable
int s0/0
ipv6 rip RIP-LAB enable
int s0/1
ipv6 rip RIP-LAB enable
int lo0
ipv6 rip RIP-LAB enable

Show ipv6 rip visar följande:

RIP process "RIP-LAB", port 521, multicast-group FF02::9, pid 192
 Administrative distance is 120. Maximum paths is 16
 Updates every 30 seconds, expire after 180
 Holddown lasts 0 seconds, garbage collect after 120
 Split horizon is on; poison reverse is off
 Default routes are not generated
 Periodic updates 4, trigger updates 2
 Interfaces:
 Loopback0
 Serial0/1
 Serial0/0
 FastEthernet0/0
 Redistribution:
 None

RIPng-Databasen vi skickar var 30:e sekund kan vi lista genom “show ipv6 rip database”:

RIP process "RIP-LAB", local RIB
 2001:DB8:6783:2::/64, metric 2, installed
 Serial0/0/FE80::2, expires in 177 secs
 2001:DB8:6783:3::/64, metric 2, installed
 Serial0/1/FE80::3, expires in 175 secs
 2001:DB8:6783:12::/64, metric 2
 Serial0/0/FE80::2, expires in 177 secs
 2001:DB8:6783:13::/64, metric 2
 Serial0/1/FE80::3, expires in 175 secs
 2001:DB8:6783:23::/64, metric 2, installed
 Serial0/1/FE80::3, expires in 175 secs
 Serial0/0/FE80::2, expires in 177 secs
 2001:DB8:6783:2222::/64, metric 2, installed
 Serial0/0/FE80::2, expires in 177 secs
 2001:DB8:6783:3333::/64, metric 2, installed
 Serial0/1/FE80::3, expires in 175 secs

En show ipv6 ip route visar väl inte direkt något nytt den heller:

IPv6 Routing Table - 14 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
 U - Per-user Static route, M - MIPv6
 I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
 O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
 ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
 D - EIGRP, EX - EIGRP external
R 2001:DB8:6783:2::/64 [120/2]
 via FE80::2, Serial0/0
R 2001:DB8:6783:3::/64 [120/2]
 via FE80::3, Serial0/1
R 2001:DB8:6783:23::/64 [120/2]
 via FE80::2, Serial0/0
 via FE80::3, Serial0/1
R 2001:DB8:6783:2222::/64 [120/2]
 via FE80::2, Serial0/0
R 2001:DB8:6783:3333::/64 [120/2]
 via FE80::3, Serial0/1

En av skillnaderna från RIP/RIPv2 var som sagt att vi nu lägger till ett extra hop count. Vi kan verifiera detta med en “debug ipv6 rip” som låter oss inspektera uppdateringarna som inkommer från R2 & R3:

Från R2:

*Mar 1 00:09:12.975: RIPng: response received from FE80::2 on Serial0/0 for RIP-LAB
*Mar 1 00:09:12.975: src=FE80::2 (Serial0/0)
*Mar 1 00:09:12.979: dst=FF02::9
*Mar 1 00:09:12.979: sport=521, dport=521, length=132
*Mar 1 00:09:12.979: command=2, version=1, mbz=0, #rte=6
*Mar 1 00:09:12.979: tag=0, metric=1, prefix=2001:DB8:6783:2222::/64
*Mar 1 00:09:12.979: tag=0, metric=1, prefix=2001:DB8:6783:2::/64
*Mar 1 00:09:12.983: tag=0, metric=1, prefix=2001:DB8:6783:12::/64
*Mar 1 00:09:12.983: tag=0, metric=1, prefix=2001:DB8:6783:23::/64
*Mar 1 00:09:12.983: tag=0, metric=2, prefix=2001:DB8:6783:3333::/64
*Mar 1 00:09:12.983: tag=0, metric=2, prefix=2001:DB8:6783:3::/64

R3:

*Mar 1 00:09:37.155: RIPng: response received from FE80::3 on Serial0/1 for RIP-LAB
*Mar 1 00:09:37.155: src=FE80::3 (Serial0/1)
*Mar 1 00:09:37.159: dst=FF02::9
*Mar 1 00:09:37.159: sport=521, dport=521, length=132
*Mar 1 00:09:37.159: command=2, version=1, mbz=0, #rte=6
*Mar 1 00:09:37.159: tag=0, metric=1, prefix=2001:DB8:6783:3333::/64
*Mar 1 00:09:37.159: tag=0, metric=1, prefix=2001:DB8:6783:3::/64
*Mar 1 00:09:37.163: tag=0, metric=1, prefix=2001:DB8:6783:23::/64
*Mar 1 00:09:37.163: tag=0, metric=1, prefix=2001:DB8:6783:13::/64
*Mar 1 00:09:37.163: tag=0, metric=2, prefix=2001:DB8:6783:2::/64
*Mar 1 00:09:37.163: tag=0, metric=2, prefix=2001:DB8:6783:2222::/64

Om vi tittar närmare på prefix=2001:DB8:6783:3333::/64″ vi lärde oss från R3 så har den i uppdateringen metric satt till 1.  Men en show ipv6 route 2001:DB8:6783:3333::/64 visar:

R 2001:DB8:6783:3333::/64 [120/2]
 via FE80::3, Serial0/1

Om vi vill annonsera en default-route (::/1) till våra neighbors så använder vi följande kommando:

R1:
int s0/0ipv6 rip RIP-LAB default-information originateint s0/1ipv6 rip RIP-LAB default-information originate

En debug ip R2 visar att vi nu även får en default-route från R1:

*Mar 1 00:17:03.411: src=FE80::1 (Serial0/0)
*Mar 1 00:17:03.415: dst=FF02::9
*Mar 1 00:17:03.415: sport=521, dport=521, length=152
*Mar 1 00:17:03.415: command=2, version=1, mbz=0, #rte=7
*Mar 1 00:17:03.415: tag=0, metric=1, prefix=2001:DB8:6783:1111::/64
*Mar 1 00:17:03.415: tag=0, metric=1, prefix=2001:DB8:6783:1::/64
*Mar 1 00:17:03.419: tag=0, metric=1, prefix=2001:DB8:6783:13::/64
*Mar 1 00:17:03.419: tag=0, metric=1, prefix=2001:DB8:6783:12::/64
R2#sh ipv6 route 
*Mar 1 00:17:03.419: tag=0, metric=2, prefix=2001:DB8:6783:3333::/64
*Mar 1 00:17:03.419: tag=0, metric=2, prefix=2001:DB8:6783:3::/64
*Mar 1 00:17:03.423: tag=0, metric=1, prefix=::/0
R2#sh ipv6 route ::/1 | beg ::
R ::/0 [120/2]
 via FE80::1, Serial0/0

En liten notis är att till skillnad från RIP/RIPv2 så annonseras även nätet som är “Directly connected” med dess neighbor. Exempelvis så annonserar R1 den seriella länken mellan R1 & R2 om vi kan se i följande wireshark-dump:

ipv6-ripng

Det är ungefär allt som finns att ta upp om RIPng, Ska försöka få upp två inlägg om EIGRP & OSPFv3 asap så jag kan börja med lite roligare grejjer sen, det här känns inte direkt superspännande.. 🙂

IPv6 – Link-local Multicast

Då broadcast inte längre används i IPv6 som vi nämnt i tidigare inlägg kan det väl vara lämpligt med en introduktion till multicast.

Rekommenderar ovanstående video till att börja med, förklarar konceptet väldigt bra.

Jag har använt mig av samma topologi för denna labb.

ipv6-simple-topology

Multicast ger oss möjligheten att skicka ett och samma paket till flera mottagare, men tas endast emot av enheter som är intresserade av paketet (genom att de gått med i vår multicast-grupp). Betydligt mer effektivt än broadcast där alla enheter måste processa paketet oavsett om de är intresserade av informationen eller ej.

Multicast adresser börjar som bekant alltid med FF00::/8, men det finns flera olika typer av multicast-trafik/grupper. För Multicast-adresser som börjar med FF02 som vi ska kolla på idag betyder att de är Link-local, dvs de forwardas EJ utanför vårt L2-segment.

  • FF02::1 – All-nodes address, används för att nå alla enheter på L2-segmentet
  • FF02::2 – All-routers address, används för att nå alla routrar på L2-segmentet
  • FF02::5 – All-OSPF routers, används för att nå alla OSPF-routrar L2-segmentet (samma funktion som IPv4s 224.0.0.5)
  • FF02::6 – All-OSPF DR/BDR routers, används för att nå alla OSFP DR/BDR-routrar på L2-segmentet (samma funktion som IPv4s 224.0.0.6)
  • FF02::9 – All-RIPng routers, används för att nå alla RIP-routrar på L2-segmentet
  • FF02::A – All-EIGRP routers, används för att nå alla EIGRP-routrar på L2-segmentet
  • FF02::1::FFxx:xxxx – Solicited-node address, resolvar en Link-local IPv6-adress till Link-Layer address (IPv6s version av ARP!)

Det sistnämnda kräver väl lite mer förklaring.. En IPv6 Unicast-adress är antingen:

  • Global (2000::/3 – 3ffff::/3)
  • Link-Local  (FE80::/8)

För varje IPv6 Unicast-adress vi har konfigurerad så måste enhet även gå med i den associerade Solicited-node multicast-gruppen för den specifika adressen. Multicast-gruppen Solicited Node börjar alltid med adressen FF02::1:FFxx:xxxx, där vi för de sista 24 bitarna använder motsvarande sista 24-bitar från vår Global eller Link-Local adress.

Detta ger oss möjlighet att kommunicera med enheter trots att vi inte ännu kan deras mac-adress, det är med andra ord IPv6 variant av ARP-lookup (broadcast) som vi använder i IPv4. Funktionen kallas NDP (Neighbor Discovery Protocol) och gör en hel del annat skoj förutom IPv6 -> Mac-adress resolving, men det får bli en egen post vid ett senare tillfälle.

Om vi tar följande exempel från en Global adress:

2001:db8:6783:1111::1/64

För att göra det enklare skriver vi ut alla  “leading 0’s” vi använt.

2001:0db8:6783:1111:0000:0000:0000:0001/64, och så tar vi de sista 24-bitarna:

2001:0db8:6783:1111:0000:0000:0000:0001/64

00:0001

Solicited Node multicast-adressen blir då:

FF02::1:FF00:0001

Vi tar och testar detta i R1;

conf t
interface fa0/0
no ipv6 add
ipv6 enable
R1#show ipv6 int fa0/0
FastEthernet0/0 is up, line protocol is up
 IPv6 is enabled, link-local address is FE80::C000:22FF:FE40:0 
 No Virtual link-local address(es):
 No global unicast address is configured
 Joined group address(es):
 FF02::1
 FF02::2
 FF02::1:FF40:0

Vi kan se att routern automatiskt gått med i tre multicast-grupper.

  • FF02::1 – All-nodes address
  • FF02::1:FF40:0 – Solicited-node address

Om vi även aktiverar IPv6-routing genom kommandot ipv6 unicast-routing kan vi se att routern går med i ytterligare en grupp:

Joined group address(es):
 FF02::1
 FF02::2
 FF02::1:FF40:0
  • FF02::2 – All-routers address

Routern vet nu att den är en router(:D), och måste således gå med i All-routers multicast-gruppen. Låt oss aktivera EIGRP, OSPF & RIP på routern och se vad som händer.

conf t
 int fa0/0
 ipv6 rip RIP-LAB enable
 ipv6 ospf 1 area 0
 ipv6 eigrp 10
 ipv6 router ospf 1
 router-id 1.1.1.1
 ipv6 router eigrp
 router-id 1.1.1.1

Detta ger oss följande resultat (vi behöver lägga till router-id för EIGRP & OSPF då vi inte har någon IPv6-adress konfigurerad på routern):

R1#sh ipv6 int fa0/0
FastEthernet0/0 is up, line protocol is up
 IPv6 is enabled, link-local address is FE80::C000:22FF:FE40:0 
 No Virtual link-local address(es):
 No global unicast address is configured
 Joined group address(es):
 FF02::1 <- All-nodes
 FF02::2 <- All-routers
 FF02::5 <- All OSPF-routers
 FF02::6 <- All OSPF BD/BDR-routers
 FF02::9 <- All RIPng-routers
 FF02::A <- All EIGRP-router s
 FF02::1:FF40:0 <- Solicited node-address

Snyggt!

Hur går det då till lite mer specifikt när en host först bootar upp och endast känner till sin default-gateways L3 IPv6-adress (R1), exempelvis 2001:db8:6783:1::1?

Hosten kommer skicka en “ICMPv6 Neighbor-Solicitation” förfrågan till Solicited-Node Multicast-adressen på L2-segmentet för just 2001:db8:6783:1::1/64, vilket blir?

FF02::1:FF00:1

R1 som är den enda som lyssnar till denna multicast-grupp kommer svara Host med ett ICMPv6 Neighbor-Advertisement innehållandes dess MAC-adress.

Om du kommer ihåg posten från tidigare idag så såg vi följande wireshark-dump på just ett “Neighbor Solicitation”-paket:

IPv6-neighborsolicitation

Paketet är adresserat till multicast-gruppen FF02::1:FFCD:1111 för att kontrollera om det finns någon enhet med adressen “FE80::200:ABFF:FECD:1111)”.

Varje L3 multicast-adress har förövrigt en motsvarande L2-adress. L2-adressen börjar alltid med 3333 (16bitar), och tar sedan de sista 32 bitarna från vår multicast-grupp.

Multicast-gruppen FF02::1 blir då:

3333:0000:0001 -> 33:33:00:00:00:01.

FF02::5 blir:

3333:0000:0005 -> 33:33:00:00:00:05

Vi kan verifiera detta genom att kolla hur ett OSPF-hello paket ser ut:

ipv6-ospfhello

Destinationsadresserna är:

  • L2 – 33:33:00:00:00:05
  • L3 – FF02::5

Det blir lite krångligare när vi ska konvertera Solicited-node adressen till L2 då vi endast använt 24-bitar till att skapa vår L3-adress, men vi behöver som bekant 32-bitar. Vi löser det på ungefär samma sätt som EUI-64 adresser skapas, genom att lägga till FF efter de första 16 bitarna.

L2-adressen för FF02::1:FF00:0001 blir då:

3333:FF00:0001 -> 33:33:FF:00:01

IPv6 – Simple Topology & RIPng

Detta blir ett kortare inlägg om hur vi konfar upp ett litet IPv6-nät med Global & Link-local adresser.

ipv6-simple-topology

Låt oss börja med R1:

För att aktivera IPv6 routing måste vi först lägga till:

ipv6 unicast-routing

Interface-konfigen blir sedan:

interface FastEthernet0/0
description To CustLAN
!Global
ipv6 address 2001:db8:6783:1::1/64
!Sätter statisk ipv6 för link-local istället för en genererad EUI64-adress
ipv6 address fe80::1 link-local
no shut
interface Serial0/0
 ipv6 address FE80::1 link-local
 ipv6 address 2001:DB8:6783:12::1/64
 clock rate 256000
no shut

interface Serial0/1
 ipv6 address FE80::1 link-local
 ipv6 address 2001:DB8:6783:13::1/64
 clock rate 256000
no shut
interface Loopback0
ipv6 address 2001:db8:6783:1111::1/64

Det är inga problem att ha samma link-local adress på alla interface, kom ihåg att den endast gäller lokalt inom L2-segmentet!

Detta ger följande output:

ipv6-biref

R2:

ipv6 unicast-routing
interface Loopback0
ipv6 address 2001:DB8:6783:2222::2/64

interface FastEthernet0/0
ipv6 address FE80::2 link-local
 ipv6 address 2001:DB8:6783:2::2/64
no shut

interface Serial0/0
ipv6 address FE80::2 link-local
 ipv6 address 2001:DB8:6783:12::2/64
no shut

interface Serial0/1
ipv6 address FE80::2 link-local
 ipv6 address 2001:DB8:6783:23::2/64
 clock rate 256000
no shut

R3

ipv6 unicast-routing
interface Loopback0
ipv6 address 2001:DB8:6783:3333::3/64
no shut
interface FastEthernet0/0
ipv6 address FE80::3 link-local
ipv6 address 2001:DB8:6783:3::3/64
no shut
interface Serial0/0
ipv6 address FE80::3 link-local
ipv6 address 2001:DB8:6783:23::3/64
no shut
interface Serial0/1
ipv6 address FE80::3 link-local
ipv6 address 2001:DB8:6783:13::3/64
no shut

Hur gör vi då om vi vill använda oss av ett routing-protokoll. Låt oss börja med den enklaste, RIPng (RIP Next-Generation).

Till skillnad från IPv4 så aktiverar vi RIPng på interfacet istället för via network-statements, samt vilken RIP-instans vi vill ansluta interfacet till.

Konfigen är densamma för R1/R2/R3:

int fa0/0
ipv6 rip RIP-LAB enable
int s0/0
ipv6 rip RIP-LAB enable
int s0/1
ipv6 rip RIP-LAB enable
int lo0
ipv6 rip RIP-LAB enable

Löjligt enkelt. Vi verifierar med hjälp av show ipv6 route rip:

ipv6-route

Observera att routern använder Link-local adresser som next hop!

R1#ping ipv6 2001:db8:6783:2::2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:DB8:6783:2::2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/5/20 ms
R1#ping ipv6 2001:db8:6783:3::3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:DB8:6783:3::3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/9/28 ms