Report: Small changes
This commit is contained in:
+28
-28
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user