Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OSPFv3 Changing area type to stub makes the neighbor stuck at Exstart state #3812

Open
2 tasks done
Sutharsan85 opened this issue Feb 17, 2019 · 6 comments
Open
2 tasks done
Assignees
Labels
ospfv3 triage Needs further investigation

Comments

@Sutharsan85
Copy link

Sutharsan85 commented Feb 17, 2019

Things you may try first

(put "x" in "[ ]" if you already tried following)

  • Did you check if this is a duplicate issue?
  • Did you test it on the latest FRRouting/frr master branch?

Description

FRR is running on ubuntu in VMs. Initially a normal area is provisioned and the lan interface is part of the area. Now when the area type is changed on both the nodes, ospf neighbor is never formed with both of them stuck at Exstart state.

Steps to Reproduce

  1. Provision ospfv3 on both the nodes
  2. Redistribute static routes (redistribute connected route-map XXX). Lan interface is part of this route map
  3. Create a normal area
  4. Associate an interface with the area
  5. Verify neighborship formed on both the nodes
  6. Now remove the interface from the area (no interface area <0.0.0.0>)
  7. Change the area type to stub (area 0.0.0.0 stub)
  8. Add the interface to the area (interface area 0.0.0.0)

Expected behavior:
Neighborship to be formed normally.

Actual behavior:
The neighbors stuck at ExStart state.

Components

ospf6d

Versions

  • OS: [name] [version]
  • Kernel: [Linux/BSD] [version]
  • FRR: [version]

Attachments

Tried to decode some of the logs and found relevant portions below
2019/02/13 16:41:48 OSPF6: Hello received on eth000
2019/02/13 16:41:48 OSPF6: src: fe80::30fe:47ff:fe0b:9cc2
2019/02/13 16:41:48 OSPF6: dst: ff02::5
2019/02/13 16:41:48 OSPF6: OSPFv3 Type:1 Len:36 Router-ID:10.11.12.13
2019/02/13 16:41:48 OSPF6: Area-ID:0.0.0.0 Cksum:d397 Instance-ID:0
2019/02/13 16:41:48 OSPF6: I/F-Id:22 Priority:1 Option:--|R|-|--|-|V6
2019/02/13 16:41:48 OSPF6: HelloInterval:10 DeadInterval:40
2019/02/13 16:41:48 OSPF6: DR:0.0.0.0 BDR:0.0.0.0
2019/02/13 16:41:48 OSPF6: E-bit mismatch
2019/02/13 16:41:51 OSPF6: Hello send on eth000
2019/02/13 16:41:51 OSPF6: src: fe80::807f:67ff:fe96:262f
2019/02/13 16:41:51 OSPF6: dst: ff02::5
2019/02/13 16:41:51 OSPF6: OSPFv3 Type:1 Len:40 Router-ID:14.15.16.1
2019/02/13 16:41:51 OSPF6: Area-ID:0.0.0.0 Cksum:0 Instance-ID:0
2019/02/13 16:41:51 OSPF6: I/F-Id:22 Priority:1 Option:--|R|-|--|E|V6
2019/02/13 16:41:51 OSPF6: HelloInterval:10 DeadInterval:40
2019/02/13 16:41:51 OSPF6: DR:10.11.12.13 BDR:14.15.16.1
2019/02/13 16:41:51 OSPF6: Neighbor: 10.11.12.13
2019/02/13 16:41:55 OSPF6:

2019/02/13 16:42:12 OSPF6: Interface Event eth000: [InterfaceUp]
2019/02/13 16:42:12 OSPF6: Filter out Linklocal: fe80::807f:67ff:fe96:262f/64
2019/02/13 16:42:12 OSPF6: Interface state change eth000: Down -> Waiting
2019/02/13 16:42:12 OSPF6: SPF: Scheduled in 0 msec
2019/02/13 16:42:12 OSPF6: Hello send on eth000
2019/02/13 16:42:12 OSPF6: src: fe80::807f:67ff:fe96:262f
2019/02/13 16:42:12 OSPF6: dst: ff02::5
2019/02/13 16:42:12 OSPF6: OSPFv3 Type:1 Len:36 Router-ID:14.15.16.1
2019/02/13 16:42:12 OSPF6: Area-ID:0.0.0.0 Cksum:0 Instance-ID:0
2019/02/13 16:42:12 OSPF6: I/F-Id:22 Priority:1 Option:--|R|-|--|-|V6
2019/02/13 16:42:12 OSPF6: HelloInterval:10 DeadInterval:40
2019/02/13 16:42:12 OSPF6: DR:0.0.0.0 BDR:0.0.0.0
2019/02/13 16:42:12 OSPF6: SPF processing: # Areas: 1, SPF runtime: 0 sec 19 usec, Reason: L+, L-

2019/02/13 16:42:18 OSPF6: DbDesc received on eth000
2019/02/13 16:42:18 OSPF6: src: fe80::30fe:47ff:fe0b:9cc2
2019/02/13 16:42:18 OSPF6: dst: fe80::807f:67ff:fe96:262f
2019/02/13 16:42:18 OSPF6: OSPFv3 Type:2 Len:168 Router-ID:10.11.12.13
2019/02/13 16:42:18 OSPF6: Area-ID:0.0.0.0 Cksum:bb22 Instance-ID:0
2019/02/13 16:42:18 OSPF6: MBZ: 0 Option: --|R|-|--|-|V6 IfMTU: 1500
2019/02/13 16:42:18 OSPF6: MBZ: 0 Bits: --s SeqNum: 0x1ef9
2019/02/13 16:42:18 OSPF6: [Link Id:0.0.0.22 Adv:10.11.12.13]
2019/02/13 16:42:18 OSPF6: Age: 41 SeqNum: 0x80000002 Cksum: 38ac Len: 56
2019/02/13 16:42:18 OSPF6: [Link Id:0.0.0.22 Adv:14.15.16.1]
2019/02/13 16:42:18 OSPF6: Age: 139 SeqNum: 0x80000006 Cksum: 83e8 Len: 56
2019/02/13 16:42:18 OSPF6: [Link Id:0.0.0.22 Adv:192.168.1.1]
2019/02/13 16:42:18 OSPF6: Age: 732 SeqNum: 0x80000001 Cksum: 8224 Len: 56
2019/02/13 16:42:18 OSPF6: [Router Id:0.0.0.0 Adv:10.11.12.13]
2019/02/13 16:42:18 OSPF6: Age: 47 SeqNum: 0x80000001 Cksum: cc39 Len: 24
2019/02/13 16:42:18 OSPF6: [Intra-Prefix Id:0.0.0.0 Adv:10.11.12.13]
2019/02/13 16:42:18 OSPF6: Age: 41 SeqNum: 0x80000001 Cksum: c23c Len: 44
2019/02/13 16:42:18 OSPF6: [AS-External Id:0.0.0.1 Adv:10.11.12.13]
2019/02/13 16:42:18 OSPF6: Age: 728 SeqNum: 0x80000001 Cksum: 4cf7 Len: 36
2019/02/13 16:42:18 OSPF6: [AS-External Id:0.0.0.1 Adv:14.15.16.1]
2019/02/13 16:42:18 OSPF6: Age: 68 SeqNum: 0x80000004 Cksum: 2e13 Len: 36
2019/02/13 16:42:18 OSPF6: Neighbor Event 10.11.12.13%eth000: NegotiationDone
2019/02/13 16:42:18 OSPF6: Neighbor state change 10.11.12.13%eth000: [ExStart]->[ExChange] (NegotiationDone)
2019/02/13 16:42:18 OSPF6: [Link Id:0.0.0.22 Adv:10.11.12.13]
2019/02/13 16:42:18 OSPF6: Add request (Received MoreRecent)
2019/02/13 16:42:18 OSPF6: [Link Id:0.0.0.22 Adv:14.15.16.1]
2019/02/13 16:42:18 OSPF6: Discard (Existing MoreRecent)
2019/02/13 16:42:18 OSPF6: [Link Id:0.0.0.22 Adv:192.168.1.1]
2019/02/13 16:42:18 OSPF6: Discard (Existing MoreRecent)
2019/02/13 16:42:18 OSPF6: [Router Id:0.0.0.0 Adv:10.11.12.13]
2019/02/13 16:42:18 OSPF6: Add request (No database copy)
2019/02/13 16:42:18 OSPF6: [Intra-Prefix Id:0.0.0.0 Adv:10.11.12.13]
2019/02/13 16:42:18 OSPF6: Add request (No database copy)
2019/02/13 16:42:18 OSPF6: [AS-External Id:0.0.0.1 Adv:10.11.12.13]
2019/02/13 16:42:18 OSPF6: SeqNumMismatch (E-bit mismatch), discard
2019/02/13 16:42:18 OSPF6: Neighbor Event 10.11.12.13%eth000: SeqNumberMismatch
2019/02/13 16:42:18 OSPF6: Neighbor state change 10.11.12.13%eth000: [ExChange]->[ExStart] (SeqNumberMismatch)

You're also welcomed to provide us with any other data you think may be useful.

Thanks!

@ton31337
Copy link
Member

Could you please add configurations you used to reproduce this issue?

@qlyoung qlyoung added ospfv3 triage Needs further investigation labels Feb 19, 2019
@Sutharsan85
Copy link
Author

Hi All,

I was able to fix this issue by avoiding copying External LSAs into neighbors summary list if the area of that neighbor is stub.
In file ospf6d/ospf6_neighbor.c, function, int negotiation_done(struct thread *thread)
I have added the following lines and it seems that this is working. Can you please let me know if this is OK?

/* AS-external-LSAs are omitted from the Database summary list if the area has

  • been configured as a stub. */
    if (!(IS_AREA_STUB(on->ospf6_if->area)))
    {
    for (ALL_LSDB(on->ospf6_if->area->ospf6->lsdb, lsa)) {
    if (OSPF6_LSA_IS_MAXAGE(lsa)) {
    ospf6_increment_retrans_count(lsa);
    ospf6_lsdb_add(ospf6_lsa_copy(lsa), on->retrans_list);
    } else
    ospf6_lsdb_add(ospf6_lsa_copy(lsa), on->summary_list);
    }
    }

@Sutharsan85
Copy link
Author

Sutharsan85 commented Feb 24, 2019

router ospf6
ospf6 router-id 1.2.3.4
redistribute connected route-map DEFAULT_ONE
interface eth0 area 0.0.0.0

Now in this, i am just changing the area-type as stub for the area 0.0.0.0

@Sutharsan85
Copy link
Author

Hi @donaldsharp - Can you please help me with steps to raise PR with this fix?

@RomLecat
Copy link

Can confirm the issue is happening. Any update ?

Thanks

@Sutharsan85
Copy link
Author

This issue is still there. I am seeing if i can raise a new PR with the changes mentioned above

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ospfv3 triage Needs further investigation
Projects
None yet
Development

No branches or pull requests

5 participants