diff --git a/report/report.pdf b/report/report.pdf index 1d23e95..6812ccf 100644 Binary files a/report/report.pdf and b/report/report.pdf differ diff --git a/report/report.tex b/report/report.tex index 4891361..4a98ab3 100644 --- a/report/report.tex +++ b/report/report.tex @@ -298,8 +298,8 @@ Layer-3 διευθυνσιοδότηση και ενεργοποιημένη π Οι διεπαφές \textbf{ανήκουν στους κόμβους} και προσδιορίζονται από λογικά ονόματα, τα οποία δεν απαιτείται να ταυτίζονται με τα ονόματα που θα δημιουργηθούν τελικά στο Linux. -Για παράδειγμα, μία διεπαφή με λογικό όνομα \texttt{lan} μπορεί κατά την υλοποίηση να αντιστοιχιστεί στη φυσική -διεπαφή \texttt{r0-eth0}. +Για παράδειγμα, μία διεπαφή με λογικό όνομα \texttt{lan} μπορεί κατά την υλοποίηση να αντιστοιχιστεί στη +συγκεκριμένη διεπαφή Linux/Mininet \texttt{r0-eth0}. Η επιλογή αυτή επιτρέπει στο αρχείο JSON να χρησιμοποιεί ονόματα που εκφράζουν τον ρόλο μιας διεπαφής και όχι λεπτομέρειες της διαδικασίας δημιουργίας της. @@ -417,8 +417,8 @@ Layer-3 διευθυνσιοδότηση και ενεργοποιημένη π \item Το \texttt{topology\_plan.py} επιλύει τις αφηρημένες επιλογές της DSL και παράγει ένα πλήρως συγκεκριμένο \texttt{ExecutionPlan}. - \item Το \texttt{topology\_renderer.py} μετατρέπει το σχέδιο αυτό σε εκτελέσιμο Python κώδικα για το Mininet, οποίος - εξάγεται σε ξεχωριστό αρχείο και αποτελεί ένα ιδιότυπο \emph{python-listing} του renderer. + \item Το \texttt{topology\_renderer.py} μετατρέπει το σχέδιο αυτό σε εκτελέσιμο Python κώδικα για το Mininet, ο οποίος + εξάγεται σε ξεχωριστό αρχείο και αποτελεί το εκτελέσιμο Python listing της πλήρως επιλυμένης τοπολογίας. \item Τέλος, το \texttt{build\_network.py} αποτελεί τον \textbf{coordinator} και το μοναδικό user-facing entry point, συνδέοντας τα επιμέρους στάδια και αναλαμβάνοντας την τελική εκτέλεση του παραγόμενου προγράμματος. @@ -635,7 +635,7 @@ selectors όπως \texttt{auto} ή άλλες αποφάσεις που πρέ \texttt{uplink}: \begin{minted}{json} -{ +[{ "endpoints": [ {"node": "h1", "interface": "net0"}, {"node": "s1", "interface": "auto"} @@ -646,7 +646,7 @@ selectors όπως \texttt{auto} ή άλλες αποφάσεις που πρέ {"node": "r0", "interface": "lan"}, {"node": "s1", "interface": "uplink"} ] -} +}] \end{minted} Πριν από την επίλυση των \texttt{auto}, ο planner εντοπίζει όλες τις ρητές αναφορές σε interfaces και δεσμεύει @@ -677,7 +677,7 @@ s1:uplink -> s1-eth1 Η συμπεριφορά είναι διαφορετική όταν το πεδίο \texttt{interfaces} έχει παραλειφθεί πλήρως από έναν κόμβο. Σε αυτή την περίπτωση ο planner δημιουργεί συνθετικά λογικά ονόματα, όπως \texttt{auto0} και \texttt{auto1}, -τα οποία αντιστοιχίζονται στη συνέχεια σε φυσικά ονόματα όπως \texttt{s1-eth0} και \texttt{s1-eth1}. +τα οποία αντιστοιχίζονται στη συνέχεια σε συγκεκριμένα ονόματα διεπαφών όπως \texttt{s1-eth0} και \texttt{s1-eth1}. Στο ίδιο στάδιο αποφασίζονται και backend-specific λεπτομέρειες που δεν πρέπει να εμφανίζονται στη DSL. Έτσι, η σημασιολογία ενός απλού Layer-2 switch μετατρέπεται από τον planner στην επιλογή @@ -875,13 +875,13 @@ Ethernet, IP και UDP headers. Οι εντολές που εκτελέστηκαν στο Mininet CLI ήταν: \begin{minted}{bash} - minted> h1 rm -f /var/lib/dhcp/dhclient.leases - minted> h1 rm -f /tmp/dhcp.pcap - minted> h1 tcpdump -i h1-eth0 -n -w /tmp/dhcp.pcap & - minted> h1 ps aux | grep tcpdump - minted> h1 dhclient h1-eth0 - minted> h1 pkill -INT tcpdump - minted> h1 tcpdump -n -e -vv -r /tmp/dhcp.pcap + mininet> h1 rm -f /var/lib/dhcp/dhclient.leases + mininet> h1 rm -f /tmp/dhcp.pcap + mininet> h1 tcpdump -i h1-eth0 -n -w /tmp/dhcp.pcap & + mininet> h1 ps aux | grep tcpdump + mininet> h1 dhclient h1-eth0 + mininet> h1 pkill -INT tcpdump + mininet> h1 tcpdump -n -e -vv -r /tmp/dhcp.pcap \end{minted} Η επιλογή \texttt{-e} κατά την ανάγνωση της καταγραφής επιτρέπει την εμφάνιση των Ethernet headers και επομένως @@ -1037,12 +1037,12 @@ UDP ports: 68 -> 67 \begin{minted}{bash} sudo python3 ../source/build_network.py topology.json - minted> h1 ip -4 -br addr - minted> h2 ip -4 -br addr - minted> h1 dhclient h1-eth0 - minted> h2 dhclient h2-eth0 - minted> h1 ip -4 -br addr - minted> h2 ip -4 -br addr + mininet> h1 ip -4 -br addr + mininet> h2 ip -4 -br addr + mininet> h1 dhclient h1-eth0 + mininet> h2 dhclient h2-eth0 + mininet> h1 ip -4 -br addr + mininet> h2 ip -4 -br addr \end{minted} Πριν από το ping διαγράφηκε ο neighbor table του \texttt{h1}, ώστε να μην υπάρχει ήδη γνωστή αντιστοίχιση @@ -1050,14 +1050,14 @@ UDP ports: 68 -> 67 Η κενή κατάσταση του πίνακα επιβεβαιώθηκε με την εντολή \texttt{ip neigh show}. \begin{minted}{bash} - minted> h1 ip neigh flush all - minted> h1 ip neigh show - minted> h1 rm -f /tmp/arp.pcap - minted> h1 tcpdump -i h1-eth0 -n arp -w /tmp/arp.pcap & - minted> h1 ping -c 1 192.168.1.164 - minted> h1 ip neigh show - minted> h1 pkill -INT tcpdump - minted> h1 tcpdump -n -e -vv -r /tmp/arp.pcap + mininet> h1 ip neigh flush all + mininet> h1 ip neigh show + mininet> h1 rm -f /tmp/arp.pcap + mininet> h1 tcpdump -i h1-eth0 -n arp -w /tmp/arp.pcap & + mininet> h1 ping -c 1 192.168.1.164 + mininet> h1 ip neigh show + mininet> h1 pkill -INT tcpdump + mininet> h1 tcpdump -n -e -vv -r /tmp/arp.pcap \end{minted} Το φίλτρο \texttt{arp} του \texttt{tcpdump} περιορίζει την καταγραφή στα ARP frames, ενώ η επιλογή \texttt{-e}