Из жизни нерда

7 июл. 2010 г.

Tomtel и Synterra: неравный бой

С одним из томских провайдеров, а именно с Томтелом (AS34145) сегодня произошла интересная (но для его пользователей — печальная) история. Достоверных сведений о ситуации у меня нет, поэтому написанное ниже по большей части предположения.

Началось все, по видимому, с того, что они договорились с Synterra либо на обмен трафиком, либо на транзит.

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

Проблемы начались тогда, когда Synterra начала анонсировать их сеть в мир как доступную через себя. Многие граничные маршрутизаторы выбрали этот маршрут, и трафик в Томтел даже изнутри томской сети пошел через Синтерру. Примерно вот так:

[dmbaturin@langley /home/dmbaturin]$traceroute 77.106.109.140
traceroute to 77.106.109.140 (77.106.109.140), 30 hops max, 40 byte packets
 1  10.91.19.1 (10.91.19.1)  0.222 ms  0.142 ms  0.133 ms
 2  erx320-1.bbn.tomsknet.ru (217.18.128.88)  9.708 ms  9.694 ms  9.679 ms
 3  ge-5-0-2.tom-dr1.ncc.sibirtelecom.ru (213.228.118.205)  9.581 ms  7.173 ms  7.114 ms
 4  213.228.119.30 (213.228.119.30)  23.068 ms  23.045 ms  23.030 ms
 5  xe-0-1-0.nvsk-rgr4.sib.ip.rostelecom.ru (87.226.171.117)  23.025 ms  23.006 ms  22.988 ms
 6  xe-7-3-0.m7-ar4.msk.ip.rostelecom.ru (87.226.133.169)  82.841 ms xe-8-3-0.m7-ar4.msk.ip.rostelecom.ru (87.226.133.53)  66.832 ms  66.815 ms
 7  79.133.94.66 (79.133.94.66)  82.772 ms  81.172 ms  83.229 ms
 8  nsk-d2-hq-ae2.main.synterra.ru (83.229.225.127)  151.201 ms  155.170 ms  155.153 ms
 9  GW-TomTel.main.synterra.ru (83.229.170.18)  147.128 ms  146.396 ms  153.258 ms
10  * * *
11  * * *
12  * * *

В итоге Томтел не полностью не был доступен в течение нескольких часов.

Мораль

Будьте осторожны с анонсами!


Полный текст сообщения

23 июн. 2010 г.

Vyatta и беспроводной модем

Сегодня утром мне пришла в голову мысль попробовать заявленную поддержку беспроводных модемов во Vyatta. Собственно модема под рукой не оказалось, поэтому я подключил телефон Nokia к маршрутизатору по USB.
Выбрал режим подключения «PC Suite», в режиме «Накопитель» нокии работают как простой USB mass storage device. Телефон определился как /dev/ttyACM0, реакция на AT-команды была проверена путем подключения через minicom.

Практическая ценность такого мероприятия в наших условиях, конечно, сомнительна, разве что использовать как резервный канал для управления на случай глобальных проблем с основным. В местах, где есть дешевые 3G-провайдеры это существенно актуальнее.

Приступаем к настройке

Беспроводные модемы настраиваются в set interfaces wirelessmodem, сами интерфейсы должны иметь имя wlmX. Для работы достаточно указать опции «device <имя устройства>» и «network <название сети>». И вот тут начинаются проблемы.

Дело в том, что по умолчанию там присутствуют только сети AT&T, Verizon и SC1. Видимо, это те, которыми пользуются сами авторы и на которых тестировали функциональность. Для моей TELE2 там ничего нет. А от сети зависят AT-команды, посылаемые модему для подключения.

Создаем новую сеть

Раз нашей сети нет, создадим ее сами. Находим в исходном коде, что файлы описаний сетей лежат в /opt/vyatta/share/ppp/network. Путем чтения сайта оператора связи и общения с тех. поддержкой узнаем подробности о нужных AT-командах и делаем свой файл (в моем случае пришлось лишь немного поправить настройки AT&T). Вот содержимое файла /opt/vyatta/share/ppp/network/tele2ru

ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT 'NO CARRIER' ABORT DELAYED
'' AT
OK ATZ
OK  'AT+CGDCONT=1,"IP","internet.tele2.ru"'
OK ATD*99#
CONNECT ''

Создаем интерфейс

Вот теперь действительно можно приступать. Настраиваем интерфейс:

dmbaturin@rekki# set interfaces wirelessmodem wlm0 device ttyACM0

dmbaturin@rekki# set interfaces wirelessmodem wlm0 network tele2ru

dmbaturin@rekki# commit

dmbaturin@rekki# show interfaces wirelessmodem
 wlm0 {
     device ttyACM0
     network tele2ru
 }

После commit он подключится автоматически, что можно увидеть в системных сообщениях.

Jun 23 16:25:41 vyatta pppd[29193]: pppd 2.4.4 started by root, uid 0
Jun 23 16:25:45 vyatta pppd[29193]: Connect: ppp9 <--> /dev/ttyACM0
Jun 23 16:25:45 vyatta vyatta-zebra[2915]: interface ppp9 index 822  added.
Jun 23 16:25:45 vyatta pppd[29193]: PAP authentication succeeded
Jun 23 16:25:47 vyatta vyatta-zebra[2915]: warning: PtP interface ppp9 with addr 77.216.137.187/32 needs a peer address
Jun 23 16:25:47 vyatta vyatta-zebra[2915]: interface index 822 was renamed from ppp9 to wlm0
Jun 23 16:25:47 vyatta vyatta-ripngd[2919]: interface delete ppp9 index 822 flags 0x1090 metric 1 mtu 1500
Jun 23 16:25:47 vyatta vyatta-ripd[2917]: interface delete ppp9 index 822 flags 0x1090 metric 1 mtu 1500
Jun 23 16:25:47 vyatta vyatta-zebra[2915]: interface wlm0 index 822 changed .
Jun 23 16:25:47 vyatta pppd[29193]: Cannot determine ethernet address for proxy ARP
Jun 23 16:25:47 vyatta pppd[29193]: local  IP address 77.216.137.187
Jun 23 16:25:47 vyatta pppd[29193]: remote IP address 10.6.6.6
Jun 23 16:25:47 vyatta pppd[29193]: primary   DNS address 193.12.150.26

При желании его можно подключить или отключить вручную, используя команды операционного режима «connect interface wlm0» и «disconnect interface wlm0» соответственно.

На всякий случай проверим правильность работы. Добавим статический маршрут до чего-нибудь редко используемого (чтобы не допустить прохождения основного трафика через дорогое соединение) и посмотрим трассировку маршрута до него.

dmbaturin@rekki# set protocols static interface-route 193.12.93.139/32 next-hop-interface wlm0
[edit]
dmbaturin@rekki# commit
[edit]
dmbaturin@rekki# run traceroute www.tomsk.tele2.ru
traceroute to www.tomsk.tele2.ru (193.12.93.139), 30 hops max, 40 byte packets
 1  spb-c7606-rtk.vlan411.swip.net (212.151.224.17)  630.295 ms  646.184 ms  666.634 ms
 2  kst-core-1.gigabiteth9-0-0.swip.net (212.151.224.49)  686.061 ms  706.023 ms  745.949 ms
 3  kst-ncore-1.tengigabiteth2-1.swip.net (130.244.52.106)  765.912 ms  790.003 ms  805.800 ms
 4  kst-spe-1.tengigabiteth3-4.swip.net (130.244.206.118)  805.747 ms  805.694 ms  825.622 ms
 5  kst-spe-1.tengigabiteth3-4.swip.net (130.244.206.118)  825.569 ms !X  826.878 ms !X *

Проблемы

В целом, использовать беспроводные модемы с Vyatta можно. Были обнаружены только два несущественных бага, первый: добавить description и прочие опции можно только после создания интерфейса; второй: при подключении не создается файл журнала.

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

Если у кого-то будет желание, можете прислать мне настройки подключений для других сетей.


Полный текст сообщения

30 мар. 2010 г.

Vyatta Core 6, release

Vyatta 6 наконец вышла! Скачать, как и обычно, можно здесь, доступна и документация.

В полном тексте сообщения есть список изменений с примерами использования.

Теперь уже можно с уверенностью говорить, что изменилось. А именно:

  • Реализована поддержка NetFlow и sFlow. Смотреть в «set system flow-accounting.
  • Добавлен межсетевой экран для IPv6.

    Наборы правил создаются через «set firewall ipv6-name NAME». Сами правила мало чем отличаются от правил для IPv4, просто там можно писать IPv6-адреса и ряд специфичных для него протоколов (вроде ICMPv6). Живой пример:

       rule 20 {
         action accept
         description "Allow SMTP access from the Internet"
         destination {
             address 2001:470:1f0b:a80::10
             port smtp
         }
         protocol tcp
      }
      
  • Появился межсетевой экран, основанный на «зонах безопасности».

    Теперь можно определить зоны (например, Интернет и локальная сеть), присвоить их зонам и указать наборы правил для фильтрации трафика между зонами. Удобно, если интерфейсов много.

  • Появилась поддержка 802.11 WiFi

    Может работать в режиме точки доступа или клиента, в том числе ходить за аутентификацией к RADIUS-серверу. Смотреть в «set interfaces wireless wlanX ...».

  • Появились политики маршрутизации для IPv6.

    Описываются в «set policy ipv6 access-list6» и «set policy ipv6 prefix-list6», могут быть использованы в картах маршрутизации наравне с обычными.

  • К числу протоколов маршрутизации добавили OSPFv3.

    Поддержка пока не совсем полная, но основное работает. Это довольно сильно переработанный OSPF, который к тому же поддерживает IPv6.

  • Добавили несколько новых алгоритмов QoS

    Пятой вьятты под рукой нет, поэтому сказать, какие именно из них новые так с ходу не могу. Но rate-limit (он поддерживает burst'ы) и network-emulator (эмулирует глобальную сеть, внося латентность, повреждения и потери пакетов и прочие ужасы) точно в VC5 не было.

  • Появилась «бинарная установка»

    Суть ее в том, что кроме классического метода с распаковкой образа на диск, теперь можно поставить сам образ, который будет распакован при загрузке (примерно как это делается в LiveCD). Все изменения хранятся отдельно от образа. Но главное, что теперь можно добавить новый образ без переустановки всей системы, что очень удобно при обновлении, тестировании или участии в разработке (можно легко сравнить разные образы или откатится, если новый не понравился).

    Чтобы установить новым методом, используется «install-image», а чтобы добавить новый образ, «add system image <путь>». Выбрать образ для загрузки можно через «set system image».

  • Теперь можно руками указать опцию DHCP-сервера, если не хватило стандартных команд. «set service dhcp-server global-option "..."». Синтаксис опций унаследован от самого dhcpd.conf, они передаются в его конфиг без изменений.

Кроме технических нововведений есть и не менее интересные организационные. В частности, смена названия Vyatta Community на Vyatta Core означает то, что теперь доступная по подписке версия будет не параллельной веткой, а просто будет содержать дополнительные компоненты (в этой версии такими будут API удаленного доступа, аутентификация на сервере TACACS+ и коммерческая система фильтрации URL вместо SquidGuard).

Еще собираются убрать несвободные драйверы интерфейсов T/E-carrier, V.35 и DSL. Меня это не особо огорчает, поскольку V.35 остался только в унаследованных системах, E-carrier для данных никто не применяет, а карты DSL-портов у нас мало кто в реальности видел. Но если кому сильно захочется, все эти драйверы лежат на сайте производителя (Sangoma). В США T1 почему-то широко применяется для подключения корпоративных пользователей

Заключение

В общем и целом, со времен VC5 Vyatta стала гораздо лучше. Несмотря на то, что я следил за разработкой с первой альфы, релиз для меня все равно был ожидаемым и радостным событием. Тем, кто еще использует VC5, настоятельно рекомендую обновить, обратная совместимость конфига там не сломалась.

P.S. А еще директор по маркетингу Том МакКафферти оценил и выложил мой плакат для серии Ads not fit for print. Лежит здесь на самом верху: http://www.vyatta.org/community/ads.

Полный текст сообщения

26 февр. 2010 г.

Vyatta 6 Beta

Vyatta 6.0 Beta доступна для загрузки. Там же, где и обычно: http://www.vyatta.org/downloads. Тестируем и ждем финального релиза.


Полный текст сообщения

3 февр. 2010 г.

Пример настройки BGP во Vyatta

Не так давно один хороший человек попросил помочь с настройкой BGP во Vyatta 5.0.2. Этот маршрутизатор используется как граница сети провайдера VoIP. Почти все адреса и номера автономных систем заменены на абстрактные, на всякий случай. Входные данные следующие:

  • Два соседа, оба принимают анонс одной подсети /24 и одного адреса. Один из них (Cogent, если кому интересно) анонсирует значительную часть интернета, второй (Digiport) только свои сети и маршрут по умолчанию.
  • Cogent использует разные маршрутизаторы для приема и выдачи анонсов, и требует использования выделенного адреса в качестве источника.
  • Маршрутизатору Cogent, который отдает маршруты, не должно ничего анонсироваться.
  • В сети, которые анонсирует второй сосед, нужно ходить через него, даже если в анонсах первого они тоже есть.

Обозначим нашу сеть x.x.x.0/24; маршрутизатор Cogent, отдающий анонсы y.y.y.y; принимающий анонсы z.z.z.z; адрес источника для принимаемых нами маршрутов t.t.t.t; адрес второго соседа w.w.w.w. Номер нашей автономной системы обозначим 65501, второго соседа за 65502, Cogent оставим как он есть — 174.

Приступаем к настройке

Активируем процесс BGP, указываем соседей и анонсируемые сети.

edit protocols bgp 65501
set neighbor y.y.y.y remote-as 174    # Отдает нам маршруты из Cogent
set neighbor z.z.z.z remote-as 174    # Принимает наши маршруты в Cogent
set neighbor w.w.w.w remote-as 65502  # Второй сосед
set network x.x.x.0/24                # Наша сеть
set network t.t.t.t/32                # Адрес источника маршрутов из Cogent
exit
commit

Теперь надо что-то сделать с адресом источника маршрутов. Учитывая, что ни для чего больше он не используется, его обычно вешают на петлевой интерфейс (в Cisco это было бы единственным способом, поскольку в качестве источника анонсов там указывался интерфейс, а не адрес).

set interfaces loopback lo address t.t.t.t/32
commit

Настройка политик маршрутизации

Учитывая, что соседи хотят видеть в наших анонсах только нашу сеть, а один из соседей вовсе не должен ничего получать, нам нужно настроить политики маршрутизации. Мы сделаем это с помощью «карт маршрутов» (route-map).

Сначала нужно определить списки сетей (prefix-list), которые будут использованы. Вот список наших сетей:

edit policy prefix-list AdvertisedRoutes
set rule 1 action permit
set rule 1 prefix t.t.t.t/32
set rule 2 action permit
set rule 2 pefix x.x.x.0/24
exit
commit

И соответствующая карта маршрутов: анонсируем сети из списка AdvertisedRoutes, не анонсируем ничего другого.

edit policy route-map Advertise
set rule 1 action permit
set rule 1 match ip address prefix-list AdvertisedRoutes
set rule 2 action deny
exit
commit

Карта маршрутов, запрещающая анонсирование чего бы то ни было:

edit policy route-map NoAdvertise
set rule 1 action deny
exit
commit

Теперь создадим карту, которая будет увеличивать вес маршрутам из Digiport, чтобы при наличии в анонсах обоих маршрут через него считался приоритетным.

edit policy route-map DigiportPrioritize
set rule 1 action permit
set rule 1 set weight 10 # Устанавливаем вес 10, по умолчанию он 0
exit
commit

Настройка соседей

Теперь мы закончили с политикой, и можно настроить самих соседей. Начнем с того, который отдает нам маршруты Cogent.

edit protocols bgp 65501
set neighbor y.y.y.y ebgp-multihop 5
set neighbor y.y.y.y route-map export NoAdvertise
set neighbor y.y.y.y update-source t.t.t.t
exit
commit

Параметр ebgp-multihop отвечает за максимальное расстояние до маршрутизатора, если он не является соединенным напрямую. Параметр update-source определяет, какой адрес будет указан источником анонсов. Опция route-map export указывает карту маршрутов, которая будет применена к исходящим анонсам (для входящих нужно заменить там export на import).

Теперь переходим к тому, который принимает анонсы.

edit protocols bgp 65501
set neighbor z.z.z.z route-map export Advertise
exit
commit

И закончим это все вторым соседом.

edit protocols bgp 65501
set neighbor w.w.w.w route-map export Advertise
set neighbor w.w.w.w route-map import DigiportPrioritize
exit
commit

Настроим маршрут по умолчанию через Cogent, чтобы ходить через него в те сети, которые он не анонсирует, хотя они через него доступны транзитом. (пусть адрес маршрутизатора будет q.q.q.q)

set protocols static route 0.0.0.0/0 next-hop q.q.q.q

Фрагмент конфига

Теперь можно полюбоваться на проделанную работу.

policy {
    prefix-list AdvertisedRoutes {
        rule 1 {
            action permit
            prefix t.t.t.t/32
        }
        rule 2 {
            action permit
            prefix x.x.x.0/24
        }
    }
    route-map Advertise {
        rule 1 {
            action permit
            match {
                ip {
                    address {
                        prefix-list Advertised
                    }
                }
            }
        }
        rule 2 {
            action deny
        }
    }
    route-map DigiportPrioritize {
        rule 1 {
            action permit
            set {
                weight 10
            }
        }
    }
    route-map NoAdvertise {
        rule 1 {
            action deny
        }
    }
}
protocols {
    bgp 65501 {
        neighbor y.y.y.y {
            ebgp-multihop 5
            remote-as 174
            route-map {
                export NoAdvertise
            }
            update-source t.t.t.t
        }
        neighbor z.z.z.z {
            remote-as 174
            route-map {
                export Advertise
            }
        }
        neighbor w.w.w.w {
            remote-as 65502
            route-map {
                export Advertise
                import DigiportPrioritize
            }
        }
        network t.t.t.t/32 {
        }
        network x.x.x.0/24 {
        }
    }
    static {
        route 0.0.0.0/0 {
            next-hop q.q.q.q {
            }
        }
    }
}

Смотрим результат

Vyatta имеет ряд полезных команд операционного режима, позволяющих посмотреть на происходящее.

vyatta@vyatta:~$ show ip bgp neighbors y.y.y.y advertised-routes 
vyatta@vyatta:~$ show ip bgp neighbors z.z.z.z advertised-routes 
BGP table version is 0, local router ID is t.t.t.t
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> t.t.t.t/32       xx.xxx.xx.xx             1         32768 i
*> x.x.x.x.0/24     xx.xxx.xx.xx             1         32768 i

Total number of prefixes 2
vyatta@vyatta:~$ show ip bgp neighbors w.w.w.w advertised-routes 
BGP table version is 0, local router ID is t.t.t.t
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> t.t.t.t/32       zzz.zz.z.zzz             1         32768 35978 35978 35978 35978 i
*> x.x.x.0/24       zzz.zz.z.zzz             1         32768 35978 35978 35978 35978 i

Total number of prefixes 2

Как мы убедились с помощью команды show ip bgp neighbor <адрес> advertised-routes, первому не анонсируется ничего, а остальным наша подсеть и адрес источника. Всех соседей можно увидеть с помощью show ip bgp neighbors.

Список всех полученных маршрутов можно увидеть в show ip bgp. Посмотрим небольшой фрагмент.

BGP table version is 0, local router ID is t.t.t.t
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 0.0.0.0          www.ww.w.www                          10 31846 ?
*> 4.23.112.0/24    xx.xxx.xx.xxx         5010             0 174 21889 i
*> 4.23.113.0/24    xx.xxx.xx.xxx         5010             0 174 21889 i
*> 4.23.114.0/24    xx.xxx.xx.xxx         5010             0 174 21889 i
*> 4.36.118.0/24    xx.xxx.xx.xxx         5010             0 174 21889 i
*> 4.59.23.0/24     xx.xxx.xx.xxx        36990             0 174 33042 i
*> 4.79.98.8/30     www.ww.w.www                          10 31846 i
*> 4.79.248.0/24    xx.xxx.xx.xxx         1000             0 174 12180 12180 12180 12180 12180 i

Как видно, вес у маршрутов от второго соседа действительно поменялся.

С помощью show ip bgp summary можно узнать некоторую общую статистику.

vyatta@vyatta:~$ show ip bgp summary 
BGP router identifier t.t.t.t, local AS number 65501
RIB entries 73927, using 4620 KiB of memory
Peers 3, using 7560 bytes of memory

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
y.y.y.y         4   174  331654   30759        0    0    0 01w1d03h    38882
z.z.z.z         4   174   30540   30764        0    0    0 01w1d03h        1
w.w.w.w         4 65502   61550   61503        0    0    0 4d07h43m      159

Total number of neighbors 3

С помощью show ip route можно убедиться, что наши маршруты действительно попали в FIB. Там они имеют префикс B.

Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       I - ISIS, B - BGP, > - selected route, * - FIB route

B   0.0.0.0/0 [20/0] via www.ww.w.www, 4d07h49m
S>* 0.0.0.0/0 [1/0] via yy.yyy.yy.yyy, eth1
B>* 4.23.112.0/24 [20/5010] via xx.xxx.xx.xxx, eth1 (recursive via yy.yyy.yy.yyy), 01w1d03h
B>* 4.23.113.0/24 [20/5010] via xx.xxx.xx.xxx, eth1 (recursive via yy.yyy.yy.yyy), 01w1d03h
B>* 4.23.114.0/24 [20/5010] via xx.xxx.xx.xxx, eth1 (recursive via yy.yyy.yy.yyy), 01w1d03h
B>* 4.36.118.0/24 [20/5010] via xx.xxx.xx.xxx, eth1 (recursive via yy.yyy.yy.yyy), 01w1d03h
B>* 4.59.23.0/24 [20/36990] via xx.xxx.xx.xxx, eth1 (recursive via yy.yyy.yy.yyy), 01w1d03h

Заключение

Настроенный маршрутизатор уже несколько недель отлично выполняет свои задачи (хотя в организационном плане мы с этими провайдерами утомились общаться). Владелец заметил огромный прирост производительности в сравнении с Cisco 2621, который раньше стоял на этом месте.

Надеюсь, этот пример настройки окажется кому-то полезным.


Полный текст сообщения

6 янв. 2010 г.

Небольшой тест Vyatta с BGP

BGP является одной из основ современного интернета, и каждый уважающий себя маршрутизатор обязан его уметь. Вот и я решил потестировать, как Vyatta поведет себя при его использовании.

В качестве тестового стенда намеренно был выбран мой домашний маршрутизатор, работающий на достаточно слабом и не предназначенном для подобных целей аппаратном обеспечении: Intel Atom 330 (напаянный на материнскую плату D945GCLF2) с гигабайтом памяти DDR2. В эксперименте согласился поучаствовать один хороший человек, у которого на LINX стоит маршрутизатор, с которым я и установил BGP-сессию.

Настройки маршрутизаторов

Конфигурация моей стороны:
dmbaturin@rekki# show protocols bgp 
 65531 {
     neighbor x.x.x.x {
         ebgp-multihop 255
         password XXXXXXXX
         remote-as XXXXX
     }
 }

dmbaturin@rekki# show firewall name InternetToRouter rule 60
 action accept
 destination {
     port 179
 }
 protocol tcp
 source {
     address x.x.x.x
 }

Конфигурация его стороны (показаны только настройки меня в качестве соседа):

description "Vyatta - dmbaturin test"
disable-connected-check
ebgp-multihop 255
maximum-prefix 1
password XXXXXXXX
prefix-list {
     import none
  }
remote-as 65531
route-map {
     import dmbaturin-test-in
  }
update-source x.x.x.x
route-server-client

Как видно, настройки весьма просты (про настройку BGP во Vyatta я еще напишу, но позже), но для тестирования самой возможности их хватит.

Приступаем к тестированию

На всякий случай зажмуриваем глаза и применяем настройки. Потом открываем и смотрим в операционном режиме, что получилось. Получилось следующее:

dmbaturin@rekki# run show ip bgp summary 
BGP router identifier 10.91.19.1, local AS number 65531
RIB entries 565769, using 35 MiB of memory
Peers 1, using 2520 bytes of memory

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
x.x.x.x         4 XXXXX   98626    1034        0    0    0 01:13:40   305133

Total number of neighbors 1

dmbaturin@rekki# run show ip bgp memory  
565825 RIB nodes, using 35 MiB of memory
305132 BGP routes, using 9535 KiB of memory
6 Nexthop cache entries, using 96 bytes of memory
56290 BGP attributes, using 2419 KiB of memory
4904 BGP extra attributes, using 345 KiB of memory
53019 BGP AS-PATH entries, using 621 KiB of memory
53064 BGP AS-PATH segments, using 622 KiB of memory
3 BGP community entries, using 48 bytes of memory
2 peers, using 5040 bytes of memory
23 hash tables, using 460 bytes of memory
109331 hash buckets, using 1281 KiB of memory

dmbaturin@rekki# run show ip bgp|count  
305152

Как видно, анонсы были успешно приняты. Посмотреть чистую пропускную способность на этом всем по ряду причин было проблематично: дублирование маршрута по умолчанию пришедшими из BGP (посколько соединение не было прямым), PPPoE, довольно развесистые правила межсетевого экрана и не сильно стабильная скорость доступа в городскую сеть. Но 20 с лишним мегабит маршрутизатор в этих условиях выдерживал вполне уверенно, обычно скорость бывает 40-60. Части кривых условий можно было избежать, но поскольку тест проводился ради интереса, я не особо стремился это сделать.

Заключение

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


Полный текст сообщения

1 янв. 2010 г.

Технические средства организации совместной работы

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

Тем не менее, эти средства (по крайней мере у нас) применяются в основном крупными компаниями, где без них работать было бы вовсе проблематично. А некоторые из них используют почти исключительно ИТ-специалисты, хотя в других областях их вполне можно применять. Здесь я попытался показать эти средства и их возможности понятным неспециалисту языком.

Списки рассылки

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

Тот, кто желает подписаться, отправляет на ее адрес (например, developers@verycoolproject.org) письмо с командой подписки (обычно subscribe). В любой момент он может таким же образом отказаться от своей подписки. Все письма, отправленные на этот адрес, автоматически пересылаются всем подписавшимся. Существуют средства для создания архивов списка рассылки.

Пример архива списка рассылки на mail-archive.com:

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

Одной из самых распространенных программ для организации списков рассылки является Mailman.

Системы коллективной работы (Groupware)

У этих систем уже существенно большая функциональность. Обычно они содержат:
  • Возможность обмена сообщениями между участниками;
  • Хранение и обмен файлами;
  • Планирование событий с привязкой к календарю;
  • Составление расписания участников и поиск свободного времени в нем;
  • Разграничение прав доступа участников;

Это весьма широкий класс программ, и функциональность может сильно различаться. Какие-то из них могут включать онлайн-редактор документов (Feng Office, Google Apps), собственный почтовый сервер (например, Zimbra Collaboration Suite и Microsoft Exchange), сервер обмена мгновенными сообщениями (Novell GroupWise), или иметь вовсе необозримый набор функций (IBM LotusNotes).

Календарь с назначенным событием в Feng Office:

Некоторые программы этого типа:

Системы контроля версий

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

В итоге приобретаются следующие возможности:
  • Просмотреть файл в том виде, в каком он был, например, неделю назад;
  • Откатить изменения, если они оказались неудачными;
  • Избежать конфликта, если несколько участников изменяли в файле одно и то же;
  • Создавать различные ветки проекта или соединять несколько веток в одну;
  • Предоставить доступ всем участникам к самым свежим изменениями друг друга;
  • Минимизировать вред от случайного удаления или повреждения файлов на компьютере каждого участника;

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

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

Распространенные системы контроля версий:

Системы отслеживания ошибок

Они тоже пришли из разработки программ, и используются там для координации работы по исправлению ошибок. Тем не менее, слово «ошибка» можно смело заменить на «проблема». Суть их в том, что один человек создает запись о проблеме (например, «Не работает функция X»). Он пишет ее описание, указывает где конкретно она возникает (файл, программа или ее часть или что-то подобное) и указывает ее срочность (обычно в стиле «Пожелание», «Незначительная проблема», «Серьезная проблема», «Критическая проблема»).

После этого решение проблемы может быть назначено кому-то из участников. По мере работы над проблемой возможно ее обсуждение и выставление статуса (например, «Решена»).

Некоторые из систем отслеживания ошибок:

Wiki

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

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

Некоторые wiki-движки:

Заключение

Я очень надеюсь, что пользователи поймут, что столь привычные ИТ-специалистам инструменты весьма удобны и полезны, и тоже начнут их использовать.


Полный текст сообщения