#import "template/module.typ": *

#show: default.with(
  title: "SDN - Lab 1",
  authors: ((
    name: "Yi-Ting Shih (111550013)",
    affiliation: "National Yang Ming Chaio Tung University",
    email: "ytshih@cs.nycu.edu.tw",
  ),),
)

= Part 1: Answer Questions

1. When ONOS activate "org.onosproject.openflow," what APPs does it activate?

It activates:
- org.onosproject.openflow
- org.onosproject.hostprovider
- org.onosproject.lldpprovider
- org.onosproject.openflow-base
- org.onosproject.optical-model

2. After we activate ONOS and run P.17 Mininet command, will H1 ping H2 successfully? Why or why not?

No, S1 and S2 will not forward packets unless `org.onosproject.fwd` is activated.

3. Which TCP port does the controller listen to the OpenFlow connection request from the switch? (Take screenshot and explain your answer.)

> netstat before activating `org.onosproject.openflow-base`
#image("part1-1.png", width: 350pt)

> netstat after activating `org.onosproject.openflow-base`
#image("part1-2.png", width: 350pt)

The ports that appeared only when openflow-base were enabled are:
- tcpv6 `:::6633`
- tcpv6 `:::6653`

4. In question 3, which APP enables the controller to listen on the TCP port?

`org.onosproject.openflow-base`

= Part 2: Create a custom Topology

> Run your Python script and use command "pingall"
#image("part2-1.png", width: 350pt)

> Then take a screenshot of topology on GUI
#image("part2-2.png", width: 350pt)

= Part 3: Statically assign Hosts IP Address in Mininet

> command "dump"
#image("part3-1.png", width: 350pt)

> "ifconfig" on host h1
#image("part3-2.png", width: 350pt)

> "ifconfig" on host h2
#image("part3-3.png", width: 350pt)

> "ifconfig" on host h3
#image("part3-4.png", width: 350pt)

> "ifconfig" on host h4
#image("part3-5.png", width: 350pt)

> "ifconfig" on host h5
#image("part3-6.png", width: 350pt)
