В директории kern, в файлах, список которых приведён ниже, представлен сетевой стек:
- e1000.c, e1000.h
- eth.c, eth.h
- ip.c, ip.h
- icmp.c, icmp.h
- arp.c, arp.h
- tcp.c, udp.c, tcp.h, udp.h
- http.c, http.h
Этот набор файлов позволяет протестировать работу стека TCP/IP.
Поддержанная сетевая карта - E1000. Она имеет 64 очереди RX, TX соотвественно и позволяет быстро обрабатывать входящий трафик.
При запуске JOS запускается ядерный процесс ethernet_loop (его также можно запустить мануально из консоли JOS). Он будет работать 30 секунд, после чего даст право исполниться другим процессам (процессу сервера файловой системы, например).
За это время можно успеть проверить работу сетевого стека:
- обработку ARP-запросов и ответов
- обработку ICMP-запросов и ответов
- обработку UDP, TCP и HTTP запросов по методам GET и POST.
Предварительно нужно запустить скрипт у себя:
$ sudo bash tcp-ip-stack-requirements.sh
Данный скрипт создаст необходимые интерерфейсы и настроит их, чтобы JOS могла обратиться общаться с нами в сети.
Также необходимо проверить набор утилит:
- права sudo
- arping
- ping
- wget
Запуск происходит посредством перехода в директорию grade_itask
и командой:
user@home:~/oscourse/grade_itask$ sudo python3 grade_itask.py
P.S: JOS должна быть запущена перед запуском данной команды.
Возможно может потребоваться какое-то время на то, чтобы запись добавилась в ARP-Таблицу хоста. Если это занимает продолжительное время, просьба прописать команду:
$ sudo arp -s 172.16.0.2 10:00:00:11:11:11
Тогда всё сразу же заработает.
В консоли монитора вы также можете увидеть новые команды, которые позволяют проверить функциональность сетевой карты и даже запустить некоторые тесты (e1000_recv
, http_test
)