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

Исходное сообщение
"создание тестовика vlano'ов на FreeBSD"

Отправлено Nikolas , 08-Июн-15 18:17 
Имеется две FreeBSD 9.3 установленые на виртуалке VMware, на одной надо сделать тестовый маршрутизатор, который будет принмать пакеты из второй FreeBSD через Vlan'ы (нужно создать порядка 100 vlan'ов) и тут же создать 2 Vlan'а которые будут идти к второй (в обратную сторону) FreeBSD. Тестить трафик буду с помощью утилиты iperf, которая есть в портах FreeBSD.
С FreeBSD только знакомлюсь, поэтому могу с чем то тупить, заранее спасибо за любую помощь или совет.

Содержание

Сообщения в этом обсуждении
"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 08-Июн-15 22:51 
вот файл rc.conf на маршрутизаторе

hostname="hostname_freeBSD"
ifconfig_em0="inet 192.168.174.130 netmask 255.255.255.0"
ifconfig_em0_ipv6="inet6 accept_rtadv"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"

default_router="192.168.174.2"
sshd_enable="YES"


gateway_enable="YES"
cloned_interfaces="vlan101 vlan102 vlan103"
ifconfig_vlan101="inet 192.168.1.101 netmask 255.255.255.248 vlan 101 vlandev em0 mtu 1500"
ifconfig_vlan102="inet 192.168.2.102 netmask 255.255.255.248 vlan 102 vlandev em0 mtu 1500"
ifconfig_vlan103="inet 192.168.3.103 netmask 255.255.255.248 vlan 103 vlandev em0 mtu 1500"
ifconfig_em0="up mtu 1504"


но после создания вланов пропадает ip адрес физ. сети em0

И еще, не нашел точного мануала по соединению вланов между портами freebsd, если кто знает где есть такой, или может обяснить как это сделать, буду премного благодарен


"создание тестовика vlano'ов на FreeBSD"
Отправлено Alexander Sheiko , 09-Июн-15 00:36 
> ifconfig_em0="inet 192.168.174.130 netmask 255.255.255.0"

Строчка ниже перекрывает предыдущую. Уберите её вообще.

> ifconfig_em0="up mtu 1504"
> но после создания вланов пропадает ip адрес физ. сети em0


"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 09-Июн-15 00:41 
так подойдет?

hostname="hostname_freeBSD"
ifconfig_em0="up inet 192.168.174.130 netmask 255.255.255.0 mtu 1504"
ifconfig_em0_ipv6="inet6 accept_rtadv"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"

default_router="192.168.174.2"
sshd_enable="YES"


gateway_enable="YES"
cloned_interfaces="vlan101 vlan102 vlan103"
ifconfig_vlan101="inet 192.168.1.101 netmask 255.255.255.248 vlan 101 vlandev em0 mtu 1500"
ifconfig_vlan102="inet 192.168.2.102 netmask 255.255.255.248 vlan 102 vlandev em0 mtu 1500"
ifconfig_vlan103="inet 192.168.3.103 netmask 255.255.255.248 vlan 103 vlandev em0 mtu 1500"



"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 09-Июн-15 00:43 
добавил еще вот такие строки:

router_flags="-q"
router="/sbin/routed"
router_enable="YES"
defaultrouter="192.168.174.2"



"создание тестовика vlano'ов на FreeBSD"
Отправлено Alexander Sheiko , 09-Июн-15 19:04 
> добавил еще вот такие строки:
> router_flags="-q"
> router="/sbin/routed"
> router_enable="YES"

Это убрать нафиг и читать хендбук.


"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 09-Июн-15 23:03 
наконецто все настроил, вЛаны отлично работают, вот rc.conf одной из машин:

hostname="test_freeBSD"
ifconfig_em0="inet 192.168.174.130 netmask 255.255.255.0 mtu 1504 "
ifconfig_em0_ipv6="inet6 accept_rtadv"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"


sshd_enable="YES"


gateway_enable="YES"
cloned_interfaces="vlan101 vlan102 vlan103"
ifconfig_vlan101="inet 192.168.1.1 netmask 255.255.255.0 vlan 101 vlandev em0 mtu 1500"
ifconfig_vlan102="inet 192.168.2.1 netmask 255.255.255.0 vlan 102 vlandev em0 mtu 1500"
ifconfig_vlan103="inet 192.168.3.1 netmask 255.255.255.0 vlan 103 vlandev em0 mtu 1500"


Но теперь нужно протестить, утилиткой iperf, все три vlan'а одновременно.
Как я думаю решить поставленную задачу: создать скрипт, который будет запускать три iperf одновременно для каждого vlan'а и выводить на экран их усредненную смугу пропускания (bandwich) , но я не особо знаком с shell командами, может кто то топомочь, хотя бы примерно как это должно выглядеть


"создание тестовика vlano'ов на FreeBSD"
Отправлено VolanD , 10-Июн-15 13:56 
>[оверквотинг удален]
> cloned_interfaces="vlan101 vlan102 vlan103"
> ifconfig_vlan101="inet 192.168.1.1 netmask 255.255.255.0 vlan 101 vlandev em0 mtu 1500"
> ifconfig_vlan102="inet 192.168.2.1 netmask 255.255.255.0 vlan 102 vlandev em0 mtu 1500"
> ifconfig_vlan103="inet 192.168.3.1 netmask 255.255.255.0 vlan 103 vlandev em0 mtu 1500"
> Но теперь нужно протестить, утилиткой iperf, все три vlan'а одновременно.
> Как я думаю решить поставленную задачу: создать скрипт, который будет запускать три
> iperf одновременно для каждого vlan'а и выводить на экран их усредненную
> смугу пропускания (bandwich) , но я не особо знаком с shell
> командами, может кто то топомочь, хотя бы примерно как это должно
> выглядеть

alt+f2, f3 и т.д. ?


"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 10-Июн-15 17:45 
> alt+f2, f3 и т.д. ?

Нет, я не думаю, что так подойдет



"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 09-Июн-15 13:10 
В итоге вот rc.conf:

hostname="hostname_freeBSD"
ifconfig_em0="inet 192.168.174.130 netmask 255.255.255.0 "
ifconfig_em0_ipv6="inet6 accept_rtadv"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"

router_flags="-q"
router="/sbin/routed"
router_enable="YES"
default_router="192.168.174.2"
sshd_enable="YES"


gateway_enable="YES"
cloned_interfaces="vlan101 vlan102 vlan103"
ifconfig_vlan101="inet 192.168.1.101 netmask 255.255.255.248 vlan 101 vlandev em0 mtu 1500"
ifconfig_vlan102="inet 192.168.2.102 netmask 255.255.255.248 vlan 102 vlandev em0 mtu 1500"
ifconfig_vlan103="inet 192.168.3.103 netmask 255.255.255.248 vlan 103 vlandev em0 mtu 1500"


Вопрос: как теперь со второй freeBSD подключится к этим трем вланам? Нужно ли там в rc.conf создавать аналогичные вЛаны для этого?


"создание тестовика vlano'ов на FreeBSD"
Отправлено omnomnim , 09-Июн-15 18:29 
https://www.freebsd.org/doc/handbook/



"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 09-Июн-15 23:04 
наконецто все настроил, вЛаны отлично работают, вот rc.conf одной из машин:

hostname="test_freeBSD"
ifconfig_em0="inet 192.168.174.130 netmask 255.255.255.0 mtu 1504 "
ifconfig_em0_ipv6="inet6 accept_rtadv"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"


sshd_enable="YES"


gateway_enable="YES"
cloned_interfaces="vlan101 vlan102 vlan103"
ifconfig_vlan101="inet 192.168.1.1 netmask 255.255.255.0 vlan 101 vlandev em0 mtu 1500"
ifconfig_vlan102="inet 192.168.2.1 netmask 255.255.255.0 vlan 102 vlandev em0 mtu 1500"
ifconfig_vlan103="inet 192.168.3.1 netmask 255.255.255.0 vlan 103 vlandev em0 mtu 1500"


Но теперь нужно протестить, утилиткой iperf, все три vlan'а одновременно.
Как я думаю решить поставленную задачу: создать скрипт, который будет запускать три iperf одновременно для каждого vlan'а и выводить на экран их усредненную смугу пропускания (bandwich) , но я не особо знаком с shell командами, может кто то топомочь, хотя бы примерно как это должно выглядеть


"создание тестовика vlano'ов на FreeBSD"
Отправлено Alexander Sheiko , 10-Июн-15 01:23 

> ifconfig_em0="inet 192.168.174.130 netmask 255.255.255.0 mtu 1504 "
> ifconfig_vlan101="inet 192.168.1.1 netmask 255.255.255.0 vlan 101 vlandev em0 mtu 1500"
> ifconfig_vlan102="inet 192.168.2.1 netmask 255.255.255.0 vlan 102 vlandev em0 mtu 1500"
> ifconfig_vlan103="inet 192.168.3.1 netmask 255.255.255.0 vlan 103 vlandev em0 mtu 1500"

Уберите все MTU, они там не нужны.

> Но теперь нужно протестить, утилиткой iperf, все три vlan'а одновременно.
> Как я думаю решить поставленную задачу: создать скрипт, который будет запускать три
> iperf одновременно для каждого vlan'а и выводить на экран их усредненную
> смугу пропускания (bandwich) , но я не особо знаком с shell
> командами, может кто то топомочь, хотя бы примерно как это должно
> выглядеть

У Вас суммарная скорость работы этих трёх виланов будет такая же, как и при работе одного обычного интерфейса. В пределах ошибки измерений. Другими словами - не занимайтесь ерундой.


"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 10-Июн-15 09:39 
> У Вас суммарная скорость работы этих трёх виланов будет такая же, как
> и при работе одного обычного интерфейса. В пределах ошибки измерений. Другими
> словами - не занимайтесь ерундой.

В том и вся соль, что б показать то, что скорость пирмерно ровна. Я ведь не только для троих хочу сделать, а и для 10, 50, 100 вланов


"создание тестовика vlano'ов на FreeBSD"
Отправлено сис.админ_23rus , 10-Июн-15 11:09 
>> У Вас суммарная скорость работы этих трёх виланов будет такая же, как
>> и при работе одного обычного интерфейса. В пределах ошибки измерений. Другими
>> словами - не занимайтесь ерундой.
> В том и вся соль, что б показать то, что скорость пирмерно
> ровна. Я ведь не только для троих хочу сделать, а и
> для 10, 50, 100 вланов

Вам тонко намекнули, что больше пропускной способности интерфейса не прыгнешь, хоть там 100 хоть 1000 если порт 10Gbps то vlan1+vlan2+...+vlan1000=10Gbps


"создание тестовика vlano'ов на FreeBSD"
Отправлено сис.админ_23rus , 10-Июн-15 11:13 
> Вам тонко намекнули, что больше пропускной способности интерфейса не прыгнешь, хоть там
> 100 хоть 1000 если порт 10Gbps то vlan1+vlan2+...+vlan1000=10Gbps

Ну а если вам конкретно по каждому vlan нужно, то в любом случае через некоторые может быть в дальнейшем больше обмена данными будет, по некоторым меньше, соответственно и в сетевой очереди будет разное время прохождения


"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 10-Июн-15 11:27 
>> Вам тонко намекнули, что больше пропускной способности интерфейса не прыгнешь, хоть там
>> 100 хоть 1000 если порт 10Gbps то vlan1+vlan2+...+vlan1000=10Gbps
> Ну а если вам конкретно по каждому vlan нужно, то в любом
> случае через некоторые может быть в дальнейшем больше обмена данными будет,
> по некоторым меньше, соответственно и в сетевой очереди будет разное время
> прохождения

Я понимаю, просто мне как раз таки и надо это показать с помощью iperf , но у нее нету таких опций всилу их ненужности. Вот поетому и надо создать скрипт, который будет циклом запускать iperf для нужного количества vlan'ов и выводить просумированные результаты iperf'а.


"создание тестовика vlano'ов на FreeBSD"
Отправлено Alexander Sheiko , 10-Июн-15 16:04 
> Я понимаю, просто мне как раз таки и надо это показать с
> помощью iperf

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


"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 10-Июн-15 13:08 
вот написал что то, но не работает для вланов только для физ сети em0
Еще не знаю как изменить паремтр(наверное еще одну переменную x надо) чтоб в команде iperf -c 192.168.x+1.0 для вланов в будующем


#!/bin/sh

i=0
while [ $i -lt 3 ]
do
  i=`echo $i+1|/usr/local/bin/iperf -c 192.168.174.129`
done
echo $i


"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 10-Июн-15 14:10 
надо что то типо:

#!/bin/sh

i=0
while [ $i -le 3 ]
do
  i=`echo $i+1|/usr/local/bin/iperf -c 192.168.$i+1.2`
done
echo $i


но оно не работает...


"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 10-Июн-15 22:44 
Итого, все работает хорошо, кроме что разве вывода результатов у файл (у stat.txt записывается только результат для последнего vlan'a, а если не в файле, а в командной строке, то видны отчеты всех, которые обработал цикл). Перепробовал все, что знал... Может кто то знает как с ним справится, буду очень признателен


#!/bin/sh

i=1
while [ $i -le $1 ]
do
  c=$i
  /usr/local/bin/iperf -c 192.168.$c.2 -t 5 -y C > stat.txt
  echo $c
  i=`expr $i + 1`
done


"создание тестовика vlano'ов на FreeBSD"
Отправлено анонимус , 11-Июн-15 02:55 
/usr/local/bin/iperf -c 192.168.$c.2 -t 5 -y C >> stat.txt

"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 11-Июн-15 11:04 
> /usr/local/bin/iperf -c 192.168.$c.2 -t 5 -y C >> stat.txt

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


"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 11-Июн-15 12:43 
Теперь мучаюсь с строками... Как извлечь из файла stat.txt скорость(три первых цифры последнего значения, после комы в каждой строке) и записать в новый файл (est.txt)
Пытался с помощью cut сделать, но не получилось, может grep удобней будет?


Вот stat.txt

20150611123252,192.168.1.1,50771,192.168.1.2,5001,3,0.0-5.0,138018816,220638944
20150611123257,192.168.2.1,44982,192.168.2.2,5001,3,0.0-5.0,147849216,236358927
20150611123302,192.168.3.1,14413,192.168.3.2,5001,3,0.0-5.0,136183808,217441076

А так должен выглядеть est.txt

VLAN101  220
VLAN102  236
VLAN103  217


"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 11-Июн-15 13:33 
получилось вот так, только не получается выделить еще первые 3 байта, вместо всех 9

#!/bin/sh  

FILENAME=/usr/home/main/stat.txt
x=101
for user in $(cut -d, -f9 $FILENAME)
do
  echo VLAN$x $user >> /usr/home/main/est.txt
  x=`expr $x + 1`
done


"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 11-Июн-15 14:42 
Наконец то все работает так, как я и хотел, но есть еще одна мелочь, как в shell сделать график зависимости номера vlan'a от смуги пропускания (которые беру из файла est.txt, сейчас там только 3 vlana, но будет около 100)
est.txt :

VLAN101 212
VLAN102 202
VLAN103 203

вот скрипт, который реализует предыдущие мои вопросы:
#!/bin/sh

cp /dev/null stat.txt
cp /dev/null est.txt
i=1
while [ $i -le $1 ]
do
  c=$i
  /usr/local/bin/iperf -c 192.168.$c.2 -t 5 -y C >> stat.txt
  echo $c
  i=`expr $i + 1`
done

FILENAME=/usr/home/main/stat.txt
x=101
for y in $(cut -b 71-73 $FILENAME)
do
  
  echo VLAN$x $y >> /usr/home/main/est.txt
  x=`expr $x + 1`
done


И да, еще такой вопрос, когда я запускал цыклом iperf, я нагружал 101 vlan, потом 102 и тд, а как можно одновременно нагрузить 101,102,103 vlan'ы и тд ?


"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 11-Июн-15 15:07 
сделал так, чтоб одновременно vlan'ы тестились, так теперь не переносится данные у файл est.txt, в чем ошибка?

#!/bin/sh

cp /dev/null stat.txt
cp /dev/null est.txt
i=1
while [ $i -le $1 ]
do
  c=$i
  /usr/local/bin/iperf -c 192.168.$c.2 -t 5 -y C >> stat.txt &
  echo $c
  i=`expr $i + 1`
done

FILENAME=/usr/home/main/stat.txt
x=101
for y in $(cut -b 71-73 $FILENAME)
do
  
  echo VLAN$x $y >> /usr/home/main/est.txt
  x=`expr $x + 1`
done


"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 11-Июн-15 15:21 
похоу, надо задержать выполнение второго цикла на 5 секунд, каким способои можно это сделать?

"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 11-Июн-15 15:27 
Ребята, как в shell сделать график ?


"создание тестовика vlano'ов на FreeBSD"
Отправлено VolanD , 15-Июн-15 05:24 
> Ребята, как в shell сделать график ?

rrd? или надо прям в консолях?


"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 15-Июн-15 10:51 
>> Ребята, как в shell сделать график ?
> rrd? или надо прям в консолях?

Спасибо Вам, но я уже отказался о данной идеи


"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 15-Июн-15 10:54 
Подскажите, пожалуйста, мои ошибки в структурировании и тд.

#!/bin/sh
touch stat.txt
touch est.txt

n=101
a=1
while [ $a -le $1 ]
do
  n=`expr $a + 100`
  /sbin/ifconfig vlan$n create && ifconfig vlan$n inet 192.168.$a.1 netmask 255.255.255.0 vlan $n vlandev em0
  a=`expr $a + 1`
done

i=1
while [ $i -le $1 ]
do
  c=$i
  /usr/local/bin/iperf -c 192.168.$c.3 -t 10 -y C >> stat.txt &
  i=`expr $i + 1`
done

sleep 15

FILENAME=/usr/home/main/stat.txt
for y in $(cut -d, -f 9 $FILENAME)
do  
  echo $y >> /usr/home/main/est.txt &
done


n=101
a=1
while [ $a -le $1 ]
do
  n=`expr $a + 100`
  /sbin/ifconfig vlan$n destroy
  a=`expr $a + 1`
done

n=0
while read line
do
   let "n=$n+"$line""
   clear
done < est.txt
let "m=$n/1000000"


rm stat.txt
rm est.txt


"создание тестовика vlano'ов на FreeBSD"
Отправлено Nikolas , 15-Июн-15 11:01 
И да, как мне сделать, чтоб етим скриптом я мог вызывать исполнения другого скрипта на другой машине.
Например, ip первой машины 192.168.174.130  ,  другой - 192.168.174.131

Вот код скрипта, который надо выполнить на второй машине (параметр $1 нужно взять из скрипта на первой машине)

#!/bin/sh
n=101
a=1
while [ $a -le $1 ]
do
  n=`expr $a + 100`
  /sbin/ifconfig vlan$n create && ifconfig vlan$n inet 192.168.$a.3 netmask 255.255.255.0 vlan $n vlandev em0
  a=`expr $a + 1`
done
sleep 40
n=101
a=1
while [ $a -le $1 ]
do
  n=`expr $a + 100`
  /sbin/ifconfig vlan$n destroy && ifconfig vlan$n inet 192.168.$a.3 netmask 255.255.255.0 vlan $n vlandev em0
  a=`expr $a + 1`
done



"создание тестовика vlano'ов на FreeBSD"
Отправлено VolanD , 16-Июн-15 05:19 
>[оверквотинг удален]
> sleep 40
> n=101
> a=1
> while [ $a -le $1 ]
> do
>   n=`expr $a + 100`
>   /sbin/ifconfig vlan$n destroy && ifconfig vlan$n inet 192.168.$a.3 netmask 255.255.255.0
> vlan $n vlandev em0
>   a=`expr $a + 1`
> done

Вы, простите, чего в итоге добиться хотите?


"создание тестовика vlano'ов на FreeBSD"
Отправлено ALex_hha , 18-Июн-15 13:10 
> И да, как мне сделать, чтоб етим скриптом я мог вызывать исполнения другого скрипта на другой машине. Например, ip первой машины 192.168.174.130  ,  другой - 192.168.174.131

а в чем собственно проблема

ssh user@192.168.174.131 'command1; command2'

чтобы не запрашивало пароль - настроить аутентификацию по ключам