jumbo frames

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

jumbo frames

Непрочитанное сообщение zingel » 2008-12-16 15:15:38

Давно хотел испытать свой lagg0 на предмет поддержки jumbo frames, но тут встал у меня вопрос, какое лучше mtu назначить ему, ну и соответственно на коммутаторе куда это всё добро идёт... (гигабит там есть, коммутатор жирные фреймы поддерживает)
Z301171463546 - можно пожертвовать мне денег

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: jumbo frames

Непрочитанное сообщение paradox » 2008-12-16 15:26:42

9000

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: jumbo frames

Непрочитанное сообщение zingel » 2008-12-16 15:31:44

прям 9000.....ну х з...х з, попробую...просто там две гигабитные сетевухи сдвоены, em && nfe, не разные у них ли...проверю
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: jumbo frames

Непрочитанное сообщение zingel » 2008-12-19 11:34:43

Код: Выделить всё

[root@zingel /usr/src/sys/dev/nfe]# ifconfig nfe0 media 1000baseTX mediaopt full-duplex mtu 9000
ifconfig: ioctl (set mtu): Invalid argument
даже при

Код: Выделить всё

hw.nfe.jumbo_disable=0

Код: Выделить всё

45414: socket(PF_INET,SOCK_DGRAM,0)              = 4 (0x4)
45414: ioctl(4,SIOCGIFINDEX,0xbfbfe458)          = 0 (0x0)
45414: close(4)                                  = 0 (0x0)
45414: __sysctl(0xbfbfe460,0x6,0x0,0xbfbfe478,0x0,0x0) = 0 (0x0)
45414: __sysctl(0xbfbfe460,0x6,0x28202800,0xbfbfe478,0x0,0x0) = 0 (0x0)
45414: socket(PF_INET,SOCK_DGRAM,0)              = 4 (0x4)
45414: ioctl(4,SIOCGIFMEDIA,0x2820a040)          = 0 (0x0)
45414: ioctl(4,SIOCGIFMEDIA,0x2820a040)          = 0 (0x0)
45414: ioctl(4,SIOCSIFMTU,0x8060bc0)             ERR#22 'Invalid argument'
45414: write(2,"ifconfig: ",10)                  = 10 (0xa)
45414: write(2,"ioctl (set mtu)",15)             = 15 (0xf)
45414: write(2,": ",2)                           = 2 (0x2)
45414: write(2,"Invalid argument\n",17)          = 17 (0x11)
45414: ioctl(4,SIOCSIFMEDIA,0x8060bc0)           = 0 (0x0)
45414: close(4)                                  = 0 (0x0)
ifconfig.c

Код: Выделить всё

static int
ifconfig(int argc, char *const *argv, int iscreate, const struct afswtch *afp)
{
        const struct afswtch *nafp;
        struct callback *cb;
        int s;

        strncpy(ifr.ifr_name, name, sizeof ifr.ifr_name);
top:
        if (afp == NULL)
                afp = af_getbyname("inet");
        ifr.ifr_addr.sa_family =
                afp->af_af == AF_LINK || afp->af_af == AF_UNSPEC ?
                AF_INET : afp->af_af;

        if ((s = socket(ifr.ifr_addr.sa_family, SOCK_DGRAM, 0)) < 0)
                err(1, "socket(family %u,SOCK_DGRAM", ifr.ifr_addr.sa_family);

        while (argc > 0) {
                const struct cmd *p;

                p = cmd_lookup(*argv);
                if (p == NULL) {
                        /*
                         * Not a recognized command, choose between setting
                         * the interface address and the dst address.
                         */
                        p = (setaddr ? &setifdstaddr_cmd : &setifaddr_cmd);
                }
                if (p->c_u.c_func || p->c_u.c_func2) {
                        if (iscreate && !p->c_iscloneop) {

судя по-всему, я так думаю оно не врубится, пока на порту не будет active....а зря
Z301171463546 - можно пожертвовать мне денег

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: jumbo frames

Непрочитанное сообщение paradox » 2008-12-19 11:38:55

хм

Код: Выделить всё

        switch (cmd) {
        case SIOCSIFMTU:
                if (ifr->ifr_mtu < ETHERMIN || ifr->ifr_mtu > NFE_JUMBO_MTU)
                        error = EINVAL;
                else if (ifp->if_mtu != ifr->ifr_mtu) {
                        if ((((sc->nfe_flags & NFE_JUMBO_SUP) == 0) ||
                            (sc->nfe_jumbo_disable != 0)) &&
                            ifr->ifr_mtu > ETHERMTU)
                                error = EINVAL;
                        else {
                                NFE_LOCK(sc);
                                ifp->if_mtu = ifr->ifr_mtu;
                                if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
                                        nfe_init_locked(sc);
                                NFE_UNLOCK(sc);
                        }
                }
                break;
        case SIOCSIFFLAGS:

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: jumbo frames

Непрочитанное сообщение zingel » 2008-12-19 11:41:42

ну я бы не рискнул удалённо патчить, хотя там из двух собран Lagg0, на 1 может вытянуть
Z301171463546 - можно пожертвовать мне денег

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: jumbo frames

Непрочитанное сообщение paradox » 2008-12-19 11:43:33

та не
я к тому что
а с какой радости оно то непроходит...
поидеи должно проходить

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: jumbo frames

Непрочитанное сообщение zingel » 2008-12-19 11:44:27

ну вот по-этому, скорее всего:

Код: Выделить всё

/usr/src/sys/dev/nfe/if_nfe.c

Код: Выделить всё

static void
nfe_alloc_jrx_ring(struct nfe_softc *sc, struct nfe_jrx_ring *ring)
{
        struct nfe_dmamap_arg ctx;
        struct nfe_rx_data *data;
        void *desc;
        int i, error, descsize;

        if ((sc->nfe_flags & NFE_JUMBO_SUP) == 0)
                return;
        if (jumbo_disable != 0) {
                device_printf(sc->nfe_dev, "disabling jumbo frame support\n");
                sc->nfe_jumbo_disable = 1;
                return;
        }
Z301171463546 - можно пожертвовать мне денег

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: jumbo frames

Непрочитанное сообщение paradox » 2008-12-19 11:47:01

не ну то уже данные не будут передаваться

но мту то должно стать

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: jumbo frames

Непрочитанное сообщение zingel » 2008-12-19 11:51:14

они не залочится там а сдропается если статус не будет active, а active будет только тогда когда будет гигабит, тоесть когда я переткну в другой порт, но мне это не совсем чтобы нравится, потому что у меня lagg0 а там vlan_mtu будет браться с первого по id девайса, тоесть с моей nfe0, тоесть задача мне убрать проверку на active
Z301171463546 - можно пожертвовать мне денег

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: jumbo frames

Непрочитанное сообщение paradox » 2008-12-19 11:56:44

незалочаться
но мту должно стать
попробуй мту без других опций айпи итд
или тот интерфейс единственный через который все работает?

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: jumbo frames

Непрочитанное сообщение zingel » 2008-12-19 12:05:39

не, там 2 карты собранные в lagg0

Код: Выделить всё

[root@zingel /usr/src/sys/dev/nfe]# ifconfig nfe0 mtu 9000
ifconfig: ioctl (set mtu): Invalid argument
ничего не даёт, буду дебагать и смотреть где оно
Z301171463546 - можно пожертвовать мне денег

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: jumbo frames

Непрочитанное сообщение paradox » 2008-12-19 12:08:06

о тут оно дает

Код: Выделить всё

       switch (cmd) {
        case SIOCSIFMTU:
                if (ifr->ifr_mtu < ETHERMIN || ifr->ifr_mtu > NFE_JUMBO_MTU)
                        error = EINVAL;
                else if (ifp->if_mtu != ifr->ifr_mtu) {
                        if ((((sc->nfe_flags & NFE_JUMBO_SUP) == 0) ||
                            (sc->nfe_jumbo_disable != 0)) &&
                            ifr->ifr_mtu > ETHERMTU)
                                error = EINVAL;
токо непонятно
разве что

Код: Выделить всё

                    if ((((sc->nfe_flags & NFE_JUMBO_SUP) == 0) ||

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: jumbo frames

Непрочитанное сообщение zingel » 2008-12-19 12:16:11

сейчас попробую....=)

он сказал *поехали* и махнул рукой (с)
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: jumbo frames

Непрочитанное сообщение zingel » 2008-12-19 13:53:00

нда....тут дело в самой nfe, потому, что например на em, легко всаёт на 16 при выключенном вообще даже линке

Код: Выделить всё

%ifconfig em1 mtu 16000
em1: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 16000
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:04:23:c5:02:c9
        media: Ethernet autoselect
        status: no carrier
Z301171463546 - можно пожертвовать мне денег

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: jumbo frames

Непрочитанное сообщение paradox » 2008-12-19 14:00:20

там не на всех nfe поддерживаеться
покажи

Код: Выделить всё

pciconf -lvc

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: jumbo frames

Непрочитанное сообщение zingel » 2008-12-19 14:04:55

Код: Выделить всё

nfe0@pci0:0:5:0:        class=0x068000 card=0x80a71043 chip=0x00df10de rev=0xa2 hdr=0x00
    vendor     = 'Nvidia Corp'
    device     = 'Marvell 88E1111 Network adapter'
    class      = bridge
    cap 01[44] = powerspec 2  supports D0 D1 D2 D3  current D0
вот собака....

Код: Выделить всё

nForce3 250

Код: Выделить всё

nfe0: <NVIDIA nForce3 MCP7 Networking Adapter> port 0xec00-0xec07 mem 0xfebfc000-0xfebfcfff irq 20 at device 5.0 on pci0
должна же шлюха....

Код: Выделить всё

[root@zingel /usr/src]# man nfe | grep MCP7
     nForce 3, CK804, MCP04, MCP51, MCP55, MCP61, MCP65, MCP67, MCP73, MCP77
     and MCP79 Ethernet controller chips.
     o   NVIDIA nForce MCP73 Networking Adapter
     o   NVIDIA nForce MCP77 Networking Adapter
     o   NVIDIA nForce MCP79 Networking Adapter
     o   NVIDIA nForce3 MCP7 Networking Adapter
Z301171463546 - можно пожертвовать мне денег

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: jumbo frames

Непрочитанное сообщение paradox » 2008-12-19 14:11:08

у меня поддерживает в RELENG_7

Код: Выделить всё

        switch (sc->nfe_devid) {
        case PCI_PRODUCT_NVIDIA_NFORCE3_LAN2:
        case PCI_PRODUCT_NVIDIA_NFORCE3_LAN3:
        case PCI_PRODUCT_NVIDIA_NFORCE3_LAN4:
        case PCI_PRODUCT_NVIDIA_NFORCE3_LAN5:
                sc->nfe_flags |= NFE_JUMBO_SUP | NFE_HW_CSUM;
                break;
где то дальше

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: jumbo frames

Непрочитанное сообщение zingel » 2008-12-19 14:13:33

ребутнусь, проверю...
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: jumbo frames

Непрочитанное сообщение zingel » 2008-12-19 15:20:50

не, не хочет тоже самое.....
Z301171463546 - можно пожертвовать мне денег

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: jumbo frames

Непрочитанное сообщение paradox » 2008-12-19 15:41:21

странно
надо посмотреть какой у меня нфе
и поиграться на нем
что бы понять где там уловие пролетает по проверке мту хотя бы

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: jumbo frames

Непрочитанное сообщение zingel » 2008-12-19 16:56:01

вообще очень странно

Код: Выделить всё

ltrace nfe0 mtu 9000
...

Код: Выделить всё

strchr("io", '/')                                                                                = NULL
strncmp("nfe", "io", 4)                                                                          = 5
strlen("if_nfe")                                                                                 = 6
strncmp("if_nfe", "io", 7)                                                                       = -9
modfnext(192, 0xbfbfe43c, 7, 0x2808e080, 0x280835f4)                                             = 193
modstat(193, 0xbfbfe438, 7, 0x2808e080, 0x280835f4)                                              = 0
strchr("nfe/miibus", '/')                                                                        = "/miibus"
strncmp("nfe", "miibus", 4)                                                                      = 1
strlen("if_nfe")                                                                                 = 6
strncmp("if_nfe", "miibus", 7)                                                                   = -4
modfnext(193, 0xbfbfe440, 7, 0x2808e080, 0x280835f4)                                             = 194
modstat(194, 0xbfbfe438, 7, 0x2808e080, 0x280835f4)                                              = 0
strchr("pci/nfe", '/')                                                                           = "/nfe"
strncmp("nfe", "nfe", 4)                                                                         = 0
if_nametoindex(0xbfbfed91, 0xbfbfec94, 0xbfbfe4eb, 0, 0xbfbfec94)                                = 1
strcmp("lladdr", "mtu")                                                                          = -1
strcmp("ether", "mtu")                                                                           = -8
strcmp("link", "mtu")                                                                            = -1
strcmp("inet", "mtu")                                                                            = -4
strcmp("inet6", "mtu")                                                                           = -4
strcmp("atalk", "mtu")                                                                           = -12
strcmp("af_maclabel", "mtu")                                                                     = -12
strcmp("af_media", "mtu")                                                                        = -12
strcmp("af_vlan", "mtu")                                                                         = -12
strcmp("af_ieee80211", "mtu")                                                                    = -12
strcmp("af_gre", "mtu")                                                                          = -12
strcmp("af_carp", "mtu")                                                                         = -12
strcmp("af_group", "mtu")                                                                        = -12
strcmp("af_pfsync", "mtu")                                                                       = -12
strcmp("af_bridge", "mtu")                                                                       = -12
strcmp("af_lagg", "mtu")                                                                         = -12
strcmp("ipx", "mtu")                                                                             = -4
getifaddrs(0xbfbfec44, 0xbfbfec94, 0xbfbfe4eb, 0, 0xbfbfec94)                                    = 0
strncpy(0xbfbfec1c, "nfe0", 16)                                                                  = 0xbfbfec1c
strcmp("nfe0", "nfe0")                                                                           = 0
strlcpy(0x8060bf4, 0x282034d2, 16, 0xbfbfec1c, 0xbfbfec94)                                       = 4
strncpy(0x8060bc0, "nfe0", 16)                                                                   = 0x8060bc0
strcmp("lladdr", "inet")                                                                         = 3
strcmp("ether", "inet")                                                                          = -4
strcmp("link", "inet")                                                                           = 3
strcmp("inet", "inet")                                                                           = 0
socket(2, 2, 0)                                                                                  = 3
strcmp("mtu", "name")                                                                            = -1
strcmp("mtu", "mtu")                                                                             = 0
strncpy(0x8060bc0, "nfe0", 16)                                                                   = 0x8060bc0
atoi(0xbfbfed9a, 0x8060bf4, 16, 2, 0x805cc04)                                                    = 9000
ioctl(3, -2145359564, 0x8060bc0)                                                                 = -1
warn(0x8058296, 0, 3, 0x805cd00, 0)                                                              = 17
close(3)                                                                                         = 0
strncpy(0xbfbfec1c, "nfe0", 16)                                                                  = 0xbfbfec1c
memcpy(0xbfbfec2c, "\020\002", 16)                                                               = 0xbfbfec2c
strcmp("nfe0", "nfe0")                                                                           = 0
strcmp("nfe0", "nfe0")                                                                           = 0
strncpy(0xbfbfec1c, "rl0", 16)                                                                   = 0xbfbfec1c
strcmp("nfe0", "rl0")                                                                            = -4
strncpy(0xbfbfec1c, "pflog0", 16)                                                                = 0xbfbfec1c
strcmp("nfe0", "pflog0")                                                                         = -2
strncpy(0xbfbfec1c, "lo0", 16)                                                                   = 0xbfbfec1c
strcmp("nfe0", "lo0")                                                                            = 2
strncpy(0xbfbfec1c, "lo0", 16)                                                                   = 0xbfbfec1c
memcpy(0xbfbfec2c, "\020\002", 16)                                                               = 0xbfbfec2c
strcmp("nfe0", "lo0")                                                                            = 2
strncpy(0xbfbfec1c, "pfsync0", 16)                                                               = 0xbfbfec1c
strcmp("nfe0", "pfsync0")                                                                        = -2
strncpy(0xbfbfec1c, "lagg0", 16)                                                                 = 0xbfbfec1c
strcmp("nfe0", "lagg0")                                                                          = 2
strncpy(0xbfbfec1c, "lagg0", 16)                                                                 = 0xbfbfec1c
memcpy(0xbfbfec2c, "\020\002", 16)                                                               = 0xbfbfec2c
strcmp("nfe0", "lagg0")                                                                          = 2
freeifaddrs(0x28203000, 0x282034ee, 16, 0xbfbfec1c, 0xbfbfec94)                                  = 0x28203000
exit(0 <unfinished ...>
+++ exited (status 0) +++
тут:

Код: Выделить всё

strncpy(0x8060bc0, "nfe0", 16) 
Z301171463546 - можно пожертвовать мне денег