Git Product home page Git Product logo

tcp-ip-laboratory's Introduction

TCP/IP Laboratory manual

GitHub release Docker Image CI

Introduction

This is the repository of Network Lab in University of Tehran. The lab based on TCP/IP Essentials book. All chapter updated to use with modern tools on GNS3 simulator.

You can download all needed resource from latest release and install all tools in Installation section.

Chapters

  • Introduction to Network Peripheral
  1. Linux and TCP-IP networking
  2. Single Segment Network
  3. Bridges, LANs and the Cisco IOS
  4. Static and dynamic routing
  5. UDP and its applications
  6. TCP study
  7. Multicast and realtime service
  8. The Web, DHCP, NTP and NAT
  9. Network management and security

Chapters ToDo

  • IPv6
  • VLan
  • AS Routing (BGP, EBGP, ...)
  • Security
  • Firewall
  • SDN and Routing Rules
  • Network Performance
  • Load balancing
  • MPLS
  • Segment Routing
  • SDN
  • VPN
  • SRV6

Installation

To setup environment, you need to install linux os like Ubuntu, Debian or other platform that support GNS3 + Docker. To install GNS3 you can follow this link.

You can use native installed ubuntu (or other linux), Virtual Machine platform or use new Microsoft WSL2 to install linux toolbox.

Requirement

  • Linux
  • GNS3
  • Docker
  • Cisco router image
  • Mininet

Install tools

You can install all needed tools with bellow commands on Ubuntu x64 based linux:

# sudo add-apt-repository ppa:gns3/ppa
echo "deb http://ppa.launchpad.net/gns3/ppa/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gns3-ubuntu.list
sudo apt update
sudo apt install gns3-gui gns3-server wireshark
DockerType="Free"
if [ $DockerType == "Free" ]; then
  sudo apt install docker.io
else
  sudo apt remove docker docker-engine docker.io
  sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  sudo add-apt-repository \
  "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  sudo apt update
  sudo apt install docker-ce
fi
sudo usermod -aG ubridge $USER
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER
sudo usermod -aG wireshark $USER
sudo usermod -aG docker $USER
# loading new user group config
sudo su $USER

Get docker images

After install docker, you need to get utnetlab images and add into GNS3.

docker pull utnetlab/term
docker pull utnetlab/gui

Also you can download and load docker images from archive file as below:

# archive in (.tar, .tar.gz, .tgz, .bzip, .tar.xz, or .txz) format
docker load -i utnetlab_term.tar.xz
docker load -i utnetlab_gui.tar.xz

Setup GNS3

To load template Figures you need to add Cisco 3725 firmware and utnetlab docker images into GNS3.

Docker images

To add Docker images, you need to open Preferences menu (under Edit in Linux/Windows and GNS3 in Mac OS). Under Docker > Docker containers you can add new images to GNS3. In the New dialog, you can select existing image (load local images) or new image (use docker pull) with image name. Set configuration as below for two docker.

GUI:

{
  image: "utnetlab/gui",
  name: "ut-netlab-gui",
  adaptor: 1,
  startCommand: null, // or empty
  ConsoleType: "https",
  env: null // or empty
}

Terminal:

{
  image: "utnetlab/term",
  name: "ut-netlab-term",
  adaptor: 1, // number of eth adaptor
  startCommand: null, // or empty
  ConsoleType: "telnet",
  env: null // or empty
}

Edit the ut-netlab-gui item and set HTTP port in the container from 80 into 443.

Cisco images

To load Cisco images into GNS3, you need got into Preferences > Dynamips > IOS routers and add new images. Select file in Browse dialog and click on next. Set c3725 for new router. Under Memory section, set Default RAM to 160 MB at minimum. Skip slots step until get Idle-PC step. Click on Idle-PC finder to find local idle-PC number and then press Finish.

Manual build tools and Docker images

To use available Figures, you need use customized Docker images.

sudo apt install build-essential automake autoconf autoreconf auto-tools bin-utils
cd ./docker-tools
make
cd ..

Download Cisco firmware

For Cisco based lab, you need download c3725-adventerprisek9-mz.124-25d.image firmware and add to GNS3.

Add docker images and Cisco firmware to GNS3

Build documents (LaTeX)

You can build LaTeX files with below command or download all as Documents.zip from release page.

latexmk -pdf -interaction=nonstopmode -cd **/*.tex

Build Figures

You can build Figures files with below command or download all as Figures.zip from release page.

cd Figures
./build-gns3p.sh

License

Open GPLv3 LICENSE file.

ToDo and Bugfix

  • add farsi Chapter
  • add figure and template for Cisco IOS HTTP REST API section
  • add quiz sample
  • add network equipment and device overview
  • add api to transfer file to host
    • Can use docker cp
  • update network tools
    • upgrade base docker image
    • base linux
    • socket with netcat
    • linux routing service
    • router discovery
    • ...
  • build custom figure with enabled multicast ping reply
  • add route table for right subnet in exercise 8 Multicast Message

Appendix

tcp-ip-laboratory's People

Contributors

amirhakh avatar hadisfr avatar unknown-unknown-unknown avatar soreana avatar mraarabzadeh1377 avatar alitoufighi avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.