Вот
тут весьма доходчиво показывается, как решить проблемы, связанные с необоснованно высокой загрузкой ЦПУ. Буквально сегодня пришлось решать подобную проблему, думаю, стоит поделиться опытом.
Итак, имеется сеть с несколькими тысячами пользователей. На циске поднят дхцп-сервер. В один из портов подключена машинка с FreeBSD на борту, для моих маленьких грязных экспериментальных нужд :)
Средняя загрузка на циске обычно колеблется в пределах 15-17%, поэтому, когда загрузка на ней подскочила до 40%, статистика ругнулась об этом прямо мне в монитор. Начинаем разбираться:
cisco#sh proc cpu sort
CPU utilization for five seconds: 47%/2%; one minute: 44%; five minutes: 46%
PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process
54 7234175722014769000 359 20.00% 19.09% 20.53% 0 Cat4k Mgmt LoPri
147 1895888 42514584 44 14.39% 13.08% 13.83% 0 DHCPD Receive
/-------------------/и т.д./----------------------------/
команда show processes cpu sorted выводит все процессы, запущенные на железке, отсортированные по загрузке ЦПУ. В глаза бросились непомерные аппетиты процесса DHCPD Receive - обычно он не входит даже в первую десятку :)
Лезем на машинку с FreeBSD, запускаем tcpdump:
freebsd# tcpdump -ne -v -i vlan1234 dst port 67
03:59:00.287358 08:10:74:xx:xx:xx > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 352: (tos 0x0, ttl 128, id 59374, offset 0, flags [none], proto UDP (17), length 338) 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 08:10:74:xx:xx:xx, length 310, xid 0xeac63e22, Flags [none]
/-------------------/и еще сотни подобных записей/----------------------------/
С одного МАС-адреса валило 50 дхцп-реквестов в секунду!
/*man tcpdump
-e Print the link-level header on each dump line.
-n Don't convert host addresses to names. This can be used to avoid DNS lookups.
-v When parsing and printing, produce (slightly more) verbose output. For example, the time to live, identification, total length and options in an IP packet are printed. Also enables additional packet integrity checks such as verifying the IP and ICMP header checksum. Чем больше v в этом ключе, тем подробнее вывод ;)
*/
cisco#sh mac ad ad 08:10:74:xx:xx:xx
ага! один из управляемых свичей с клиентами. Дальше уже дело техники: настроил ACL на нужном свиче, запросы кончились - загрузка на цыске упала до обычных 15%. Бобро опять победило зло.
Интересно, конечно, что это было? Вирус? Сошедшая с ума тулза доморощенного сисадмина-экспериментатора?