Перейти до

FreeBSD, распаралеливание трафика pppoe


Рекомендованные сообщения

Снова возник вопрос, неужели никто не задавался целью как-то "научить" фрибсд распаралеливать по ядрам пппое трафик? Собрали на днях новый акцесник на базе проца Core i7 и сетевухи Intel ET. Смотрю в top - на входящей сетевой красивые 8-м потоков между которыми трафик равномерно распределяется - а на выходящей сетевой (пачка вланов и pppoe) все ложится на один поток. И как-то грустно стало из-за этого. Понимаю что если таки можно научить фрибсд либо драйвер сетевой распаралеливать пппое трафик по потокам - то можно было бы делать достаточно высокопроизводительные сервера доступа на базе многоядерных процесоров.

Ссылка на сообщение
Поделиться на других сайтах

Надо допилить net.isr для распределения по мак-адресам, тогда будет счастье.

Дело не в драйвере, драйвер молодец. Дело в том, что сетевые интел аппаратно разделяют по прерываниям на основе связки IP+PORT, PPPoE в этот хеш не попадает и сыпется по умолчанию в первую очередь.

Единственный штатный механизм это исправить - воспользоваться ISR подсистемой FreeBSD, но насколько я помню, в ней до сих пор не реализован механизм перераспределения пакетов между очередями. Патч для перераспределения на основе ip+port я где-то в соседней теме выбрасывал. Если его доработать на хеширование по MAC адресам, то будет счастье и для PPPoE.

Відредаговано adeep
Ссылка на сообщение
Поделиться на других сайтах

Наиболее эффективный способ распараллеливания на любой системе - использовать больше сетевок в бондинге. 4 интерфейса замечательно грузят 4 ядра системы, сетевки можно ставить любые, и распределение нагрузки идеальное..

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

  • Схожий контент

    • Від a_n_h
      Всем доброго дня и мирного неба!
        После многочисленных экспериментов выяснил, что на последних версиях freebsd  максимум удавалось прокачать до 14 ГБт суммарно трафика со 100% загрузкой процессора. На том-же железе но с установленной freebsd 11.2 прокачивается до 20-ти ГБт суммарно тестового трафика с загрузкой процессора около 50%. 
        Подскажите, что можно убрать или наоборот добавить в систему с freebsd 13,3 для получения аналогичного результата...
    • Від mac
      Здається, після оновлення PHP 7.4 до PHP 8.2 feesharvester припинив працювати:
       
      /usr/local/bin/curl "http://127.0.0.1/billing/?module=remoteapi&key={SERIAL}&action=feesharvester" <br /> <b>Fatal error</b>: Uncaught TypeError: Unsupported operand types: string - string in {UBPATH}/billing/api/libs/api.fundsflow.php:570 Stack trace: #0 {UBPATH}/billing/modules/remoteapi/feesharvester.php(22): FundsFlow-&gt;harvestFees('2024-01') ...  
      Невеличке розслідування врешті з'ясувало, що це через наявність пробілу у деяких логінах абонентів. Як так сталося? Тому що інколи був неуважно додан трейлінг пробіл до номеру будинка і цей пробіл потрапив до логіну абоненту. Логін абоненту неможливо змінити ніяким чином штатними засобами. Я не розглядаю створення нового абонента для усунення помілки.

      Був обран такий шлях вирішення проблеми. Заміну функції php explode() знайшов у мережі. Мабуть це станеться в нагоді:

       
      diff api.fundsflow.php.bak api.fundsflow.php.new 559c559 < $eachfee = explode(' ', $eachline); --- > $eachfee = preg_split("~(?<!\\\\)(?:\\\\{2})*'[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(*SKIP)(*F)|\s+~s" , $eachline);  
    • Від FantoM_EscapE
      Хочу перенести свій білінг NODENY із фізичного сервера на віртуальний. Шукаю адміна який зможе допомогти у цьому питанні, так як нашого адміна банально призвали до війська. Вся схема на даний момент робоча, маю доступи до всього. Потрібно проінсталити на новішу версію FREEBSD, бо на моїй 10 річній вже не працюють нові SSL сертифікати. Кого зацікавила дана пропозиція - прошу у приватні повідомлення. обсудимо ціну і строки. або пишіть на будь-який месенджер 0677792091
    • Від Alain_MG
      Всем привет, Я работаю над проектом GPON с оборудованием OLT GP2508. Я пришел к этапу «АВТОРИЗАЦИЯ» на уровне сервера Freeradius. Мой сабик и вопрос в том, что я хочу создать профиль 512M например на сервере Freeradius, и еще я не хочу ограничение пропускной способности не на уровне сервера PPPoE а скорее на OLT, как сделать чтобы профиль создавался на OLT будет на уровне RADIUS? СПАСИБО
    • Від apels1n
      Доброго времени суток, есть два микрота CCR1036 в качестве брасов. На первом ~800 абонов, на втором ~1000. Оба микрота имеют шейпер на simple queue и нат. С обоими микротами есть проблема, а именно при пппое скорость загрузки 950+ мегабит, а скорость отдачи еле достигает 350 мегабит. Если мерять минуя пппое и шейпер, воткнувшись в микрот напрямую и получув адрес по дхцп, то скорость стабильно 970 мегабит в обе стороны. Пробовал поменять pps для шейпера, поставил вместо 50 pps 500 и скорость отдачи начала доходить до 400 мегабит. У микротов аплинки 10г по оптике, средний трафик с микрота в районе 1.5 - 2 Гбита. Упора в процессор нет, средняя нагрузка в пределах 15-30%. Подскажите в чём может быть дело?
       
      Конфиг
      /interface bridge add admin-mac=08:55:31:B4:51:F8 auto-mac=no name=bridge1 add disabled=yes name=loopback /interface ethernet set [ find default-name=ether2 ] comment=Test_routers /interface vlan add interface=sfp-sfpplus2 name=vlan36 vlan-id=36 add interface=sfp-sfpplus2 name=vlan101 vlan-id=101 add interface=sfp-sfpplus2 name=vlan102 vlan-id=102 add interface=sfp-sfpplus2 name=vlan103 vlan-id=103 add interface=sfp-sfpplus2 name=vlan104 vlan-id=104 add interface=sfp-sfpplus2 name=vlan105 vlan-id=105 add interface=sfp-sfpplus2 name=vlan106 vlan-id=106 add interface=sfp-sfpplus2 name=vlan107 vlan-id=107 add interface=sfp-sfpplus2 name=vlan108 vlan-id=108 add interface=sfp-sfpplus2 name=vlan109 vlan-id=109 add interface=sfp-sfpplus2 name="vlan1426" vlan-id=1426 add interface=sfp-sfpplus2 name=vlan1543 vlan-id=1543 /interface list add name=management /ip pool add name=pool1 ranges=192.168.100.10-192.168.100.20 /ip dhcp-server add address-pool=pool1 interface=ether7 name=dhcp-88 /port set 0 name=serial0 set 1 name=serial1 /ppp profile add change-tcp-mss=yes dns-server=XX.XX.XX.1 local-address=198.18.0.1 name=\ PPPtP add change-tcp-mss=yes dns-server=XX.XX.XX.1 local-address=XX.XX.XX.100 \ name=PPPoE use-compression=no use-encryption=no /queue type set 0 pfifo-limit=500 /routing bgp template set default as=4XXX9 disabled=no input.filter=bgp-in nexthop-choice=\ force-self output.filter-chain=bgp-out .redistribute=connected router-id=\ XX.XX.XX.100 routing-table=main /interface bridge port add bridge=bridge1 interface=ether8 pvid=101 /ip neighbor discovery-settings set discover-interface-list=management /ip settings set max-neighbor-entries=8192 /ipv6 settings set disable-ipv6=yes forward=no max-neighbor-entries=8192 /interface list member add interface=ether8 list=management /interface pppoe-server server add default-profile=PPPoE disabled=no interface=vlan101 keepalive-timeout=60 \ max-mru=1480 max-mtu=1480 mrru=1600 pado-delay=6 add default-profile=PPPoE disabled=no interface=vlan102 keepalive-timeout=60 \ max-mru=1480 max-mtu=1480 mrru=1600 pado-delay=7 add default-profile=PPPoE disabled=no interface=vlan103 keepalive-timeout=60 \ max-mru=1480 max-mtu=1480 mrru=1600 pado-delay=6 add default-profile=PPPoE disabled=no interface=vlan104 keepalive-timeout=60 \ max-mru=1480 max-mtu=1480 mrru=1600 pado-delay=6 add default-profile=PPPoE disabled=no interface=vlan105 keepalive-timeout=60 \ max-mru=1480 max-mtu=1480 mrru=1600 pado-delay=7 add default-profile=PPPoE disabled=no interface=vlan106 keepalive-timeout=60 \ max-mru=1480 max-mtu=1480 mrru=1600 pado-delay=6 add default-profile=PPPoE disabled=no interface=vlan107 keepalive-timeout=60 \ max-mru=1480 max-mtu=1480 mrru=1600 pado-delay=7 add default-profile=PPPoE disabled=no interface=vlan108 keepalive-timeout=60 \ max-mru=1480 max-mtu=1480 mrru=1600 pado-delay=6 add default-profile=PPPoE disabled=no interface=vlan109 keepalive-timeout=60 \ max-mru=1480 max-mtu=1480 mrru=1600 pado-delay=6 add default-profile=PPPoE disabled=no interface=vlan36 keepalive-timeout=60 \ max-mru=1480 max-mtu=1480 mrru=1600 pado-delay=7 service-name=vlan36 add default-profile=PPPoE disabled=no interface=ether2 keepalive-timeout=60 \ max-mru=1480 max-mtu=1480 mrru=1600 /interface pptp-server server set default-profile=PPPtP /ip address add address=XX.XX.XX.100/25 comment="UP IP (NAT no_money)" interface=\ sfp-sfpplus2 network=XX.XX.XX.0 add address=XX.XX.XX.59 comment="For NAT" interface=sfp-sfpplus2 network=\ XX.XX.XX.59 add address=XX.XX.XX.60 comment="For NAT" interface=sfp-sfpplus2 network=\ XX.XX.XX.60 add address=XX.XX.XX.61 comment="For NAT" interface=sfp-sfpplus2 network=\ XX.XX.XX.61 add address=XX.XX.XX.62 comment="For NAT" interface=sfp-sfpplus2 network=\ XX.XX.XX.62 add address=XX.XX.XX.63 comment="For NAT" interface=sfp-sfpplus2 network=\ XX.XX.XX.63 add address=XX.XX.XX.64 comment="For NAT" interface=sfp-sfpplus2 network=\ XX.XX.XX.64 add address=XX.XX.XX.65 comment="For NAT" interface=sfp-sfpplus2 network=\ XX.XX.XX.65 add address=XX.XX.XX.66 comment="For NAT" interface=sfp-sfpplus2 network=\ XX.XX.XX.66 add address=XX.XX.XX.67 comment="For NAT" interface=sfp-sfpplus2 network=\ XX.XX.XX.67 add address=XX.XX.XX.68 comment="For NAT" interface=sfp-sfpplus2 network=\ XX.XX.XX.68 add address=XX.XX.XX.69 comment="For NAT" interface=sfp-sfpplus2 network=\ XX.XX.XX.69 add address=XX.XX.XX.70 comment="For NAT" interface=sfp-sfpplus2 network=\ XX.XX.XX.70 add address=XX.XX.XX.71 comment="For NAT" interface=sfp-sfpplus2 network=\ XX.XX.XX.71 add address=XX.XX.XX.72 comment="For NAT" interface=sfp-sfpplus2 network=\ XX.XX.XX.72 add address=XX.XX.XX.73 comment="For NAT" interface=sfp-sfpplus2 network=\ XX.XX.XX.73 add address=XX.XX.XX.74 comment="For NAT" interface=sfp-sfpplus2 network=\ XX.XX.XX.74 add address=198.18.0.100 comment="For OSPF" disabled=yes interface=loopback \ network=198.18.0.100 add address=192.168.100.1/24 comment=test interface=ether7 network=\ 192.168.100.0 add address=XX.XX.XX.59/29 interface="vlan1426 " network=\ XX.XX.XX.56 add address=10.5.4.2/30 comment="local-management(DONT_TOUCH)" interface=\ ether8 network=10.5.4.0 add address=XX.XX.XX.4/29 interface=vlan1543 network=\ XX.XX.XX.0 /ip dhcp-server network add address=192.168.100.0/24 dns-server=XX.XX.XX.1 gateway=192.168.100.1 netmask=24 /ip dns set servers=XX.XX.XX.1 ip firewall address-list add address=XX.XX.XX.0/24 disabled=yes list=bgp-networks add address=city24.ua comment=city24.ua list=allow_negative add address=privat24.ua comment=privat24.ua list=allow_negative add address=next.privat24.ua comment=next.privat24.ua list=allow_negative /ip firewall nat add action=same chain=srcnat comment="Corp100 -> XX.XX.XX.100" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.100.0/24 to-addresses=XX.XX.XX.100 add action=same chain=srcnat comment="192.168.240.0/24 -> XX.XX.XX.59" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.240.0/24 to-addresses=XX.XX.XX.59 add action=same chain=srcnat comment="192.168.241.0/24 -> XX.XX.XX.60" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.241.0/24 to-addresses=XX.XX.XX.60 add action=same chain=srcnat comment="192.168.242.0/24 -> XX.XX.XX.61" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.242.0/24 to-addresses=XX.XX.XX.61 add action=same chain=srcnat comment="192.168.243.0/24 -> XX.XX.XX.62" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.243.0/24 to-addresses=XX.XX.XX.62 add action=same chain=srcnat comment="192.168.244.0/24 -> XX.XX.XX.63" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.244.0/24 to-addresses=XX.XX.XX.63 add action=same chain=srcnat comment="192.168.245.0/24 -> XX.XX.XX.64" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.245.0/24 to-addresses=XX.XX.XX.64 add action=same chain=srcnat comment="192.168.246.0/24 -> XX.XX.XX.65" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.246.0/24 to-addresses=XX.XX.XX.65 add action=same chain=srcnat comment="192.168.247.0/24 -> XX.XX.XX.66" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.247.0/24 to-addresses=XX.XX.XX.66 add action=same chain=srcnat comment="192.168.248.0/24 -> XX.XX.XX.67" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.248.0/24 to-addresses=XX.XX.XX.67 add action=same chain=srcnat comment="192.168.249.0/24 -> XX.XX.XX.68" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.249.0/24 to-addresses=XX.XX.XX.68 add action=same chain=srcnat comment="192.168.250.0/24 -> XX.XX.XX.69" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.250.0/24 to-addresses=XX.XX.XX.69 add action=same chain=srcnat comment="192.168.251.0/24 -> XX.XX.XX.70" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.251.0/24 to-addresses=XX.XX.XX.70 add action=same chain=srcnat comment="192.168.252.0/24 -> XX.XX.XX.71" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.252.0/24 to-addresses=XX.XX.XX.71 add action=same chain=srcnat comment="192.168.253.0/24 -> XX.XX.XX.72" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.253.0/24 to-addresses=XX.XX.XX.72 add action=same chain=srcnat comment="192.168.254.0/24 -> XX.XX.XX.73" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.254.0/24 to-addresses=XX.XX.XX.73 add action=same chain=srcnat comment="192.168.255.0/24 -> XX.XX.XX.74" \ out-interface=sfp-sfpplus2 same-not-by-dst=yes src-address=\ 192.168.255.0/24 to-addresses=XX.XX.XX.74 add action=same chain=dstnat disabled=yes dst-address-list=pub_dns \ same-not-by-dst=no to-addresses=XX.XX.XX.1 add action=same chain=srcnat comment="negative 192.168 -> XX.XX.XX.100" \ dst-address-list=allow_negative out-interface=sfp-sfpplus2 \ same-not-by-dst=yes src-address-list=negative to-addresses=XX.XX.XX.100 add action=dst-nat chain=dstnat comment="Negative redirect to Billing" \ dst-port=80,443 log-prefix=Negtive protocol=tcp src-address-list=negative \ to-addresses=XX.XX.XX.236 to-ports=2096 add action=masquerade chain=srcnat dst-address-list=fix-blocked-sites \ out-interface-list=bypass src-address-list=!negative to-addresses=\ 78.154.181.59 /ip firewall raw add action=drop chain=prerouting comment=Block-RU disabled=yes \ dst-address-list=block add action=drop chain=prerouting comment="Full block TCP negative (not WWW)" \ dst-address-list=!allow_negative dst-port=!53 protocol=tcp \ src-address-list=negative add action=drop chain=prerouting comment="Full block UDP negative (not WWW)" \ dst-address-list=!allow_negative dst-port=!53 protocol=udp \ src-address-list=negative add action=drop chain=prerouting comment=Block-WInBox-not-from-management \ dst-port=8291 protocol=tcp src-address-list=!allowed_management add action=drop chain=prerouting comment=Block-SSH-not-from-management \ dst-port=7722 protocol=tcp src-address-list=!allowed_management add action=drop chain=prerouting comment=Block-SNMP-not-from-zabbix dst-port=\ 161 protocol=udp src-address=!XX.XX.XX.236 /ip route add disabled=no dst-address=0.0.0.0/0 gateway=XX.XX.XX.1 /ppp aaa set interim-update=5m use-radius=yes /radius add address=XX.XX.XX.236 comment=Billing service=ppp /radius incoming set accept=yes port=XXXX /routing bgp connection add as=4XXX9 disabled=no input.filter=ospf-in listen=yes local.address=\ XX.XX.XX.100 .role=ibgp name=border nexthop-choice=force-self \ output.filter-chain=ospf-out .redistribute=connected remote.address=\ XX.XX.XX.1/25 .as=4XXX9 router-id=XX.XX.XX.100 routing-table=main \ templates=default add cisco-vpls-nlri-len-fmt=auto-bits connect=yes listen=yes local.role=ibgp \ name=mikrot101 nexthop-choice=force-self remote.address=XX.XX.XX.101 \ .as=4XXX9 .port=179 templates=default /routing filter rule add chain=ibgp-in disabled=no rule=\ "if (dst in XX.XX.XX.128/25 && dst-len==32) {accept} else {reject}" add chain=ibgp-out disabled=no rule=\ "if (dst in XX.XX.XX.128/25 && dst-len==32) {accept} else {reject}" /system logging set 0 topics=info,!ppp,!pppoe set 1 topics=error,!ppp /system ntp client set enabled=yes /system ntp client servers add address=0.ua.pool.ntp.org add address=1.ua.pool.ntp.org add address=2.ua.pool.ntp.org add address=3.ua.pool.ntp.org /tool bandwidth-server set enabled=no /tool mac-server set allowed-interface-list=management /tool mac-server mac-winbox set allowed-interface-list=management /tool mac-server ping set enabled=no  
×
×
  • Створити нове...