...
Code Block | ||
---|---|---|
| ||
$ git clone https://github.com/hyunsun/sona-setup.git $ cd sona-setup |
4. Download python packages required for gateway node setup
Code Block | ||
---|---|---|
| ||
$ sudo apt-get install python-pip -y
$ sudo pip install oslo.config |
5. At first, write config file for setting up gateway node. Name it vRouterConfig.ini, place under sona-setup.
Code Block |
---|
[DEFAULT] routerBridge = "of:00000000000000b1" #Unique device ID of the router bridge floatingCidr = "172.27.0.0/24" #Floating IP ranges dummyHostIp = "172.27.0.1" #Gateway IP address of the floating IP subnet quaggaMac = "fe:00:00:00:00:01" #Quagga MAC address quaggaIp = "172.18.0.254/30" #Quagga instance IP address gatewayName = "gateway-01" #Quagga instance name bgpNeighborIp = "172.18.0.253/30" #IP address of the external BGP router that quagga instance peered to asNum = 65101 #AS number of Quagga instance peerAsNum = 65100 #AS number of external BGP router uplinkPortNum = "26" #Port number of uplink interface |
56. Next, run createJsonAndvRouter.sh which automatically create vrouter.json and runs ONOS container with vRouter application activated.
Code Block |
---|
sona-setup$ ./createJsonAndvRouter.sh sona-setup$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e5ac67e62bbb onosproject/onos:1.6 "./bin/onos-service" 9 days ago Up 9 days 6653/tcp, 8101/tcp, 8181/tcp, 9876/tcp onos-vrouter |
67. Next, run createQuagga.sh which automatically create volumes/gateway/zebra.conf
and volumes/gateway/bgpd.conf, update vrouter.json and run Quagga container based on those config files.
...
Code Block |
---|
sona-setup$ sudo ovs-ofctl show br-router OFPT_FEATURES_REPLY (xid=0x2): dpid:00000000000000b1 n_tables:254, n_buffers:256 capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP actions: output enqueue set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src mod_dl_dst mod_nw_src mod_nw_dst mod_nw_tos mod_tp_src mod_tp_dst 1(patch-rout): addr:1a:46:69:5a:8e:f6 config: 0 state: 0 speed: 0 Mbps now, 0 Mbps max 2(quagga): addr:7a:9b:05:57:2c:ff config: 0 state: 0 current: 10GB-FD COPPER speed: 10000 Mbps now, 0 Mbps max LOCAL(br-router): addr:1a:13:72:57:4a:4d config: PORT_DOWN state: LINK_DOWN speed: 0 Mbps now, 0 Mbps max OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0 |
78. If there's no external router or emulation of it in your setup, add another Quagga container which acts as an external router. You can just run createQuaggaRouter.sh which automatically volumes/gateway/zebra.conf
and volumes/gateway/bgpd.conf, modify vrouter.json and vRouterConfig.ini, and run Quagga router instance.
...
Code Block | ||
---|---|---|
| ||
sona-setup$ sudo ovs-ofctl show br-routerOFPT_FEATURES_REPLY (xid=0x2): dpid:00000000000000b1 n_tables:254, n_buffers:256 capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP actions: output enqueue set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src mod_dl_dst mod_nw_src mod_nw_dst mod_nw_tos mod_tp_src mod_tp_dst 1(patch-rout): addr:1a:46:69:5a:8e:f6 config: 0 state: 0 speed: 0 Mbps now, 0 Mbps max 2(quagga): addr:7a:9b:05:57:2c:ff config: 0 state: 0 current: 10GB-FD COPPER speed: 10000 Mbps now, 0 Mbps max 3(quagga-router): addr:c6:f5:68:d6:ff:56 config: 0 state: 0 current: 10GB-FD COPPER speed: 10000 Mbps now, 0 Mbps max LOCAL(br-router): addr:1a:13:72:57:4a:4d config: PORT_DOWN state: LINK_DOWN speed: 0 Mbps now, 0 Mbps max OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0 |
89. If everything's right, check fpm-connections
, hosts
and routes
. 172.18.0.253
is the external default gateway in this example. If you added interface and host for floating IP range, you should be able to see the host in the list.
Code Block |
---|
onos> hosts id=FA:00:00:00:00:01/None, mac=FA:00:00:00:00:01, location=of:00000000000000b1/25, vlan=None, ip(s)=[172.18.0.253] id=FE:00:00:00:00:02/None, mac=FE:00:00:00:00:02, location=of:00000000000000b1/1, vlan=None, ip(s)=[172.27.0.1], name=FE:00:00:00:00:02/None onos> fpm-connections 172.17.0.3:52332 connected since 6m ago onos> next-hops ip=172.18.0.253, mac=FA:00:00:00:00:01, numRoutes=1 onos> routes Table: ipv4 Network Next Hop 0.0.0.0/0 172.18.0.253 Total: 1 Table: ipv6 Network Next Hop Total: 0 |
910. Add route for floating IP range manually and check the route is added.
Code Block |
---|
onos> route-add 172.27.0.0/24 172.27.0.1 onos> routes Table: ipv4 Network Next Hop 0.0.0.0/0 172.18.0.253 172.27.0.0/24 172.27.0.1 Total: 2 Table: ipv6 Network Next Hop Total: 0 onos> next-hops ip=172.18.0.253, mac=FA:00:00:00:00:01, numRoutes=1 ip=172.27.0.1, mac=FE:00:00:00:00:02, numRoutes=1 |
1011. Now you should be able to see the gateway node is in COMPLETE state when you re-trigger node initialization. You can either run command openstack-node-init gateway-01 or push the network configuration file again.
...
Code Block | ||
---|---|---|
| ||
[DEFAULT] routerBridge = "of:00000000000000b2" floatingCidr = "172.27.0.0/24" dummyHostIp = "172.27.0.1" quaggaMac = "fe:00:00:00:00:03" quaggaIp = "172.18.0.249250/30" gatewayName = "gateway-02" bgpNeighborIp = "172.18.0.250249/30" asNum = 65101 peerAsNum = 65100 uplinkPortNum = "26" |
...