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

No response to IPv6 unicast reachability check NSs #93

Closed
mivsvit opened this issue Jun 19, 2022 · 4 comments
Closed

No response to IPv6 unicast reachability check NSs #93

mivsvit opened this issue Jun 19, 2022 · 4 comments
Assignees
Labels
bug Something isn't working fixed

Comments

@mivsvit
Copy link

mivsvit commented Jun 19, 2022

Our BNG under test has a feature where it tests IPoE subscriber host connectivity by using unicast IPv6 Neighbour Solicitations sent to the access interface address. If no NAs are received the BNG declares host connectivity is lost and tears down the IPoE session. These checks can be sent periodically or be event triggered.

In our use-case, each bngblaster session receives an IA_PD via DHCPv6 and has only a locally generated fe80::/10 link local address for the access interface between it and the BNG. No DHCPv6 IA_NA is assigned.

IPv6 NSs sent from the gateway address to the network interface are responded to successfully by bngblaster. However, NSs sent from the BNG to the bngblaster access interfaces (such as the packets fe80::167b:acff:feac:8ebf → fe80::ffff:ffff:ff00:1 in the output below) appear in the pcap generated by bngblaster but are not responded to and the BNG brings the session down. The corresponding IPv4 host connectivity check which is an ARP request to the access interface address (assigned by DHCPv4) works fine. We are running bngblaster 0.7.8.

Expected behaviour is an IPv6 NA reply is sent by bngblaster from a source of an address assigned to the access interface from which the NS was received and with a destination of the source address of the received NS.

$ bngblaster -v
Version: DEV
Compiler: GNU (9.4.0)
GIT:
  REF: main
  SHA: 0abdeaf2eed9fc3b78b90c2dadf92548dfd7dccf
IO Modes: packet_mmap_raw (default), packet_mmap, raw

Jun 19 19:29:21.047988 Resolve network interfaces
Jun 19 19:29:21.048162 All network interfaces resolved
Jun 19 19:29:21.075023 IPv6 (ID: 1) DHCPv6 IA_PD prefix 2001:db8:3400:1800::/56
Jun 19 19:29:26.057986 IPv4 (ID: 1) address 100.66.0.11
Jun 19 19:29:26.060320 ALL SESSIONS ESTABLISHED

$ tshark -r ipv6-no-na.pcap icmpv6
    2   0.000000 2001:db8:2016::2 → ff02::1:ff00:1 ICMPv6 86 Neighbor Solicitation for 2001:db8:2016::1 from 00:0c:29:de:e3:ef
    4   0.001257 2001:db8:2016::1 → 2001:db8:2016::2 ICMPv6 86 Neighbor Advertisement 2001:db8:2016::1 (rtr, sol, ovr) is at f0:0d:be:ef:5a:ba
    8   1.001388 2001:db8:2016::2 → ff02::1:ff00:1 ICMPv6 86 Neighbor Solicitation for 2001:db8:2016::1 from 00:0c:29:de:e3:ef
   10   1.002855 2001:db8:2016::1 → 2001:db8:2016::2 ICMPv6 86 Neighbor Advertisement 2001:db8:2016::1 (rtr, sol, ovr) is at f0:0d:be:ef:5a:ba
   12   1.028243 fe80::ffff:ffff:ff00:1 → ff02::2      ICMPv6 70 Router Solicitation
   13   1.119500 fe80::167b:acff:feac:8ebf → fe80::ffff:ffff:ff00:1 ICMPv6 82 Router Advertisement from f0:0d:be:ef:5b:32
   15   5.058367 2001:db8:2016::1 → 2001:db8:2016::2 ICMPv6 86 Neighbor Solicitation for 2001:db8:2016::2 from f0:0d:be:ef:5a:ba
   16   5.059570 2001:db8:2016::2 → 2001:db8:2016::1 ICMPv6 86 Neighbor Advertisement 2001:db8:2016::2 (sol, ovr) is at 00:0c:29:de:e3:ef
   26  60.659329 fe80::167b:acff:feac:8ebf → fe80::ffff:ffff:ff00:1 ICMPv6 90 Neighbor Solicitation for fe80::ffff:ffff:ff00:1 from f0:0d:be:ef:5b:32
   31  90.659055 fe80::167b:acff:feac:8ebf → fe80::ffff:ffff:ff00:1 ICMPv6 90 Neighbor Solicitation for fe80::ffff:ffff:ff00:1 from f0:0d:be:ef:5b:32
   34 120.658560 fe80::167b:acff:feac:8ebf → fe80::ffff:ffff:ff00:1 ICMPv6 90 Neighbor Solicitation for fe80::ffff:ffff:ff00:1 from f0:0d:be:ef:5b:32
   37 150.658771 fe80::167b:acff:feac:8ebf → fe80::ffff:ffff:ff00:1 ICMPv6 90 Neighbor Solicitation for fe80::ffff:ffff:ff00:1 from f0:0d:be:ef:5b:32   

IPv4 connectivity check:

   86 416.664069 f0:0d:be:ef:5b:32 → 02:00:00:00:00:01 ARP 60 Who has 100.66.0.11? Tell 100.66.0.1
   87 416.664144 02:00:00:00:00:01 → f0:0d:be:ef:5b:32 ARP 50 100.66.0.11 is at 02:00:00:00:00:01

Config:

{
    "interfaces": {
        "qdisc-bypass": true,
        "io-mode": "packet_mmap_raw",
         "network": {
         "interface": "ens160.2016",
         "address": "172.31.19.5",
         "gateway": "172.31.19.4",
        "capture-include-streams": false,
         "address-ipv6": "2001:db8:2016::2",
         "gateway-ipv6": "2001:db8:2016::1",
         "tx-interval": 1,
        "rx-interval": 1,
        "io-slots": 4096
        },
        "access": [
        {
            "interface": "ens224f1",
            "type": "ipoe",
            "qinq": "false",
            "outer-vlan-min": 2016,
            "outer-vlan-max": 2048,
            "inner-vlan-min": 2,
            "inner-vlan-max": 4094,
            "ipv4": true,
            "ipv6": true,
            "i1_start": "500",
            "i2_start": "1000",
            "vlan-mode": "1:1"
                    }
     ]
    },
    "sessions": {
        "count": 1,
        "session-time": 0,
        "max-outstanding": 16000,
        "start-rate": 1000,
        "stop-rate": 1000
    },
            "ipv4": true,
            "ipv6": true,
            "i1_start": "500",
            "i2_start": "1000",
            "vlan-mode": "1:1"
        }
     ]
    },
    "sessions": {
        "count": 1,
        "session-time": 0,
        "max-outstanding": 16000,
        "start-rate": 1000,
        "stop-rate": 1000
    },
    "ipoe": {
            "ipv4": true,
            "arp-timeout": 5,
            "arp-interval": 300,
                    "ipv6": true
    },
    "access-line": {
        "agent-remote-id": "ABCDEFGH{session-global}",
        "agent-circuit-id": "0.0.0.0/0.0.0.0 eth 0:{session-global}"
    },
    "dhcp": {
        "broadcast": true,
        "enable": true
    },
    "dhcpv6": {
        "enable": true,
        "rapid-commit": true
    },
   "session-traffic": {
        "ipv4-pps": 0,
        "ipv6pd-pps": 0
    }
}

A small amount of debugging verified that the condition at

} else if(icmpv6->type == IPV6_ICMPV6_NEIGHBOR_SOLICITATION) {

is passing when the IPv6 NSs are received.

@mivsvit mivsvit added the bug Something isn't working label Jun 19, 2022
@GIC-de
Copy link
Member

GIC-de commented Jun 20, 2022

This issues should be fixed in latest dev branch. Could you please verify!

@mivsvit
Copy link
Author

mivsvit commented Jun 20, 2022

Hi Christian,

Thank you very much for looking at this so quickly.

NAs are now being sent and accepted by the BNG for the host connectivity check.

However they are being sourced from :: rather than the access interface address to which the NS was sent?

  526  68.597866 fe80::167b:acff:feac:8ebf → fe80::ffff:ffff:ff00:1 ICMPv6 90 Neighbor Solicitation for fe80::ffff:ffff:ff00:1 from f8:ba:e6:b4:5b:32
  527  68.599035           :: → fe80::167b:acff:feac:8ebf ICMPv6 94 Neighbor Advertisement fe80::ffff:ffff:ff00:1 (sol, ovr) is at 80:61:5f:11:b6:4c
Version: DEV
Compiler: GNU (9.4.0)
GIT:
REF: dev
SHA: c0f52186bfa768892db81e9051b880ff290e04ca
IO Modes: packet_mmap_raw (default), packet_mmap, raw

GIC-de added a commit that referenced this issue Jun 20, 2022
@GIC-de
Copy link
Member

GIC-de commented Jun 20, 2022

Thanks for you fast response, could you try again with latest dev!

@mivsvit
Copy link
Author

mivsvit commented Jun 20, 2022

That's working as expected now, thanks very much.

   14   5.021175 2001:db8:2016::1 → 2001:db8:2016::2 ICMPv6 86 Neighbor Solicitation for 2001:db8:2016::2 from f0:0d:be:ef:5a:ba
   15   5.022308 2001:db8:2016::2 → 2001:db8:2016::1 ICMPv6 86 Neighbor Advertisement 2001:db8:2016::2 (sol, ovr) is at 00:0c:29:de:e3:ef
  1276 160.564731 fe80::167b:acff:feac:8ebf → fe80::ffff:ffff:ff00:1 ICMPv6 90 Neighbor Solicitation for fe80::ffff:ffff:ff00:1 from f0:0d:be:ef:5b:32
  1277 160.565894 fe80::ffff:ffff:ff00:1 → fe80::167b:acff:feac:8ebf ICMPv6 94 Neighbor Advertisement fe80::ffff:ffff:ff00:1 (sol, ovr) is at 80:61:5f:11:b6:4c
$ bngblaster -v
Version: DEV
Compiler: GNU (9.4.0)
GIT:
 REF: dev
 SHA: 29f984ecd3580f0b47c88eecc4e501310bcc21b7

@GIC-de GIC-de added the fixed label Jun 28, 2022
@GIC-de GIC-de closed this as completed in b7a20ef Jun 28, 2022
Istvan91 pushed a commit to Istvan91/bngblaster that referenced this issue Jul 16, 2022
Istvan91 pushed a commit to Istvan91/bngblaster that referenced this issue Jul 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working fixed
Projects
None yet
Development

No branches or pull requests

2 participants