Hi all. I'm almost there getting IS-IS to work without issue. I'm now faced with the following error log: 2020/04/17 10:02:01 ISIS: IS-IS bpf: could not transmit packet on em0: Input/output error 2020/04/17 10:02:01 ISIS: [EC 67108865] ISIS-Snp (1): Send L2 PSNP on em0 failed This repeats every second. Anyone know what this could be? Systems is FreeBSD-12.1-RELEASE-p3. Despite the error, IS-IS is running and routing is good, talking to a Cisco IOS XE implementation on the other side. So the error is throwing me off. Mark.
Mark - Some quick googling led me down this rat hole: https://www.freebsd.org/cgi/man.cgi?write(2) You are receiving a EIO error message from the os. The version of FRR that you are using uses BPF for sending data. This is a broadcast frame attempt at being sent. From another search of freebsd bpf and EIO I got this: https://github.com/OpenAoE/vblade/issues/7 and this: https://github.com/freebsd/freebsd/pull/131 and finally this: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=205164 The discussion boils down to the bpf backend has a limit of packet data limited to a page size( 4k ). From my recollection you are using a very large MTU size. I suspect that this would be the problem for you. If you compile your own version of FRR( I cannot recall ), I would recommend modifying the configure.ac file for figuring out the ISIS backend to use: diff --git a/configure.ac b/configure.ac index 6f7ca9def..b01b8655b 100755 --- a/configure.ac +++ b/configure.ac @@ -1401,22 +1401,18 @@ case "$host_os" in ISIS_METHOD_MACRO="ISIS_METHOD_DLPI" ;; *) - if test "$ac_cv_header_net_bpf_h" = "no"; then - if test "$ac_cv_header_sys_dlpi_h" = "no"; then - AC_MSG_RESULT([none]) - if test "$enable_isisd" = "yes" -o "$enable_fabricd" = "yes"; then - AC_MSG_FAILURE([IS-IS support requested but no packet backend found]) - fi - AC_MSG_WARN([*** IS-IS support will not be built ***]) - enable_isisd="no" - enable_fabricd="no" - else - AC_MSG_RESULT([DLPI]) + if test "$ac_cv_header_sys_dlpi_h" = "no"; then + AC_MSG_RESULT([none]) + if test "$enable_isisd" = "yes" -o "$enable_fabricd" = "yes"; then + AC_MSG_FAILURE([IS-IS support requested but no packet backend found]) fi - ISIS_METHOD_MACRO="ISIS_METHOD_DLPI" + AC_MSG_WARN([*** IS-IS support will not be built ***]) + enable_isisd="no" + enable_fabricd="no" else - AC_MSG_RESULT([BPF]) - ISIS_METHOD_MACRO="ISIS_METHOD_BPF" + AC_MSG_RESULT([DLPI]) + fi + ISIS_METHOD_MACRO="ISIS_METHOD_DLPI" fi ;; esac and see if this works for you in forcing a different backend. Please note I have not tried this, but would be interested in understanding if this works for you and if so we can add a custom configure option for freebsd to get around this issue. On Fri, Apr 17, 2020 at 6:04 AM Mark Tinka <mark.tinka@seacom.mu> wrote:
Hi all.
I'm almost there getting IS-IS to work without issue. I'm now faced with the following error log:
2020/04/17 10:02:01 ISIS: IS-IS bpf: could not transmit packet on em0: Input/output error 2020/04/17 10:02:01 ISIS: [EC 67108865] ISIS-Snp (1): Send L2 PSNP on em0 failed
This repeats every second.
Anyone know what this could be?
Systems is FreeBSD-12.1-RELEASE-p3.
Despite the error, IS-IS is running and routing is good, talking to a Cisco IOS XE implementation on the other side. So the error is throwing me off.
Mark. _______________________________________________ frog mailing list frog@lists.frrouting.org https://lists.frrouting.org/listinfo/frog
On 17/Apr/20 12:51, Donald Sharp wrote:
Mark -
Some quick googling led me down this rat hole:
https://www.freebsd.org/cgi/man.cgi?write(2)
You are receiving a EIO error message from the os. The version of FRR that you are using uses BPF for sending data. This is a broadcast frame attempt at being sent. From another search of freebsd bpf and EIO I got this:
https://github.com/OpenAoE/vblade/issues/7
and this:
https://github.com/freebsd/freebsd/pull/131
and finally this:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=205164
The discussion boils down to the bpf backend has a limit of packet data limited to a page size( 4k ). From my recollection you are using a very large MTU size. I suspect that this would be the problem for you. If you compile your own version of FRR( I cannot recall ), I would recommend modifying the configure.ac file for figuring out the ISIS backend to use:
diff --git a/configure.ac b/configure.ac index 6f7ca9def..b01b8655b 100755 --- a/configure.ac +++ b/configure.ac @@ -1401,22 +1401,18 @@ case "$host_os" in ISIS_METHOD_MACRO="ISIS_METHOD_DLPI" ;; *) - if test "$ac_cv_header_net_bpf_h" = "no"; then - if test "$ac_cv_header_sys_dlpi_h" = "no"; then - AC_MSG_RESULT([none]) - if test "$enable_isisd" = "yes" -o "$enable_fabricd" = "yes"; then - AC_MSG_FAILURE([IS-IS support requested but no packet backend found]) - fi - AC_MSG_WARN([*** IS-IS support will not be built ***]) - enable_isisd="no" - enable_fabricd="no" - else - AC_MSG_RESULT([DLPI]) + if test "$ac_cv_header_sys_dlpi_h" = "no"; then + AC_MSG_RESULT([none]) + if test "$enable_isisd" = "yes" -o "$enable_fabricd" = "yes"; then + AC_MSG_FAILURE([IS-IS support requested but no packet backend found]) fi - ISIS_METHOD_MACRO="ISIS_METHOD_DLPI" + AC_MSG_WARN([*** IS-IS support will not be built ***]) + enable_isisd="no" + enable_fabricd="no" else - AC_MSG_RESULT([BPF]) - ISIS_METHOD_MACRO="ISIS_METHOD_BPF" + AC_MSG_RESULT([DLPI]) + fi + ISIS_METHOD_MACRO="ISIS_METHOD_DLPI" fi ;; esac
and see if this works for you in forcing a different backend. Please note I have not tried this, but would be interested in understanding if this works for you and if so we can add a custom configure option for freebsd to get around this issue.
Thanks for the very helpful feedback, Donald. As we discussed on Slack, looks like we need to find a way for FRR on FreeBSD to understand that for IS-IS, there is a size limit for the PSNP of 4,096 bytes. Mark.
participants (2)
-
Donald Sharp -
Mark Tinka