Module name | Description |
---|---|
REST Server | Handles the REST API, which are called from Neturon ONOS plugin. |
REST Client | Extracts networks, subnets, and ports information from Neutron by calling Neutron API |
ForwardingRulePopulator | Sets up packet forwarding rules to OVS of each Cnode for forwarding packets among all VMs in the same subnet. |
ARPHandler | Creates the ARP Response for ARP packets sent from VMs and send it out to the VMs. |
Security Group
Working Flow
(1) OVS setup : creates br-int bridge and setup controller, and setup a TUNNEL_PORT (vxlan)
(2) CREATE_VM by Nova
(3) CREAT_VM REST API call from Nuetron ML2 plugin with VM1_IP, VM1_MAC
(4) Set VM1_IP:VM1_MAC mapping to DHCP Service
(5) PORT_CREATED event to ONOS
(6) Query the VM IP and VM MAC to Neutron for the port created
(7) Populates a flow rule for the VM1 ( dest_IP == VM1_IP -> output to PORT1 )
(8) DHCP Request
(9) DHCP Offer
(10) CREATE VM2 -> Follow the same step of (3) ~ (6)
(11) Populates flow rules for each VM using Nicira Extension
VM1 : dest_IP == VM2_IP -> set_tunnel_destIP = HOST2_IP, set_VNI = VNI1, output to TUNNEL_PORT
VM2 :
- dest_IP == VM2_IP -> output to VM2_PORT
- dest_IP == VM1_IP -> set tunnel dest IP = HOST1_IP, set_VNI = VN1, output to TUNNEL_PORT
(12) ping VM2_IP
(13) ARP request for VM2_IP
(14) ARP response (VM2_MAC) by ARP Handler
(15) ICMP request to VM2 using the flow rule : dest_IP == VM2_IP -> set_tunnel_destIP = HOST2_IP, set_VNI = VNI1, output to TUNNEL_PORT
(16) ICMP request to VM2 using the flow rule : dest_IP == VM2_IP -> output to VM2_PORT
(17) ARP request and response
(18) ICMP response to VM1 using the flow rule: dest_IP == VM1_IP -> set tunnel dest IP = HOST1_IP, set_VNI = VN1, output to TUNNEL_PORT
(19) ICMP response to VM1 using the flow rule: dest_IP == VM1_IP -> output to PORT1