Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Flatly)
  • No Skin
Collapse
Brand Logo

NetXMS Forum

  1. Home
  2. Support (Russian)
  3. Получение таблицы MAC-адресов с Cisco

Получение таблицы MAC-адресов с Cisco

Scheduled Pinned Locked Moved Support (Russian)
37 Posts 5 Posters 56.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G
    G
    grimnir
    wrote on last edited by
    #10

    Сейчас сервер выбирает CATALYST-GENERIC, насколько я понимаю, это src/server/drivers/catalyst.

    Не очень понял про generic-драйвер "вообще" (я новичок в NetXMS, простите),  это в каком файле посмотреть можно?

    1 Reply Last reply
    0
    • V
      V
      Victor Kirhenshtein
      wrote on last edited by
      #11

      GENERIC - это драйвер, который есть всегда. Его код встроен в libnxsrv: src/server/libnxsrv/ndd.cpp. Он используется как базовый класс для всех драйверов и как драйвер по умолчанию.

      1 Reply Last reply
      0
      • G
        G
        grimnir
        wrote on last edited by
        #12

        @victor said in Получение таблицы MAC-адресов с Cisco:

        GENERIC - это драйвер, который есть всегда. Его код встроен в libnxsrv: src/server/libnxsrv/ndd.cpp. Он используется как базовый класс для всех драйверов и как драйвер по умолчанию.

        Посмотрел, подумал, но пожалуй ndd.cpp я не возьмусь переписывать нахрапом...

        P.S. не по теме, но ещё с одной проблемой столкнулся сегодня:  попытался добавить в список устройств коммутатор из состава blade-системы Fujitsu (Fujitsu PY CB Eth Switch 1Gb 36/8+2, Runtime Code 4.12, OS - VxWorks 6.5), отключил использование nxagent, указал SNMP-community. При попытке сделать configuration poll устройство пропало из списка, и на консоли непрерывно стали возникать сообщения "Access denied", хотя сервер доступ по SNMP к устройству получил (sysID определил). Драйвер при этом выбрал GENERIC. Пришлось базу фиксить с помощью nxdbmgr и вычищать все объекты, связанные с этим коммутатором...

        1 Reply Last reply
        0
        • Z
          Z
          zolg
          wrote on last edited by
          #13

          @victor said in Получение таблицы MAC-адресов с Cisco:

          Похоже придется делать отдельный драйвер для 2960, который будет корректно обрабатывать эту ситуацию.

          Это похоже особенность не только 2960, но и остальных каталистов. По крайней мере 3750G, 3750 и 35xx ведут себя точно так же.

          1 Reply Last reply
          0
          • Z
            Z
            zolg
            wrote on last edited by
            #14

            копнул проблему чуть глубже, вот что нарисовалось:
            Cisco не возвращает в dot1dTpFdbTable FDB для всех VLAN'ов потому что это невозможно корректно сделать в принципе.
            В dot1dTpFdbTable не предусмотрено отдельного поля для vlan'а к которому принадлежит mac-адрес, а т.к. в разных vlan'ах теоретически могут присутствовать различные устройства с одинаковыми физическими адресами, то FDB, построенная с игнорированием vlan'ов будет некорректна.
            Те вендоры, которые выдают в dot1dTpFdbTable все mac-адреса, на самом деле поступают не очень здорово (хотя на первый взгляд это и удобно) (еще хуже то, что известны случаи подобных упрощений и обобщений в реальной, используемой при коммутации, FDB).
            Ситуация совпадения mac'ов в мирное время крайне маловероятна, однако ж если кто-то решил в сети развлечься (или китайский рабочий накосячил) может иметь место быть.

            В циске ситуацию разрулили snmp-контекстами. На свитче для каждого vlan'а определен контекст vlan-XXX (где XXX - vlanid), в случае использования snmp версий ниже 3 обращение к контексту происходит путем добавления @ и его номера к коммунити. т.е. чтобы получить все мак-адреса из 555 vlan'а необходимо

            для snmpv3:
            snmpwalk -v3 -n vlan-555 -u testuser 172.31.0.1 .1.3.6.1.2.1.17.4.3.1.1

            для snmpv2:
            snmpwalk -v2c -c testcommunity@555 172.31.0.1 .1.3.6.1.2.1.17.4.3.1.1

            единственная претензия к цисковцам, что они не реализовали проприетарный аналог dot1dTpFdbTable, но с блекджеком со всей таблицей мак-адресов и полем под vlan.

            ps:
            хорошая новость: OID оказывается уже есть, причем не проприетарный. .1.3.6.1.2.1.17.4.3 dot1qTpFdbTable
            плохая новость: циской не поддерживается.

            1 Reply Last reply
            0
            • V
              V
              Victor Kirhenshtein
              wrote on last edited by
              #15

              Спасибо за детальный разбор! Сделал ишшую в баг трекере, чтобы не потерялось: https://www.radensolutions.com/chiliproject/issues/242. В 1.2.7 добавлю поддержку FDB по VLAN'ам.

              1 Reply Last reply
              0
              • Z
                Z
                zolg
                wrote on last edited by
                #16

                Спасибо за внимание к проблеме!

                1 Reply Last reply
                0
                • G
                  G
                  grimnir
                  wrote on last edited by
                  #17

                  Спасибо за детальный "разбор полётов"!

                  1 Reply Last reply
                  0
                  • G
                    G
                    grimnir
                    wrote on last edited by
                    #18

                    @victor said in Получение таблицы MAC-адресов с Cisco:

                    В 1.2.7 добавлю поддержку FDB по VLAN'ам.

                    О, огромное спасибо! Это будет просто здорово... Если могу помочь с тестированием (есть c2960, c3650, c3750, c6509) - то с удовольствием.

                    1 Reply Last reply
                    0
                    • V
                      V
                      Victor Kirhenshtein
                      wrote on last edited by
                      #19

                      @grimnir said in Получение таблицы MAC-адресов с Cisco:

                      О, огромное спасибо! Это будет просто здорово... Если могу помочь с тестированием (есть c2960, c3650, c3750, c6509) - то с удовольствием.

                      Я вроде как сделал, но тестировать мне не начем особо, так что было бы очень здорово. Я могу сделать сборку текущих исходников или билд для Windows, смотря что надо.

                      1 Reply Last reply
                      0
                      • G
                        G
                        grimnir
                        wrote on last edited by
                        #20

                        @victor said in Получение таблицы MAC-адресов с Cisco:

                        Я вроде как сделал, но тестировать мне не начем особо, так что было бы очень здорово. Я могу сделать сборку текущих исходников или билд для Windows, смотря что надо.

                        У меня платформа - FreeBSD, я портирую каждую новую версию из исходников под неё. Так что если есть tarball с исходниками, как обычно Вы в релизах выкладываете, то не вопрос - прямо сегодня могу протестировать.

                        1 Reply Last reply
                        0
                        • V
                          V
                          Victor Kirhenshtein
                          wrote on last edited by
                          #21

                          Выложил: https://www.netxms.org/download/rc/netxms-1.2.7-m2.tar.gz. Эта версия потребует апгрейд базы, так что надо будет делать копию на случай если потребуется вернутся обратно на 1.2.6.

                          1 Reply Last reply
                          0
                          • G
                            G
                            grimnir
                            wrote on last edited by
                            #22

                            @victor said in Получение таблицы MAC-адресов с Cisco:

                            Выложил: https://www.netxms.org/download/rc/netxms-1.2.7-m2.tar.gz. Эта версия потребует апгрейд базы, так что надо будет делать копию на случай если потребуется вернутся обратно на 1.2.6.

                            Что-то с апгрейдом БД не заладилось:

                            12 11:03:47 netxms netxmsd[32102]: SQL query failed (Query = "UPDATE raw_dci_values SET raw_value=?,transformed_value=?,last_poll_time=? WHERE item_id=?"): Prepared statement needs to be re-prepared   
                            Mar 12 11:03:47 netxms netxmsd[32102]: SQL query failed (Query = "SELECT id FROM interfaces WHERE id=?"): Prepared statement needs to be re-prepared                                                         
                            Mar 12 11:03:47 netxms netxmsd[32102]: SQL query failed (Query = "INSERT INTO interfaces (ip_addr,ip_netmask,node_id,if_type,if_index,mac_addr,flags,required_polls,bridge_port,phy_slot,phy_port,peer_node_id,
                            peer_if_id,description,admin_state,oper_state,dot1x_pae_state,dot1x_backend_state,id) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"): Duplicate entry '5290' for key 'PRIMARY'

                            1 Reply Last reply
                            0
                            • V
                              V
                              Victor Kirhenshtein
                              wrote on last edited by
                              #23

                              Похожая ситуация описана здесь: http://bugs.mysql.com/bug.php?id=42041. В конце есть описание изменений в настройках MySQL, которые вроде как помогли:

                              Not sure if this helps, but we seemed to solve the issue on our servers by changing some db settings.

                              table_open_cache 128=>16384
                              table_definition_cache 1024=>16384
                              tmp_table_size 32M=>64M
                              join_buffer_size 256k=>512k

                              1 Reply Last reply
                              0
                              • G
                                G
                                grimnir
                                wrote on last edited by
                                #24

                                @victor said in Получение таблицы MAC-адресов с Cisco:

                                Похожая ситуация описана здесь: http://bugs.mysql.com/bug.php?id=42041. В конце есть описание изменений в настройках MySQL, которые вроде как помогли:

                                Нет, там что-то хитрее, nxdbmgr reindex вот что выдаёт:

                                NetXMS Database Manager Version 1.2.7-m2

                                Reindexing table raw_dci_values by (item_id)...
                                SQL query failed (Duplicate key name 'idx_raw_dci_values_item_id'):
                                ESC[33;1mCREATE INDEX idx_raw_dci_values_item_id ON raw_dci_values(item_id)ESC[0m
                                Reindexing table event_log by (event_timestamp)...
                                SQL query failed (Duplicate key name 'idx_event_log_event_timestamp'):
                                ESC[33;1mCREATE INDEX idx_event_log_event_timestamp ON event_log(event_timestamp)ESC[0m
                                Reindexing table thresholds by (item_id)...
                                SQL query failed (Duplicate key name 'idx_thresholds_item_id'):
                                ESC[33;1mCREATE INDEX idx_thresholds_item_id ON thresholds(item_id)ESC[0m
                                Reindexing table thresholds by (sequence_number)...
                                SQL query failed (Duplicate key name 'idx_thresholds_sequence'):
                                ESC[33;1mCREATE INDEX idx_thresholds_sequence ON thresholds(sequence_number)ESC[0m
                                Reindexing table alarm_notes by (alarm_id)...
                                SQL query failed (Duplicate key name 'idx_alarm_notes_alarm_id'):
                                ESC[33;1mCREATE INDEX idx_alarm_notes_alarm_id ON alarm_notes(alarm_id)ESC[0m
                                Reindexing table syslog by (msg_timestamp)...
                                SQL query failed (Duplicate key name 'idx_syslog_msg_timestamp'):
                                ESC[33;1mCREATE INDEX idx_syslog_msg_timestamp ON syslog(msg_timestamp)ESC[0m
                                Reindexing table snmp_trap_log by (trap_timestamp)...
                                SQL query failed (Duplicate key name 'idx_snmp_trap_log_trap_timestamp'):
                                ESC[33;1mCREATE INDEX idx_snmp_trap_log_trap_timestamp ON snmp_trap_log(trap_timestamp)ESC[0m
                                Reindexing table address_lists by (list_type)...
                                SQL query failed (Duplicate key name 'idx_address_lists_list_type'):
                                ESC[33;1mCREATE INDEX idx_address_lists_list_type ON address_lists(list_type)ESC[0m
                                Reindexing table idata_100
                                SQL query failed (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM idata_100' at line 1):
                                ESC[33;1mDROP INDEX idata_100 FROM idata_100ESC[0m
                                SQL query failed (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM idata_100' at line 1):
                                ESC[33;1mDROP INDEX idata_100 FROM idata_100ESC[0m
                                SQL query failed (Duplicate key name 'idx_idata_100_id_timestamp'):
                                ESC[33;1mCREATE INDEX idx_idata_100_id_timestamp ON idata_100(item_id,idata_timestamp)ESC[0m
                                Reindexing table idata_106

                                ну и т.д.

                                1 Reply Last reply
                                0
                                • V
                                  V
                                  Victor Kirhenshtein
                                  wrote on last edited by
                                  #25

                                  nxdbmgr reindex сам по себе один большой баг. Он был сделан очень давно для решения каких-то специфических проблем, и сейчас вроде как не нужен. Я пересмотрю этот код и решу что с ним делать. Пока лучше не использовать.

                                  1 Reply Last reply
                                  0
                                  • G
                                    G
                                    grimnir
                                    wrote on last edited by
                                    #26

                                    @victor said in Получение таблицы MAC-адресов с Cisco:

                                    nxdbmgr reindex сам по себе один большой баг. Он был сделан очень давно для решения каких-то специфических проблем, и сейчас вроде как не нужен. Я пересмотрю этот код и решу что с ним делать. Пока лучше не использовать.

                                    ОК, понял, спасибо за преупреждение 🙂

                                    На данный момент сервер стартует без ошибок:

                                    root@netxms:/var/log # nxdbmgr check
                                    NetXMS Database Manager Version 1.2.7-m2

                                    Checking database (excluding collected data):
                                    * Checking zone objects...                                            [PASSED]
                                    * Checking node objects...                                            [PASSED]
                                    * Checking interface objects...                                      [PASSED]
                                    * Checking network service objects...                                [PASSED]
                                    * Checking cluster objects...                                        [PASSED]
                                    * Checking template to node mapping...                                [PASSED]
                                    * Checking object properties...                                      [PASSED]
                                    * Checking event processing policy...                                [PASSED]
                                    Database doesn't contain any errors
                                    Database check completed
                                    root@netxms:/var/log # /usr/local/etc/rc.d/netxmsd start
                                    Starting netxmsd.
                                    NetXMS Database Manager Version 1.2.7-m2

                                    Checking database (excluding collected data):
                                    * Checking zone objects...                                            [PASSED]
                                    * Checking node objects...                                            [PASSED]
                                    * Checking interface objects...                                      [PASSED]
                                    * Checking network service objects...                                [PASSED]
                                    * Checking cluster objects...                                        [PASSED]
                                    * Checking template to node mapping...                                [PASSED]
                                    * Checking object properties...                                      [PASSED]
                                    * Checking event processing policy...                                [PASSED]
                                    Database doesn't contain any errors
                                    Database check completed

                                    В логе тоже всё хорошо:

                                    Mar 12 11:19:09 netxms nxagentd[47829]: NetXMS Agent started                                                                                                                                                 
                                    Mar 12 11:19:46 netxms netxmsd[47818]: Listening for SNMP traps on UDP socket 0.0.0.0:162                                                                                                                     
                                    Mar 12 11:19:46 netxms netxmsd[47818]: NetXMS Server started                                                                                                                                                 
                                    Mar 12 11:19:46 netxms netxmsd[47818]: Listening for client connections on TCP socket 0.0.0.0:4701                                                                                                           
                                    Mar 12 11:19:46 netxms netxmsd[47818]: Listening for mobile device connections on TCP socket 0.0.0.0:4747                                                                                                     
                                    Mar 12 12:00:24 netxms netxmsd[48001]: Platform subagent "/usr/local/lib/libnsm_freebsd.so" successfully loaded                                                                                               
                                    Mar 12 12:00:24 netxms netxmsd[48001]: Database driver "/usr/local/lib/libnxddr_mysql.so" loaded and initialized successfully                                                                                 
                                    Mar 12 12:00:24 netxms netxmsd[48001]: Network device driver "BAYSTACK" loaded successfully                                                                                                                   
                                    Mar 12 12:00:24 netxms netxmsd[48001]: Network device driver "CATALYST-2900XL" loaded successfully                                                                                                           
                                    Mar 12 12:00:24 netxms netxmsd[48001]: Network device driver "CATALYST-GENERIC" loaded successfully                                                                                                           
                                    Mar 12 12:00:24 netxms netxmsd[48001]: Network device driver "CISCO-ESW" loaded successfully                                                                                                                 
                                    Mar 12 12:00:24 netxms netxmsd[48001]: Network device driver "DELL-PWC" loaded successfully                                                                                                                   
                                    Mar 12 12:00:24 netxms netxmsd[48001]: Network device driver "DLINK" loaded successfully                                                                                                                     
                                    Mar 12 12:00:24 netxms netxmsd[48001]: Network device driver "ERS8000" loaded successfully                                                                                                                   
                                    Mar 12 12:00:24 netxms netxmsd[48001]: Network device driver "NETSCREEN" loaded successfully                                                                                                                 
                                    Mar 12 12:00:24 netxms netxmsd[48001]: Network device driver "PROCURVE" loaded successfully                                                                                                                   
                                    Mar 12 12:01:12 netxms netxmsd[48001]: Listening for SNMP traps on UDP socket 0.0.0.0:162                                                                                                                     
                                    Mar 12 12:01:13 netxms netxmsd[48001]: NetXMS Server started                                                                                                                                                 
                                    Mar 12 12:01:13 netxms netxmsd[48001]: Listening for mobile device connections on TCP socket 0.0.0.0:4747                                                                                                     
                                    Mar 12 12:01:13 netxms netxmsd[48001]: Listening for client connections on TCP socket 0.0.0.0:4701

                                    Но, при этом, FDB с каталистов всё равно не получается...
                                    Пытаюсь сделать Tools->Info->Switch forwarding database, ничего не выводится. То же самое для Baystack 470 успешно отображает таблицу МАСов.

                                    1 Reply Last reply
                                    0
                                    • V
                                      V
                                      Victor Kirhenshtein
                                      wrote on last edited by
                                      #27

                                      FDB таблица из Object Tools - это конкретный SNMP OID. Здесь ничего не изменилось. Но есть FDB, которую знает сам сервер (она используется для построения топологии 2-го уровня) - там должна быть полная информация. Попробуйте функцию "Find switch port" для хостов в разных VLAN-ах - она должна работать корректно.
                                      Й в следующем релизе заменю FDB из Object Tools на показ той таблицы, которую знает сервер.

                                      1 Reply Last reply
                                      0
                                      • G
                                        G
                                        grimnir
                                        wrote on last edited by
                                        #28

                                        @victor said in Получение таблицы MAC-адресов с Cisco:

                                        FDB таблица из Object Tools - это конкретный SNMP OID. Здесь ничего не изменилось. Но есть FDB, которую знает сам сервер (она используется для построения топологии 2-го уровня) - там должна быть полная информация. Попробуйте функцию "Find switch port" для хостов в разных VLAN-ах - она должна работать корректно.
                                        Й в следующем релизе заменю FDB из Object Tools на показ той таблицы, которую знает сервер.

                                        Не нашёл в меню "Find switch port", но, судя по всему, FDB с каталистов он не получает-таки: моя рабочая станция подключена напрямую в catalyst 2960, но ни через "Find IP address", ни через "Find MAC address" я себя не нахожу. Может, можно какой debug включить?

                                        1 Reply Last reply
                                        0
                                        • G
                                          G
                                          glebofff
                                          wrote on last edited by
                                          #29

                                          А вывод Poll->Topology при этом какой?

                                          1 Reply Last reply
                                          0

                                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                          With your input, this post could be even better 💗

                                          Register Login
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          Powered by NodeBB Contributors
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups