/oscource

This course about OS's core development

Primary LanguageC

Сетевой стек TCP/IP в JOS

Описание

В директории 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)