URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 94454
[ Назад ]

Исходное сообщение
"FreeBSD 9.1 и проблемы с функционированием драйвера сетевой bce"

Отправлено shaman.jr , 12-Мрт-13 17:27 
Имеем:
Железо: HP ProLiant DL360 G7

$ uname -a
FreeBSD serv.pc.local 9.1-RELEASE FreeBSD 9.1-RELEASE #0: Mon Mar 11 16:16:29 EET 2013     root@serv.pc.local:/usr/obj/usr/src/sys/kern_2013_03_11  amd64

Конфигурация ядра (отличия от GENERIC):

options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10000
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=2
options DUMMYNET
options HZ="1000"

options SC_DISABLE_REBOOT
options QUOTA
options SMBFS
options NETSMB

options LIBMCHAIN
options LIBICONV

Настраиваю сервер для работы:
bce0 - внешняя сеть, к провайдеру
bce1 - локалка

Пока не настраиваю NAT - все идет нормально.
При попытке включить ядерный ipfw nat в /etc/rc.conf

natd_enable="YES"
natd_interface="bce0"
natd_flags=""

связь с сервером по ssh рвется и вообще сетевая работа через bge0 прекращается.
На консоли вижу следующее:

368 Mar 12 12:51:58 serv kernel: bce0: /usr/src/sys/dev/bce/if_bce.c(7925): Watchdog timeout occurred, resetting!
369 Mar 12 12:51:58 serv kernel: bce0: link state changed to DOWN
369 Mar 12 12:51:59 serv kernel: bce0: link state changed to UP

и дальше куча подобных сообщений.


В /var/log/messages записи по bce имеют вид

bce0: <HP NC382i DP Multifunction Gigabit Server Adapter (C0)> mem 0xf4000000-0xf5ffffff
miibus0: <MII bus> on bce0
brgphy0: <BCM5709 10/100/1000baseT PHY> PHY 1 on miibus0
brgphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-master, 10    00baseT-FDX, 1000baseT-FDX-master, auto, auto-flow

Прошу совета по решению этой проблемы.
Спасибо!


Содержание

Сообщения в этом обсуждении
"FreeBSD 9.1 и проблемы с функционированием драйвера сетевой bce"
Отправлено Сергей , 12-Мрт-13 17:50 

> natd_enable="YES"
> natd_interface="bce0"
> natd_flags=""

Ядерный нат включается не так
ipfw_nat_enable="YES"
ipfw_nat_interface="bce0"


"FreeBSD 9.1 и проблемы с функционированием драйвера сетевой bce"
Отправлено shaman.jr , 12-Мрт-13 17:54 
>> natd_enable="YES"
>> natd_interface="bce0"
>> natd_flags=""
>  Ядерный нат включается не так
>  ipfw_nat_enable="YES"
>  ipfw_nat_interface="bce0"

Извиняюсь, конечно же включал так

firewall_nat_enable="YES"
firewall_nat_interface="bce0"

скопипастил не те комментарии из rc.conf !


"FreeBSD 9.1 и проблемы с функционированием драйвера сетевой bce"
Отправлено михалыч , 13-Мрт-13 07:02 
>>> natd_enable="YES"
>>> natd_interface="bce0"
>>> natd_flags=""
>>  Ядерный нат включается не так
>>  ipfw_nat_enable="YES"
>>  ipfw_nat_interface="bce0"
> Извиняюсь, конечно же включал так
> firewall_nat_enable="YES"
> firewall_nat_interface="bce0"
> скопипастил не те комментарии из rc.conf !

Я, конечно, очень дико извиняюсь )), но может вы еще
что-нибудь скопипастили не то?
Сам firewall, например, в rc.conf не включили?
rc.conf и ipfw show в студию?


"FreeBSD 9.1 и проблемы с функционированием драйвера сетевой bce"
Отправлено shaman.jr , 13-Мрт-13 11:46 
>[оверквотинг удален]
>>>  ipfw_nat_enable="YES"
>>>  ipfw_nat_interface="bce0"
>> Извиняюсь, конечно же включал так
>> firewall_nat_enable="YES"
>> firewall_nat_interface="bce0"
>> скопипастил не те комментарии из rc.conf !
> Я, конечно, очень дико извиняюсь )), но может вы еще
> что-нибудь скопипастили не то?
> Сам firewall, например, в rc.conf не включили?
> rc.conf и ipfw show в студию?

$ cat /etc/rc.conf

hostname="serv.local"

defaultrouter="192.168.1.1"
ifconfig_bce0="inet 192.168.1.107 netmask 255.255.255.0"

ifconfig_bce1="inet 192.168.90.1 netmask 255.255.255.0"

gateway_enable="YES"

sshd_enable="YES"
ntpd_enable="YES"

firewall_enable="YES"
firewall_quiet="YES"
firewall_type="OPEN"

firewall_nat_enable="YES"
firewall_nat_interface="bce0"
dummynet_enable="YES"

named_enable="YES"


# ipfw show

00050 238 24995 nat 123 ip4 from any to any via bce0
00100  80 11684 allow ip from any to any via lo0
00200   0     0 deny ip from any to 127.0.0.0/8
00300   0     0 deny ip from 127.0.0.0/8 to any
00400   0     0 deny ip from any to ::1
00500   0     0 deny ip from ::1 to any
00600   1    76 allow ipv6-icmp from :: to ff02::/16
00700   0     0 allow ipv6-icmp from fe80::/10 to fe80::/10
00800   1    96 allow ipv6-icmp from fe80::/10 to ff02::/16
00900   0     0 allow ipv6-icmp from any to any ip6 icmp6types 1
01000   0     0 allow ipv6-icmp from any to any ip6 icmp6types 2,135,136
65000   0     0 allow ip from any to any
65535   6   452 deny ip from any to any

Пожалуйста.


"FreeBSD 9.1 и проблемы с функционированием драйвера сетевой bce"
Отправлено михалыч , 13-Мрт-13 13:44 
>[оверквотинг удален]
> to ff02::/16
> 00900   0     0 allow ipv6-icmp from
> any to any ip6 icmp6types 1
> 01000   0     0 allow ipv6-icmp from
> any to any ip6 icmp6types 2,135,136
> 65000   0     0 allow ip from
> any to any
> 65535   6   452 deny ip from any to
> any
> Пожалуйста.

Судя по rc.conf вы используете ipv4
Зачем в правилах ipfw ipv6 ?

Тип файервола указан как OPEN
который предполагает подгрузку всего одного правила
65000 pass all from any to any
У вас есть и другие правила.
Тогда при чем здесь OPEN ?

Попробовать подгружать правила для nat прямо в самом скрипте?


"FreeBSD 9.1 и проблемы с функционированием драйвера сетевой bce"
Отправлено shaman.jr , 13-Мрт-13 17:59 
>[оверквотинг удален]
>> any
>> Пожалуйста.
> Судя по rc.conf вы используете ipv4
> Зачем в правилах ipfw ipv6 ?
> Тип файервола указан как OPEN
> который предполагает подгрузку всего одного правила
> 65000 pass all from any to any
> У вас есть и другие правила.
> Тогда при чем здесь OPEN ?
> Попробовать подгружать правила для nat прямо в самом скрипте?

Установил уже 32-разрядную FreeBSD 9.1 (на том же железе)

cat /etc/rc.conf

hostname="serv.local"
ifconfig_bce0=" inet 192.168.1.107 netmask 255.255.255.0"
ifconfig_bce1=" inet 192.168.90.1 netmask 255.255.255.0"

defaultrouter="192.168.1.1"
sshd_enable="YES"
ntpd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"


firewall_enable="YES"
firewall_quiet="YES"
firewall_type="OPEN"

firewall_nat_enable="YES"
firewall_nat_interface="bce0"
dummynet_enable="YES"

В ядре выпилил поддержку IPv6.

Вот изменения от GENERIC

# changes
#          options         INET6                   # IPv6 communications protocols
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=1000
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=2
options DUMMYNET
options HZ="1000"

options SC_DISABLE_REBOOT
options QUOTA
options SMBFS
options NETSMB

options LIBMCHAIN
options LIBICONV
# changes

# ipfw show

00050 273 34425 nat 123 ip4 from any to any via bce0
00100  12  1656 allow ip from any to any via lo0
00200   0     0 deny ip from any to 127.0.0.0/8
00300   0     0 deny ip from 127.0.0.0/8 to any
65000   0     0 allow ip from any to any
65535   0     0 deny ip from any to any

Firewall берется OPEN из штатного скрипта /etc/rc.firewall

При включенном NAT в rc.conf зайти на машину по ssh могу, но начав что либо делать - все глухо вешается (вплоть до того, что приходиться RESET жмакать в ILO)

При отключенном NAT в rc.conf (закоментаренном)- все работает как обычно.

Есть мысли, что это может быть ?


"FreeBSD 9.1 и проблемы с функционированием драйвера сетевой bce"
Отправлено sirius , 13-Мрт-13 18:10 
то есть машина вешается полностью? А что при этом пишет на консоли, тоже, что и в первом посте Вы писали? И что пишет в messages.log и скиньте еще пожалуйста
ipfw nat 1 show config
ifconfig

"FreeBSD 9.1 и проблемы с функционированием драйвера сетевой bce"
Отправлено shaman.jr , 13-Мрт-13 18:45 
> то есть машина вешается полностью? А что при этом пишет на консоли,
> тоже, что и в первом посте Вы писали? И что пишет
> в messages.log и скиньте еще пожалуйста
> ipfw nat 1 show config
> ifconfig

# ipfw show

00050 1525 161252 nat 123 ip4 from any to any via bce0
00100   12   1656 allow ip from any to any via lo0
00200    0      0 deny ip from any to 127.0.0.0/8
00300    0      0 deny ip from 127.0.0.0/8 to any
65000    0      0 allow ip from any to any
65535    0      0 deny ip from any to any

# ipfw nat show config

ipfw nat 123 config if bce0 log

# ifconfig

bce0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=c01bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
        ether ac:16:2d:b2:b5:dc
        inet 192.168.1.107 netmask 0xffffff00 broadcast 192.168.1.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
bce1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=c01bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
        ether ac:16:2d:b2:b5:de
        inet 192.168.90.1 netmask 0xffffff00 broadcast 192.168.90.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
bce2: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=c01bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
        ether ac:16:2d:b2:b5:e8
        media: Ethernet autoselect
bce3: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=c01bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
        ether ac:16:2d:b2:b5:ea
        media: Ethernet autoselect
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
        inet 127.0.0.1 netmask 0xff000000

После того как я включаю nat в rc.conf и захожу по ssh с интерфейса bce0, через секунду сервер полностью вешается, в /var/log/messages ниче не попадает, на консоли видно следующее:

bce0: discard frame w/o packet header
bce0: discard frame w/o leading ethernet (len 0 pkt 4294967292)
bce0: discard frame w/o leading ethernet (len 0 pkt 47380)

(PS пачкорды менял, сервер новый)


"FreeBSD 9.1 и проблемы с функционированием драйвера сетевой bce"
Отправлено sirius , 13-Мрт-13 18:50 
чисто теоретически попробуйте в rc.conf задать и в ребут и проверить будет виснуть или нет.
ifconfig_bce0="inet 192.168.1.107 netmask 255.255.255.0 -rxcsum -txcsum -tso"

"FreeBSD 9.1 и проблемы с функционированием драйвера сетевой bce"
Отправлено shaman.jr , 13-Мрт-13 19:03 
> чисто теоретически попробуйте в rc.conf задать и в ребут и проверить будет
> виснуть или нет.
> ifconfig_bce0="inet 192.168.1.107 netmask 255.255.255.0 -rxcsum -txcsum -tso"

Я не знаю на сколько это все стабильно, но пока повесить сервер через ssh не удалось! ))

Спасибо большое! Сейчас буду изучать эти волшебные ключики!
Буду возвращаться на AMD64 инсталляцию.
Если возникнут проблемы обязательно отпишусь.

Спасибо!


"FreeBSD 9.1 и проблемы с функционированием драйвера сетевой bce"
Отправлено sirius , 13-Мрт-13 19:21 
>> чисто теоретически попробуйте в rc.conf задать и в ребут и проверить будет
>> виснуть или нет.
>> ifconfig_bce0="inet 192.168.1.107 netmask 255.255.255.0 -rxcsum -txcsum -tso"
> Я не знаю на сколько это все стабильно, но пока повесить сервер
> через ssh не удалось! ))
> Спасибо большое! Сейчас буду изучать эти волшебные ключики!
> Буду возвращаться на AMD64 инсталляцию.
> Если возникнут проблемы обязательно отпишусь.
> Спасибо!

Незачто) Такое же было на некоторых сетевых марвелл, эти параметры отвечают за расчет контрольных сумм для TX RX очередей и сегментацию и сборку тсп пакетов сетевой, или самим процессором машины, на интеловских сетевых такое работает корректно, на остальных как повезет, в вашем случае не работает, возможно дрова допилят со временем и можно будет вернуть эти параметры. Еще при включенных этих параметрах tcpdump может показывать incorrect checksum для тсп пакетов, т.к. рассчет сумм будет идти после тспдампа уже на выходе из сетевой, и эти поля будут пустыми. Както так ))


"FreeBSD 9.1 и проблемы с функционированием драйвера сетевой bce"
Отправлено Олег , 02-Май-13 16:27 
>> чисто теоретически попробуйте в rc.conf задать и в ребут и проверить будет
>> виснуть или нет.
>> ifconfig_bce0="inet 192.168.1.107 netmask 255.255.255.0 -rxcsum -txcsum -tso"
> Я не знаю на сколько это все стабильно, но пока повесить сервер
> через ssh не удалось! ))
> Спасибо большое! Сейчас буду изучать эти волшебные ключики!
> Буду возвращаться на AMD64 инсталляцию.
> Если возникнут проблемы обязательно отпишусь.
> Спасибо!

Ядерный nat, связан с libalias (в ядре вы указали options LIBALIAS) в man к ipfw рекомендуют выключать tso на интерфейсе где будет nat, эксперементально, выяснили народ, что всем по разному помогает один из трех либо все три параметра -rxcsum -txcsum -tso

Due to the architecture of libalias(3), ipfw nat is not compatible with
the TCP segmentation offloading (TSO).  Thus, to reliably nat your net-
work traffic, please disable TSO on your NICs using ifconfig(8).