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.