The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Приоритезация средствами ipfw и dummynet. Это реально?, !*! Lgo, 08-Фев-10, 00:03  [смотреть все]
Добрый день.

Задача – выделить пользователю внутренней сети гарантированный канал.
Другими словами – сделать его трафик приоритетным и ограничить верхний предел скорости.  
(поправьте меня, если я не прав)

Сейчас все пользователи получают необходимую скорость по такой схеме:

# Pipe config
##############
ipfw pipe 10 config mask dst-ip 0xffffffff bw 256Kbits/s  # in
ipfw pipe 110 config mask src-ip 0xffffffff bw 256Kbits/s

# IPFW rules for pipes
#######################
ipfw add 5001 pipe 10 ip from any to <iner ip> in via em0
ipfw add 5002 pipe 110 ip from <inner ip> to any out via em0

Каждый получает свой пайп с заданной скоростью.

У меня появилась идея решить задачу в лобовую. Перед  основными пайпами создать некий
суперпайп без ограничения скорости, в нем 2 очереди – для всех и для особого пользователя.
Примерно так:


# Superpipe
############
ipfw pipe 1 config bw 100Mbit/s

# Queues with prioritization
#############################
ipfw queue 1 config pipe 1 weight 10
ipfw queue 11 config pipe 1 weight 90


# Traffic for all users
#######################
ipfw add queue 1 ip from any to <inner ip>
ipfw add queue 1 ip from <inner ip> to any

# Traffic for surepuser
#######################
ipfw add queue 11 ip from <superuser> to any
ipfw add queue 11 ip from any to <superuser>


Обеспечит ли данная схема решение задачи? И вообще корректно ли так делать?

  • Приоритезация средствами ipfw и dummynet. Это реально?, !*! Pahanivo, 08:47 , 08-Фев-10 (1)
  • Приоритезация средствами ipfw и dummynet. Это реально?, !*! DeadLoco, 00:58 , 09-Фев-10 (3)
    • Приоритезация средствами ipfw и dummynet. Это реально?, !*! Lgo, 22:14 , 09-Фев-10 (5)
      >[оверквотинг удален]
      >ipfw add 10002 queue 2 ip from any to <inner ip>
      >ipfw add 10003 queue 3 ip from <superuser> to any
      >ipfw add 10004 queue 4 ip from <inner ip> to any
      >
      >Разумеется, должен быть включен one-pass режим.
      >
      >Пайпы шейпятся 90% полосы физики для того, чтобы корректно работал WF2Q+ и
      >подстройка ТСР-окна. Лучше сделать натурные замеры и потом по месту отшейпить
      >90-95% от мах, а не то могут случиться "непредвиденные последствия" (с)
      >

      Спасибо большое.

      Есть комментарий. Для чего пользователям создавать отдельные очереди,

      queue 2 config weight 10 queue 50 pipe 1 gred 0.002/5/15/0.1 mask dst-ip 0xffffffff

      если все можно запустить в одну?

      queue 2 config weight 10 queue 50 pipe 1 gred 0.002/5/15/0.1


      Еще 2 вопроса нарисовались:

      1. Можно ли сделать big пайп вообще без шейпинга? Так как шейпинг все равно следует после.
         ipfw pipe 1

      2. В каком порядке лучше ставить пайпы - приоритезация потом шейпинг или наоборот?

      • Приоритезация средствами ipfw и dummynet. Это реально?, !*! DeadLoco, 02:23 , 10-Фев-10 (6)
        • Приоритезация средствами ipfw и dummynet. Это реально?, !*! Lgo, 23:29 , 11-Фев-10 (7)
          >[оверквотинг удален]
          >
          >
          >>2. В каком порядке лучше ставить пайпы - приоритезация потом шейпинг или наоборот?
          >
          >Пайпы ipfw приоритезацию делать не умеют. Приоритезация по весам - только через
          >очереди.
          >Если вы хотите пайпами нарезать фиксированные полосы, то уровень их "вложенности" ограничен
          >максимальным количеством пайпов, который умеет создавать ipfw. Разумеется, при очень большом
          >количестве пайпов, которые придется преодолевать пакету, накладные расходы на его доставку
          >потребуют мощного проца.

          Спасибо большое. Теперь из этого всего нужно сочинить "боевое" решение, чем и займусь.

        • Приоритезация средствами ipfw и dummynet. Это реально?, !*! Lgo, 05:20 , 22-Фев-10 (25)
          Я тут собрал систему, павда не смог убедиться в работоспособности решения.
          Я корректно сделал?

          Листин:

          # Pipe config
          ##############
          ipfw pipe 10 config mask dst-ip 0xffffffff bw 256Kbits/s  # in
          ipfw pipe 110 config mask src-ip 0xffffffff bw 256Kbits/s
          ipfw pipe 11 config mask dst-ip 0xffffffff bw 1Mbits/s    # in
          ipfw pipe 111 config mask src-ip 0xffffffff bw 512Kbits/s
          ipfw pipe 12 config mask dst-ip 0xffffffff bw 5Mbits/s    # in
          ipfw pipe 112 config mask src-ip 0xffffffff bw 1Mbits/s
          ipfw pipe 13 config mask dst-ip 0xffffffff bw 10Mbits/s   # in
          ipfw pipe 113 config mask src-ip 0xffffffff bw 2Mbits/s
          ipfw pipe 14 config mask dst-ip 0xffffffff bw 5Mbits/s    # in
          ipfw pipe 114 config mask src-ip 0xffffffff bw 5Mbits/s
          ipfw pipe 40 config mask dst-ip 0xffffffff bw 20Mbits/s    # in
          ipfw pipe 140 config mask src-ip 0xffffffff bw 5Mbits/s
          ipfw pipe 41 config mask dst-ip 0xffffffff bw 50Mbits/s    # in
          ipfw pipe 141 config mask src-ip 0xffffffff bw 10Mbits/s


          # IPFW rules for pipes
          #######################
          ipfw add 5001 pipe 10 ip from any to "table(10)" in via em0
          ipfw add 5002 pipe 110 ip from "table(10)" to any out via em0
          ipfw add 5003 pipe 11 ip from any to "table(11)" in via em0
          ipfw add 5004 pipe 111 ip from "table(11)" to any out via em0
          ipfw add 5005 pipe 12 ip from any to "table(12)" in via em0
          ipfw add 5006 pipe 112 ip from "table(12)" to any out via em0
          ipfw add 5007 pipe 13 ip from any to "table(13)" in via em0
          ipfw add 5008 pipe 113 ip from "table(13)" to any out via em0
          ipfw add 5009 pipe 14 ip from any to "table(14)" in via em0
          ipfw add 5010 pipe 114 ip from "table(14)" to any out via em0
          ipfw add 5040 pipe 40 ip from any to "table(40)" in via em0
          ipfw add 5041 pipe 140 ip from "table(40)" to any out via em0
          ipfw add 5042 pipe 41 ip from any to "table(41)" in via em0
          ipfw add 5043 pipe 141 ip from "table(41)" to any out via em0

          ####           ####
          # Priority system #
          ####           ####


          ipfw table 110 add 10.0.0.1

          ipfw pipe 200 config bw 45Mbit/s # in
          ipfw pipe 300 config bw 45Mbit/s

          ipfw queue 10 config weight 90 queue 50 pipe 200 gred 0.002/5/15/0.1 mask dst-ip 0xffffffff  # in, high priority
          ipfw queue 11 config weight 90 queue 50 pipe 300 gred 0.002/5/15/0.1 mask src-ip 0xffffffff  #     high priority
          ipfw queue 20 config weight 10 queue 50 pipe 200 gred 0.002/5/15/0.1 mask dst-ip 0xffffffff  # in
          ipfw queue 21 config weight 10 queue 50 pipe 300 gred 0.002/5/15/0.1 mask src-ip 0xffffffff

          ipfw add 6001 queue 10 ip from any to "table(110)" in via em0          # high priority
          ipfw add 6002 queue 11 ip from "table(110)" to any out via em0         # high priority
          ipfw add 6003 queue 20 ip from any to not "table(110)" in via em0
          ipfw add 6004 queue 21 ip from not "table(110)" to any out via em0


          Сначала идут обычные пайпы нарезающие скорость. Таблици 10 - 41 для пользователей с соответствующей скоростью(например те кто в 10 таблице получают скорость 256К).

          Далее таблица 110 для пользователей с приоритетом, по идее. IP 10.0.0.1 просто для примера.

          • Приоритезация средствами ipfw и dummynet. Это реально?, !*! DeadLoco, 02:08 , 23-Фев-10 (26)
            • Приоритезация средствами ipfw и dummynet. Это реально?, !*! Lgo, 23:45 , 24-Фев-10 (27)

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

              Ну так так же и есть :-) Люди платят за канал определенной ширины.

            • Приоритезация средствами ipfw и dummynet. Это реально?, !*! Lgo, 00:19 , 25-Фев-10 (28)
              Блин у нас наже на серверы распространяется минталитет. Ну не работают у нас вещи если их делать правильно.

              После того как реализовал схему с очередями, интернет стал работать боком. Все жалуются на скорость и на длинный пинг.

              Убрал очереди, забросил всех в 1 пайп, а особого юзера в другой поуже (Общий канал - 50, дал всем 45, суперюзеру 5), и все, никто не жалуется, у всех все работает.

              Неправильно? Но работает лучше чем правильно, отак от.

              • Приоритезация средствами ipfw и dummynet. Это реально?, !*! DeadLoco, 10:10 , 25-Фев-10 (29)
                • Приоритезация средствами ipfw и dummynet. Это реально?, !*! Lgo, 06:21 , 01-Мрт-10 (31)
                  >Точно задача как формулируется?

                  Извините за сумбур.

                  Задача такая: сделать 1 пользователя высокопроритетным, чтобы он получал свой гарантированный канал при любых раскладах. При этом надо сохранить старую систему нарезки трафика для всех остальных.

                  Ситему приоритетов я сделал ничего не меняя в системе пайпов для гораничения скорости для всех. И правила для проритето поставил после правил ограничителей скорости.

                  Вот та схема которая работала криво:

                  ####################################################
                  # Variant 1 -  Guaranteed channel (priority users) #
                  # Temporary closed                                 #
                  ####################################################

                  ipfw table 110 add <superuserip>

                  ipfw pipe 200 config bw 45Mbit/s # in
                  ipfw pipe 300 config bw 45Mbit/s

                  ipfw queue 10 config weight 90 queue 50 pipe 200 gred 0.002/5/15/0.1 mask dst-ip 0xffffffff  # in, high priority
                  ipfw queue 11 config weight 90 queue 50 pipe 300 gred 0.002/5/15/0.1 mask src-ip 0xffffffff  #     high priority
                  ipfw queue 20 config weight 10 queue 50 pipe 200 gred 0.002/5/15/0.1 mask dst-ip 0xffffffff  # in
                  ipfw queue 21 config weight 10 queue 50 pipe 300 gred 0.002/5/15/0.1 mask src-ip 0xffffffff

                  ipfw add 6001 queue 10 ip from any to "table(110)" in via em0          # high priority
                  ipfw add 6002 queue 11 ip from "table(110)" to any out via em0         # high priority
                  ipfw add 6003 queue 20 ip from any to not "table(110)" in via em0
                  ipfw add 6004 queue 21 ip from not "table(110)" to any out via em0

                  Это только приоритезация, первичные шейперы я из описания опустил.

                  Сейчас действует эта схема:

                  ###########################
                  # Variant 2 - head attack #
                  ###########################

                  ipfw pipe 210 config bw 45Mbit/s # in
                  ipfw pipe 220 config bw 45Mbit/s

                  ipfw pipe 310 config bw 5Mbit/s # in
                  ipfw pipe 320 config bw 5Mbit/s

                  ipfw add 6001 pipe 210 ip from any to not <superuserip> in via em0
                  ipfw add 6002 pipe 220 ip from not <superuserip> to any out via em0

                  ipfw add 6003 pipe 310 ip from any to <superuserip> in via em0
                  ipfw add 6004 pipe 320 ip from <superuserip> to any out via em0


                  Вот сами Старые добрые пайпы, их я не трогал.

                  # Pipe config
                  ##############
                  ipfw pipe 10 config mask dst-ip 0xffffffff bw 256Kbits/s  # in
                  ipfw pipe 110 config mask src-ip 0xffffffff bw 256Kbits/s
                  ipfw pipe 11 config mask dst-ip 0xffffffff bw 1Mbits/s    # in
                  ipfw pipe 111 config mask src-ip 0xffffffff bw 512Kbits/s
                  ipfw pipe 12 config mask dst-ip 0xffffffff bw 5Mbits/s    # in
                  ipfw pipe 112 config mask src-ip 0xffffffff bw 1Mbits/s
                  ipfw pipe 13 config mask dst-ip 0xffffffff bw 10Mbits/s   # in
                  ipfw pipe 113 config mask src-ip 0xffffffff bw 2Mbits/s
                  ipfw pipe 14 config mask dst-ip 0xffffffff bw 5Mbits/s    # in
                  ipfw pipe 114 config mask src-ip 0xffffffff bw 5Mbits/s
                  ipfw pipe 40 config mask dst-ip 0xffffffff bw 20Mbits/s    # in
                  ipfw pipe 140 config mask src-ip 0xffffffff bw 5Mbits/s
                  ipfw pipe 41 config mask dst-ip 0xffffffff bw 50Mbits/s    # in
                  ipfw pipe 141 config mask src-ip 0xffffffff bw 10Mbits/s


                  # IPFW rules for pipes
                  #######################
                  ipfw add 5001 pipe 10 ip from any to "table(10)" in via em0
                  ipfw add 5002 pipe 110 ip from "table(10)" to any out via em0
                  ipfw add 5003 pipe 11 ip from any to "table(11)" in via em0
                  ipfw add 5004 pipe 111 ip from "table(11)" to any out via em0
                  ipfw add 5005 pipe 12 ip from any to "table(12)" in via em0
                  ipfw add 5006 pipe 112 ip from "table(12)" to any out via em0
                  ipfw add 5007 pipe 13 ip from any to "table(13)" in via em0
                  ipfw add 5008 pipe 113 ip from "table(13)" to any out via em0
                  ipfw add 5009 pipe 14 ip from any to "table(14)" in via em0
                  ipfw add 5010 pipe 114 ip from "table(14)" to any out via em0
                  ipfw add 5040 pipe 40 ip from any to "table(40)" in via em0
                  ipfw add 5041 pipe 140 ip from "table(40)" to any out via em0
                  ipfw add 5042 pipe 41 ip from any to "table(41)" in via em0
                  ipfw add 5043 pipe 141 ip from "table(41)" to any out via em0





Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру