Using IPSec to authenticate IPv6 OSPF under Linux


The IPv4 version of the OSPF routing protocol can use a shared secret to authenticate routers before forming an adjacency, in order to prevent rogue routers from affecting the routing table. Because the IPv6 specification mandates that IPSec be included in any implementation of an IPv6 network stack, the internal authentication feature of OSPF is no longer required, and has been removed from OSPFv3 (the IPv6 version of the protocol).

So if we want to authenticate neighbour routers in OSPFv3, IPSec AH needs to be set up. Cisco makes this fairly easy, however it’s a little harder under Linux because the routing service doesn’t handle the encryption internally.

Let’s start with a working OSPFv3 configuration without any authentication. Here are two Linux machines with a few network interfaces set up. Eth1 is the interface connecting the two routers over which we’ll be talking OSPF, and eth2 is an interface with a global unicast IPv6 /64 behind it – this is the subnet for which we’ll be exchanging routes across OSPF:

root@router1:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:9a:df:25 brd ff:ff:ff:ff:ff:ff
    inet 172.31.250.41/24 brd 172.31.250.255 scope global eth0
    inet6 fe80::a00:27ff:fe9a:df25/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:7e:8d:0f brd ff:ff:ff:ff:ff:ff
    inet 172.31.251.11/24 brd 172.31.251.255 scope global eth1
    inet6 fe80::a00:27ff:fe7e:8d0f/64 scope link
       valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:96:4d:f6 brd ff:ff:ff:ff:ff:ff
    inet6 2002:f0f0:f0f0:1001::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe96:4df6/64 scope link
       valid_lft forever preferred_lft forever
root@router1:~# 

root@router2:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:6b:2f:c3 brd ff:ff:ff:ff:ff:ff
    inet 172.31.250.61/24 brd 172.31.250.255 scope global eth0
    inet6 fe80::a00:27ff:fe6b:2fc3/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:b4:ce:0d brd ff:ff:ff:ff:ff:ff
    inet 172.31.251.12/24 brd 172.31.251.255 scope global eth1
    inet6 fe80::a00:27ff:feb4:ce0d/64 scope link
       valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:0e:99:57 brd ff:ff:ff:ff:ff:ff
    inet6 2002:f0f0:f0f0:1002::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe0e:9957/64 scope link
       valid_lft forever preferred_lft forever
root@router2:~# 

root@router1:~# ip -6 route
2002:f0f0:f0f0:1001::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth1  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
root@router1:~# 

root@router2:~# ip -6 route
2002:f0f0:f0f0:1002::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth1  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
root@router2:~# 

I’m using quagga as the OSPF implementation in these examples, however BIRD or XORP would also work. Here’s the OSPF configuration for each of the routers:

root@router1:~# VTYSH_PAGER=cat vtysh
Hello, this is Quagga (version 0.99.13).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
router1# show run
Building configuration...
Current configuration:
!
end
!
debug ospf6 lsa unknown
!
interface eth0
 ipv6 nd suppress-ra
!
interface eth1
 ipv6 nd suppress-ra
 ipv6 ospf6 cost 1
 ipv6 ospf6 dead-interval 40
 ipv6 ospf6 hello-interval 10
 ipv6 ospf6 instance-id 0
 ipv6 ospf6 priority 1
 ipv6 ospf6 retransmit-interval 5
 ipv6 ospf6 transmit-delay 1
!
interface eth2
 ipv6 nd suppress-ra
!
interface lo
!
router ospf6
 router-id 172.31.250.41
 redistribute kernel
 redistribute connected
 redistribute static
 interface eth1 area 172.31.250.0
!
line vty
!
router1# 

root@router2:~# VTYSH_PAGER=cat vtysh
Hello, this is Quagga (version 0.99.13).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
router2# show run
Building configuration...
Current configuration:
!
end
!
debug ospf6 lsa unknown
!
interface eth0
 ipv6 nd suppress-ra
!
interface eth1
 ipv6 nd suppress-ra
 ipv6 ospf6 cost 1
 ipv6 ospf6 dead-interval 40
 ipv6 ospf6 hello-interval 10
 ipv6 ospf6 instance-id 0
 ipv6 ospf6 priority 1
 ipv6 ospf6 retransmit-interval 5
 ipv6 ospf6 transmit-delay 1
!
interface eth2
 ipv6 nd suppress-ra
!
interface lo
!
router ospf6
 router-id 172.31.250.61
 redistribute kernel
 redistribute connected
 redistribute static
 interface eth1 area 172.31.250.0
!
line vty
!
router2# 

After starting quagga on both sides, the vtysh command ‘show ipv6 ospf neighbor’ will list the other routers the OSPF process has discovered. After a minute or so, the ‘state’ column in the command’s output will change to ‘Full’, and the routers will begin exchanging routes:

root@router1:~# /etc/init.d/quagga start
Loading capability module if not yet done.
Starting Quagga daemons (prio:10): zebra ospf6d.
root@router1:~#

root@router2:~# /etc/init.d/quagga start
Loading capability module if not yet done.
Starting Quagga daemons (prio:10): zebra ospf6d.
root@router2:~#

root@router1:~# VTYSH_PAGER=cat vtysh
Hello, this is Quagga (version 0.99.13).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
router1# show ipv6 ospf6 neighbor
Neighbor ID     Pri    DeadTime  State/IfState         Duration I/F[State]
172.31.250.61     1    00:00:32   Init/DROther         00:00:08 eth1[Waiting]
router1# show ipv6 ospf6 neighbor
Neighbor ID     Pri    DeadTime  State/IfState         Duration I/F[State]
172.31.250.61     1    00:00:37   Full/DR              00:00:03 eth1[BDR]
router1# show ipv6 ospf6 route
*N E1 2002:f0f0:f0f0:1002::/64       fe80::a00:27ff:feb4:ce0d    eth1 00:00:06
router1# exit
root@router1:~#

root@router2:~# VTYSH_PAGER=cat vtysh
Hello, this is Quagga (version 0.99.13).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
router2# show ipv6 ospf6 neighbor
Neighbor ID     Pri    DeadTime  State/IfState         Duration I/F[State]
172.31.250.41     1    00:00:32   Full/BDR             00:00:26 eth1[DR]
router2# show ipv6 ospf6 route
*N E1 2002:f0f0:f0f0:1001::/64       fe80::a00:27ff:fe7e:8d0f    eth1 00:00:29
router2# exit
root@router2:~#

These routes can also be viewed in the kernel’s route table:

root@router1:~# ip -6 route
2002:f0f0:f0f0:1001::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
2002:f0f0:f0f0:1002::/64 via fe80::a00:27ff:feb4:ce0d dev eth1  proto zebra  metric 1  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth1  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
root@router1:~#

root@router2:~# ip -6 route
2002:f0f0:f0f0:1001::/64 via fe80::a00:27ff:fe7e:8d0f dev eth1  proto zebra  metric 1  mtu 1500 advmss 1440 hoplimit 0
2002:f0f0:f0f0:1002::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth1  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
root@router2:~#

The output of tcpdump while this process is happening looks like this:

root@router1:~# tcpdump -ni eth1 ip6 protochain ospf
Warning: Kernel filter failed: Invalid argument
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
11:11:19.802890 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: OSPFv3, Hello, length 36
11:11:20.971742 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: OSPFv3, Hello, length 36
11:11:29.803137 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: OSPFv3, Hello, length 40
11:11:30.969685 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: OSPFv3, Hello, length 40
11:11:39.812934 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: OSPFv3, Hello, length 40
11:11:40.969455 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: OSPFv3, Hello, length 40
11:11:49.824862 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: OSPFv3, Hello, length 40
11:11:50.974595 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: OSPFv3, Hello, length 40
11:11:59.813984 IP6 fe80::a00:27ff:fe7e:8d0f > fe80::a00:27ff:feb4:ce0d: OSPFv3, Database Description, length 28
11:11:59.829019 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: OSPFv3, Hello, length 40
11:12:00.972114 IP6 fe80::a00:27ff:feb4:ce0d > fe80::a00:27ff:fe7e:8d0f: OSPFv3, Database Description, length 28
11:12:00.972334 IP6 fe80::a00:27ff:fe7e:8d0f > fe80::a00:27ff:feb4:ce0d: OSPFv3, Database Description, length 68
11:12:00.972925 IP6 fe80::a00:27ff:feb4:ce0d > fe80::a00:27ff:fe7e:8d0f: OSPFv3, LS-Request, length 40
11:12:00.972937 IP6 fe80::a00:27ff:feb4:ce0d > fe80::a00:27ff:fe7e:8d0f: OSPFv3, Database Description, length 68
11:12:00.973037 IP6 fe80::a00:27ff:fe7e:8d0f > fe80::a00:27ff:feb4:ce0d: OSPFv3, LS-Update, length 100
11:12:00.973157 IP6 fe80::a00:27ff:fe7e:8d0f > fe80::a00:27ff:feb4:ce0d: OSPFv3, LS-Request, length 40
11:12:00.973263 IP6 fe80::a00:27ff:fe7e:8d0f > fe80::a00:27ff:feb4:ce0d: OSPFv3, Database Description, length 28
11:12:00.974227 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: OSPFv3, Hello, length 40
11:12:00.974241 IP6 fe80::a00:27ff:feb4:ce0d > fe80::a00:27ff:fe7e:8d0f: OSPFv3, LS-Update, length 100
11:12:00.974245 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: OSPFv3, LS-Update, length 92
11:12:00.975881 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: OSPFv3, LS-Update, length 60
11:12:03.978931 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: OSPFv3, LS-Ack, length 96
11:12:03.980485 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: OSPFv3, LS-Ack, length 76
11:12:09.833885 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: OSPFv3, Hello, length 40
^C
24 packets captured
36 packets received by filter
0 packets dropped by kernel
root@router1:~#

So that’s OSPF running – now we need to wrap some authentication around it. In order to make the configuration simpler, I’m setting up manually keyed AH using setkey, which is part of IPsec-Tools. Manual keying means the ISAKMP step can be skipped entirely, and using AH rather than ESP the OSPF packets will be visible on the wire with the AH header attached.

The setkey script being run at each side is identical:

root@router1:~# cat linux-linux.setkey
#!/usr/sbin/setkey -f

# Router1 is fe80::a00:27ff:fe7e:8d0f
# Router2 is fe80::a00:27ff:feb4:ce0d

flush;
spdflush;

add -6 fe80::a00:27ff:fe7e:8d0f ff02::5 ah 0x10001 -A hmac-sha1 "ospfv3 shared secret";
add -6 fe80::a00:27ff:feb4:ce0d ff02::5 ah 0x10002 -A hmac-sha1 "ospfv3 shared secret";

add -6 fe80::a00:27ff:feb4:ce0d fe80::a00:27ff:fe7e:8d0f ah 0x20001 -A hmac-sha1 "ospfv3 shared secret";
add -6 fe80::a00:27ff:fe7e:8d0f fe80::a00:27ff:feb4:ce0d ah 0x20001 -A hmac-sha1 "ospfv3 shared secret";

spdadd ::/0 ::/0 ospf -P out ipsec ah/transport//require;
spdadd ::/0 ::/0 ospf -P in ipsec ah/transport//require;
root@router1:~# 

root@router2:~# cat linux-linux.setkey
#!/usr/sbin/setkey -f

# Router1 is fe80::a00:27ff:fe7e:8d0f
# Router2 is fe80::a00:27ff:feb4:ce0d

flush;
spdflush;

add -6 fe80::a00:27ff:fe7e:8d0f ff02::5 ah 0x10001 -A hmac-sha1 "ospfv3 shared secret";
add -6 fe80::a00:27ff:feb4:ce0d ff02::5 ah 0x10002 -A hmac-sha1 "ospfv3 shared secret";

add -6 fe80::a00:27ff:feb4:ce0d fe80::a00:27ff:fe7e:8d0f ah 0x20001 -A hmac-sha1 "ospfv3 shared secret";
add -6 fe80::a00:27ff:fe7e:8d0f fe80::a00:27ff:feb4:ce0d ah 0x20001 -A hmac-sha1 "ospfv3 shared secret";

spdadd ::/0 ::/0 ospf -P out ipsec ah/transport//require;
spdadd ::/0 ::/0 ospf -P in ipsec ah/transport//require;
root@router2:~# 

The four ‘add’ lines create the four security associations. The first two allow for packets sent from eth1′s link-locak address on each router to ff02::5, which is the “All OSPFv3 Routers” link-local reserved multicast address. The second pair allow for AH-protected direct communication between the two routers. The ‘spdadd’ lines configure the network stack to require AH authentication for all inbound and outbound OSPF traffic.

After loading the setkey script, the security association database can be viewed by running ‘setkey -D’:

root@router1:~# ./linux-linux.setkey
root@router1:~# setkey -D
fe80::a00:27ff:fe7e:8d0f fe80::a00:27ff:feb4:ce0d
        ah mode=transport spi=131073(0x00020001) reqid=0(0x00000000)
        A: hmac-sha1  6f737066 76332073 68617265 64207365 63726574
        seq=0x00000000 replay=0 flags=0x00000000 state=mature
        created: Apr 16 11:04:56 2010   current: Apr 16 11:04:58 2010
        diff: 2(s)      hard: 0(s)      soft: 0(s)
        last:                           hard: 0(s)      soft: 0(s)
        current: 0(bytes)       hard: 0(bytes)  soft: 0(bytes)
        allocated: 0    hard: 0 soft: 0
        sadb_seq=1 pid=2511 refcnt=0
fe80::a00:27ff:feb4:ce0d fe80::a00:27ff:fe7e:8d0f
        ah mode=transport spi=131073(0x00020001) reqid=0(0x00000000)
        A: hmac-sha1  6f737066 76332073 68617265 64207365 63726574
        seq=0x00000000 replay=0 flags=0x00000000 state=mature
        created: Apr 16 11:04:56 2010   current: Apr 16 11:04:58 2010
        diff: 2(s)      hard: 0(s)      soft: 0(s)
        last:                           hard: 0(s)      soft: 0(s)
        current: 0(bytes)       hard: 0(bytes)  soft: 0(bytes)
        allocated: 0    hard: 0 soft: 0
        sadb_seq=2 pid=2511 refcnt=0
fe80::a00:27ff:feb4:ce0d ff02::5
        ah mode=transport spi=65538(0x00010002) reqid=0(0x00000000)
        A: hmac-sha1  6f737066 76332073 68617265 64207365 63726574
        seq=0x00000000 replay=0 flags=0x00000000 state=mature
        created: Apr 16 11:04:56 2010   current: Apr 16 11:04:58 2010
        diff: 2(s)      hard: 0(s)      soft: 0(s)
        last:                           hard: 0(s)      soft: 0(s)
        current: 0(bytes)       hard: 0(bytes)  soft: 0(bytes)
        allocated: 0    hard: 0 soft: 0
        sadb_seq=3 pid=2511 refcnt=0
fe80::a00:27ff:fe7e:8d0f ff02::5
        ah mode=transport spi=65537(0x00010001) reqid=0(0x00000000)
        A: hmac-sha1  6f737066 76332073 68617265 64207365 63726574
        seq=0x00000000 replay=0 flags=0x00000000 state=mature
        created: Apr 16 11:04:56 2010   current: Apr 16 11:04:58 2010
        diff: 2(s)      hard: 0(s)      soft: 0(s)
        last:                           hard: 0(s)      soft: 0(s)
        current: 0(bytes)       hard: 0(bytes)  soft: 0(bytes)
        allocated: 0    hard: 0 soft: 0
        sadb_seq=0 pid=2511 refcnt=0
root@router1:~# 

Restart Quagga (assuming it’s not already running), and the adjacency will appear in the list as before:

root@router1:~# /etc/init.d/quagga start
Loading capability module if not yet done.
Starting Quagga daemons (prio:10): zebra ospf6d.
root@router1:~#

root@router2:~# /etc/init.d/quagga start
Loading capability module if not yet done.
Starting Quagga daemons (prio:10): zebra ospf6d.
root@router2:~#

root@router1:~# VTYSH_PAGER=cat vtysh
Hello, this is Quagga (version 0.99.13).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
router1# show ipv6 ospf6 neighbor
Neighbor ID     Pri    DeadTime  State/IfState         Duration I/F[State]
172.31.250.61     1    00:00:30   Init/DROther         00:00:09 eth1[Waiting]
router1# show ipv6 ospf6 neighbor
Neighbor ID     Pri    DeadTime  State/IfState         Duration I/F[State]
172.31.250.61     1    00:00:36   Full/DR              00:00:04 eth1[BDR]
router1# exit
root@router1:~#

root@router1:~# ip -6 route
2002:f0f0:f0f0:1001::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
2002:f0f0:f0f0:1002::/64 via fe80::a00:27ff:feb4:ce0d dev eth1  proto zebra  metric 1  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth1  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
root@router1:~#

This time, however, tcpdump shows that the traffic between the routers has the AH header attached, with a cryptographic signature verifying the identity of the neighbour router:

root@router1:~# tcpdump -ni eth1 ip6 protochain ospf
Warning: Kernel filter failed: Invalid argument
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
11:15:02.997348 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: AH(spi=0x00010001,seq=0x1): OSPFv3, Hello, length 36
11:15:04.701022 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: AH(spi=0x00010002,seq=0x1): OSPFv3, Hello, length 36
11:15:13.001028 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: AH(spi=0x00010001,seq=0x2): OSPFv3, Hello, length 40
11:15:14.706083 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: AH(spi=0x00010002,seq=0x2): OSPFv3, Hello, length 40
11:15:23.011476 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: AH(spi=0x00010001,seq=0x3): OSPFv3, Hello, length 40
11:15:24.711929 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: AH(spi=0x00010002,seq=0x3): OSPFv3, Hello, length 40
11:15:33.021316 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: AH(spi=0x00010001,seq=0x4): OSPFv3, Hello, length 40
11:15:34.716145 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: AH(spi=0x00010002,seq=0x4): OSPFv3, Hello, length 40
11:15:43.012602 IP6 fe80::a00:27ff:fe7e:8d0f > fe80::a00:27ff:feb4:ce0d: AH(spi=0x00020001,seq=0x1): OSPFv3, Database Description, length 28
11:15:43.025608 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: AH(spi=0x00010001,seq=0x5): OSPFv3, Hello, length 40
11:15:44.704244 IP6 fe80::a00:27ff:feb4:ce0d > fe80::a00:27ff:fe7e:8d0f: AH(spi=0x00020001,seq=0x1): OSPFv3, Database Description, length 28
11:15:44.704499 IP6 fe80::a00:27ff:fe7e:8d0f > fe80::a00:27ff:feb4:ce0d: AH(spi=0x00020001,seq=0x2): OSPFv3, Database Description, length 68
11:15:44.705260 IP6 fe80::a00:27ff:feb4:ce0d > fe80::a00:27ff:fe7e:8d0f: AH(spi=0x00020001,seq=0x2): OSPFv3, LS-Request, length 40
11:15:44.705281 IP6 fe80::a00:27ff:feb4:ce0d > fe80::a00:27ff:fe7e:8d0f: AH(spi=0x00020001,seq=0x3): OSPFv3, Database Description, length 68
11:15:44.705406 IP6 fe80::a00:27ff:fe7e:8d0f > fe80::a00:27ff:feb4:ce0d: AH(spi=0x00020001,seq=0x3): OSPFv3, LS-Update, length 100
11:15:44.705472 IP6 fe80::a00:27ff:fe7e:8d0f > fe80::a00:27ff:feb4:ce0d: AH(spi=0x00020001,seq=0x4): OSPFv3, LS-Request, length 40
11:15:44.705510 IP6 fe80::a00:27ff:fe7e:8d0f > fe80::a00:27ff:feb4:ce0d: AH(spi=0x00020001,seq=0x5): OSPFv3, Database Description, length 28
11:15:44.706691 IP6 fe80::a00:27ff:feb4:ce0d > fe80::a00:27ff:fe7e:8d0f: AH(spi=0x00020001,seq=0x4): OSPFv3, LS-Update, length 100
11:15:44.706716 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: AH(spi=0x00010002,seq=0x5): OSPFv3, LS-Update, length 92
11:15:44.716271 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: AH(spi=0x00010002,seq=0x6): OSPFv3, Hello, length 40
11:15:47.712150 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: AH(spi=0x00010001,seq=0x6): OSPFv3, LS-Ack, length 96
11:15:47.712389 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: AH(spi=0x00010002,seq=0x7): OSPFv3, LS-Ack, length 56
11:15:49.711795 IP6 fe80::a00:27ff:fe7e:8d0f > fe80::a00:27ff:feb4:ce0d: AH(spi=0x00020001,seq=0x6): OSPFv3, LS-Update, length 60
11:15:52.716154 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: AH(spi=0x00010002,seq=0x8): OSPFv3, LS-Ack, length 36
11:15:53.025925 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: AH(spi=0x00010001,seq=0x7): OSPFv3, Hello, length 40
11:15:54.722931 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: AH(spi=0x00010002,seq=0x9): OSPFv3, Hello, length 40
11:16:03.032684 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: AH(spi=0x00010001,seq=0x8): OSPFv3, Hello, length 40
11:16:04.726516 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: AH(spi=0x00010002,seq=0xa): OSPFv3, Hello, length 40
11:16:13.041695 IP6 fe80::a00:27ff:fe7e:8d0f > ff02::5: AH(spi=0x00010001,seq=0x9): OSPFv3, Hello, length 40
11:16:14.732027 IP6 fe80::a00:27ff:feb4:ce0d > ff02::5: AH(spi=0x00010002,seq=0xb): OSPFv3, Hello, length 40
^C
30 packets captured
42 packets received by filter
0 packets dropped by kernel
root@router1:~# 
  1. No comments yet.
(will not be published)
  1. No trackbacks yet.