Számítógépes Hálózatok 8. gyakorlat
Teszt canvas.elte.hu Számítógépes Hálózatok Gyakorlat 2
Udp stream példa Példa kód a gyakorlat honlapján. cv2 install: pip install --user opencv-python Számítógépes Hálózatok Gyakorlat 3
Netmask Alhálózat címeinek leírása. Számítógépes Hálózatok Gyakorlat 4
Feladat 3 Hány cím elérhető a következő netmaskokkal és adjuk meg a minimális és maximális címet: 188.100.22.12/32 188.100.22.12/20 188.100.22.12/10 Számítógépes Hálózatok Gyakorlat 5
Multicast Számítógépes Hálózatok Gyakorlat 3. 6
Multicast setsockopt() (sender) ttl = struct.pack('b', 1) sock.setsockopt(socket.ipproto_ip, socket.ip_multicast_ttl, ttl) socket hozzávétele a multicast grouphoz (recv) multicast_group = '224.3.29.71' group = socket.inet_aton(multicast_group) mreq = struct.pack('4sl', group, socket.inaddr_any) sock.setsockopt(socket.ipproto_ip, socket.ip_add_membership, mreq) Számítógépes Hálózatok Gyakorlat 3. 7
SSH Tunnel Windows (putty) Linux ssh L 8000:localhost:80 user@hostname Számítógépes Hálózatok Gyakorlat 8
Mininet A következő példában három hoszt lesz összekötve: h1 h2 h3, és h2 router-ként lesz konfigurálva Ez alapján készült: http://csie.nqu.edu.tw/smallko/sdn/mininet-operations.htm Számítógépes Hálózatok Gyakorlat 10. 9
A test_router.py szkript tartalma: #!/usr/bin/python from mininet.net import Mininet from mininet.cli import CLI from mininet.link import Link, TCLink, Intf from mininet.log import setloglevel, info from mininet.node import CPULimitedHost, Host, Node def mynetwork(): net = Mininet( topo=none, build=false, ipbase='10.0.0.0/8', link=tclink) info( '*** Adding controller\n' ) info( '*** Add switches\n') info( '*** Add hosts\n') h1 = net.addhost('h1', cls=host, ip='10.0.10.2', defaultroute=none) h2 = net.addhost('h2', cls=host, ip='10.0.10.1', defaultroute=none) h3 = net.addhost('h3, cls=host, ip='10.0.20.2', defaultroute=none) info( '*** Add links\n') Link(h1, h2) Link(h2,h3,intfName1='h2-eth1') info( '*** Starting network\n') net.build() info( '*** Starting controllers\n') for controller in net.controllers: controller.start() info( '*** Starting switches\n') info( '*** Post configure switches and hosts\n') CLI(net) net.stop() if name == ' main ': setloglevel( 'info' ) mynetwork() Számítógépes Hálózatok Gyakorlat 10. 10
Mininet Indítsuk el: root@networks:/home/networks/computernetworks/l2-switching# python test_router.py mininet> A h1 h2 h3 hostokon elindíthatunk egy-egy terminált: mininet> xterm h1 h2 h3 Számítógépes Hálózatok Gyakorlat 10. 11
Mininet A h2 termináljában Adjunk IP címet a h2-eth1 interfésznek: # ip addr add 10.0.20.1/8 dev h2-eth1 # ifconfig h2-eth1 10.0.20.1 netmask 255.255.255.0 Engedélyezzük az IP forwarding-ot: # echo 1 > /proc/sys/net/ipv4/ip_forward Állatsuk be a routing szabályokat # ip route add 10.0.10.0/24 dev h2-eth0 # ip route add 10.0.20.0/24 dev h2-eth1 Számítógépes Hálózatok Gyakorlat 10. 12
Mininet A h1 termináljában Az alapértelmezett útvonalat adjuk meg a 10.0.10.1 lokális átjárón keresztül, amelyet az h1-eth0 eszközön lehet elérni: # ip route add default via 10.0.10.1 dev h1-eth0 Töröljük az eredeti route bejegyzést: # ip route del 10.0.0.0/8 Számítógépes Hálózatok Gyakorlat 10. 13
Mininet A h3 termináljában Az alapértelmezett útvonalat adjuk meg a 10.0.20.1 lokális átjárón keresztül, amelyet az h1-eth1 eszközön lehet elérni: # ip route add default via 10.0.20.1 dev h3-eth0 Töröljük az eredeti route bejegyzést: # ip route del 10.0.0.0/8 Számítógépes Hálózatok Gyakorlat 10. 14
Mininet Ezután nézzük meg az IP routing táblát terminálokban: # route -n Most már működni fog a ping: mininet> h1 ping h3 Számítógépes Hálózatok Gyakorlat 10. 15
Iptables http://linux-training.be/networking/ch14.html Számítógépes Hálózatok Gyakorlat 16
Mininet Iptables szabályok kiiratása: # sudo iptables-save Ping tiltás szabály felvétele az OUTPUT lánc elejére: # sudo iptables -I OUTPUT -p icmp --icmp-type echo-request -j DROP Ping tiltás szabály felvétele az OUTPUT lánc elejére : # sudo iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP Ping tiltás szabály törlése: # sudo iptables -D OUTPUT -p icmp --icmp-type echo-request -j DROP Számítógépes Hálózatok Gyakorlat 10. 17
Mininet Iptables port forwarding: h3 node-on inditsunk el egy ssh deamont # /usr/sbin/sshd Állítsuk be a h2-es node-on a forwarding szabályt: # iptables -t nat -A PREROUTING -i h2-eth0 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 10.0.20.2:22 # iptables -A FORWARD -d 10.0.20.2/32 -p tcp -m tcp --dport 2222 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT SSH-zunk be h1-ről a h3-ra a port forwardinggal: # ssh -p 2222 networks@10.0.10.1 Számítógépes Hálózatok Gyakorlat 10. 18
Csomagvesztés Hálózati linkek tulajdonságai: késleltetés (delay), csomagvesztés (loss), sávszélesség (bw) A mininetes python scriptben: linkopts = {'bw':10, 'delay':'5ms, loss=10 } # bw: sávszélesség Mbps-ben # delay: késleltetés mértékegységgel: ms, s, us, stb. # loss: 0-100 közötti egész, csomagvesztés százalék net.addlink(h1, r1, cls=tclink, **linkopts) Számítógépes Hálózatok Gyakorlat 19
Feladat Vizsgáljuk meg, hogy miként hat a csomagvesztés és késleltetés a TCP alapú számológép programra, amit csináltunk. Nézzük meg, hogy a gyakorlat anyagai (udp-socket-stream) között elérhető UDP alapú video streamelő alkalmazásokra milyen hatással van a késleltetés és a csomagvesztés. Számítógépes Hálózatok Gyakorlat 20
VÉGE Számítógépes Hálózatok Gyakorlat 21