Network Management
Summer 2017, Corboy 205, TTh 5:30-8:45 pm
Class 6: July 20
Midterm study guide draft
Readings
Here are some references to IntroNetworks:
Ethernet switching: intronetworks.cs.luc.edu/current/html/ethernet.html#ethernet-switches
Spanning Tree: intronetworks.cs.luc.edu/current/html/ethernet.html#spanning-tree-algorithm-and-redundancy
Overview of distance-vector
route-discovery (especially intronetworks.cs.luc.edu/current/html/routing.html#distance-vector-update-rules).
Discussion of SDN and openflow: intronetworks.cs.luc.edu/current/html/ethernet.html#software-defined-networking.
The Pox section of AICN: intronetworks.cs.luc.edu/current/html/mininet.html#the-pox-controller.
After class 4 you should read up through section 11 of intronetworks.cs.luc.edu/current/html/netmgmt.html.
Basics of linux
Basics of Python:
1. Hot packet soup example:
mininet rectangle.py
and l2_pairs.py
Tuesday we did this and, in a few seconds, saw thousands of circulating ARP
requests.
Now to fix it. The rectanglepox.py
example failed Tuesday, because I'd disabled the forwarding of broadcast
traffic, which is essential for ARP to work.
What if we configured the forwarding in rectangle.py, using pox, so s1→h1,
s2→h2, etc, and
to reach h1, s2→s3→s4→s1
to reach h2, s3→s4→s1→s2
etc
Would this work? Note that packets addressed to h1--h4 do not
circulate endlessly! The demo was supposed to show that, with
HANDLE_BROADCAST=False, this did not work. That's what happened:
it did not work. But I forgot that the reason was the parameter.
If we set HANDLE_BROADCAST=True, the example does work. The switches s2, s3
and s4 flood normally. But if s1 receives a packet from s4, it does not
flood it to s2, and vice-versa (though in both cases s1 would
flood the packet to h1).
cw/ccw example:
Open an xterm at s2. Start wireshark or
tcpdump to listen to s2-eth2. Have h1 ping h3. Do you see ping requests or
replies or both? Next, have h3 ping h1. Now what do you see?
3. First look at trunkNK.py and multitrunkpox.py
TCP connections take trunk 1, 2, or 3, in sequence.
trunkNK.py: setting link bandwidths
multitrunkpox.py: assign new TCP connections to one of the trunks, in
round-robin fashion via picktrunk().
Note that this requires matching on the IP
addresses and TCP ports, as well as the Ethernet addresses.
- SwitchNode
- Connection
- switchmap
- conn_to_path
- known_hosts
- ConnectionUp events
- LinkEvents
- PacketIn events
- TCP connections: finding a path, creating OpenFlow rule
4. Mininet and SNMP
Example: routerline.py
We can install SNMP with these two commands:
apt-get install snmpd
apt-get install snmp
We also have to configure /etc/snmp/snmpd.conf, but only once, on the base
Mininet virtual machine. We can now start /usr/sbin/snmpd on each Mininet
node, and it will share the configuration.
We can then run, eg
snmpwalk -v 1 -c tengwar 10.0.2.1
1.3.6.1.2.1.2.2.1.2
What is this OID?
Continuation with SNMP
Read intronetworks.cs.luc.edu/current/html/netmgmt.html,
sections 21.1-21.11
Continue with SNMPv2
- Get semantics
- GetBulk
- Indexes
- TestAndIncr
- ifXTable
- Etherlike
- IP-MIB, IP-FORWARD MIB
- TCP-MIB
- Table row creation
- Ping-mib
Other ways of polling devices:
ssh: limitations: lack of "universal" account
lack of
"limited" account
doesn't work
for most hubs/switches/non-hosts