Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
Changed: | ||||||||
< < | In 2014 the bandwidth available to many CMS T2 sites has been upgraded to about 100 Gbps. To use these links efficiently and still not overload Internet2 the ideal is that we take advantage of smarter network technologies such as openflow. | |||||||
> > | This page is to aggregate interesting information and documentation for the T2 SDN agent, which is a proof of concept of what we could potentially do using Internet2's OESS service. The idea is to keep it simple (as there is not a lot of time available for it) but still demonstrate that inter-site traffic can be re-routed through the controller, optimizing the mesh's occupancy in different points, redirecting traffic that is overloading paths, to other paths. | |||||||
Changed: | ||||||||
< < | Currently Internet2 has a mesh with points of presence all over the US. Clients can control what their paths are to destinations through a remote API named OESS. However, before any action through the API it is important to collect information and analyze the data according to a favorable algorithm to take decisions to ensure optimal and distributed usage of the network. | |||||||
> > | ||||||||
Changed: | ||||||||
< < | The goal in this page is to document the high level requirements for this to happen. | |||||||
> > | Concepts | |||||||
Changed: | ||||||||
< < | It might happen that a proof-of-concept agent is written in Perl, but the end goal is that the OpenFlow controllers such as OLiMPS accomplish that. | |||||||
> > | Algorithm | |||||||
Changed: | ||||||||
< < | ||||||||
> > | The agent should be based in polling cycles. It will monitor links to site A to B, C, D, E and F. Each link A <-> B will have more than one route. The agent will analyze the multiple routes and figure out if link occupancy can be optimized to reduce load in overloaded paths and increase the load in sub-utilized paths.
Paths between site A and B will at first be set by humans. The way to do it will be in a configuration file, in the INI style of Config::Simple. The agent will then poll the different paths and run the algorithm to take decisions.
Necessary parts
[samir@darkstar sdn-agent]$ perl -Ilib t/basic.t 1..2 ok 1 - we have an agent instance Ok, we have a configuration file ok 2 - it loaded the config file For path nebraska-southern , max occupancy is 25.708445109874 Gbps Threshold of 9.31322574615479 Gbps is exceeded on the default path For path nebraska-central , max occupancy is 3.40954129382968 Gbps Path nebraska-central has not exceeded the threshold and is a good option to nebraska-southern Link usage analysisWe will assume that whatever circuit established will be bi-directional, therefore we will use this to our advantage when calculating link occupancy, so if A <-> B is :
ok 2 - it loaded the config file in : 4880768648.32 out : 23459754131.92 Occupancy : 23459754131.92 in : 4923468309.12 out : 23343333114.4 Occupancy : 23343333114.4 in : 4923468309.12 out : 23343333114.4 Occupancy : 23343333114.4 in : 26732614349.12 out : 6674543318.08 Occupancy : 26732614349.12 in : 25724523544.64 out : 5172133386.72 Occupancy : 25724523544.64 in : 11104883426.7378 out : 5572073934.03555 Occupancy : 11104883426.7378 in : 464418907.68 out : 1221074236.24 Occupancy : 1221074236.24 in : 3608908918.24 out : 1939667358.24 Occupancy : 3608908918.24 in : 2275492791.2 out : 3712034803.36 Occupancy : 3712034803.36 | |||||||
Data collection | ||||||||
Line: 43 to 87 | ||||||||
Configuration file format | ||||||||
Changed: | ||||||||
< < | # Simply to which Point of Presence your site (Caltech) is connected to? | |||||||
> > | # Simply, to which Point of Presence your site (Caltech) is connected to? | |||||||
site-pop = sdn-sw.losa.net.internet2.edu | ||||||||
Added: | ||||||||
> > | # "10 Gbps" threshold = 1073741824 | |||||||
[NEBRASKA] | ||||||||
Changed: | ||||||||
< < | path1 = 'sdn-sw.losa.net.internet2.edu&interfaces=100GigabitEthernet3/2', 'sdn-sw.phoe.net.internet2.edu&interfaces=et-4/0/0', 'sdn-sw.phoe.net.internet2.edu&interfaces=et-4/0/0', 'sdn-sw.elpa.net.internet2.edu&interfaces=ethernet3%2F1', 'sdn-sw.houh.net.internet2.edu&interfaces=ethernet1%2F1', 'sdn-sw.kans.net.internet2.edu&interfaces=ethernet3%2F1' | |||||||
> > | DEFAULT = nebraska-southern | |||||||
Changed: | ||||||||
< < | path2 = 'sdn-sw.losa.net.internet2.edu&interfaces=ethernet3%2F1', 'sdn-sw.denv.net.internet2.edu&interfaces=ethernet1%2F1', 'sdn-sw.denv.net.internet2.edu&interfaces=100GigabitEthernet3/2' | |||||||
> > | nebraska-southern = 'sdn-sw.losa.net.internet2.edu&interfaces=100GigabitEthernet3/2', 'sdn-sw.phoe.net.internet2.edu&interfaces=et-4/0/0', 'sdn-sw.phoe.net.internet2.edu&interfaces=et-4/0/0', 'sdn-sw.elpa.net.internet2.edu&interfaces=ethernet3%2F1', 'sdn-sw.houh.net.internet2.edu&interfaces=ethernet1%2F1', 'sdn-sw.kans.net.internet2.edu&interfaces=ethernet3%2F1' nebraska-central = 'sdn-sw.losa.net.internet2.edu&interfaces=ethernet3%2F1', 'sdn-sw.denv.net.internet2.edu&interfaces=ethernet1%2F1', 'sdn-sw.denv.net.internet2.edu&interfaces=100GigabitEthernet3/2' | |||||||
[WISCONSIN] | ||||||||
Line: 62 to 111 | ||||||||
It looks like PerfSONAR will help in the future as you can query traceroutes to it. In the very beginning the best is to do the routing decisions ourselves, and not have any automatic mechanism, but for the future it is interesting to note this. | ||||||||
Deleted: | ||||||||
< < | AlgorithmThe agent should be based in polling cycles. It will monitor links to site A to B, C, D, E and F. Each link A <-> B, A <-> C will have more than one route. The agent will analyze the multiple routes and figure out if link occupancy can be optimized to reduce load in overloaded paths and increase the load in sub-utilized paths. Paths between site A and B will at first be set by humans. The way to do it will be in a configuration file, in the INI style of Config::Simple. The agent will then poll the different paths and run the algorithm to take decisions.Link usage analysisWe will assume that whatever circuit established will be bi-directional, therefore we will use this to our advantage when calculating link occupancy, so if A <-> B is :
ok 2 - it loaded the config file in : 4880768648.32 out : 23459754131.92 Occupancy : 23459754131.92 in : 4923468309.12 out : 23343333114.4 Occupancy : 23343333114.4 in : 4923468309.12 out : 23343333114.4 Occupancy : 23343333114.4 in : 26732614349.12 out : 6674543318.08 Occupancy : 26732614349.12 in : 25724523544.64 out : 5172133386.72 Occupancy : 25724523544.64 in : 11104883426.7378 out : 5572073934.03555 Occupancy : 11104883426.7378 in : 464418907.68 out : 1221074236.24 Occupancy : 1221074236.24 in : 3608908918.24 out : 1939667358.24 Occupancy : 3608908918.24 in : 2275492791.2 out : 3712034803.36 Occupancy : 3712034803.36 | |||||||
Actions - OESS |
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
In 2014 the bandwidth available to many CMS T2 sites has been upgraded to about 100 Gbps. To use these links efficiently and still not overload Internet2 the ideal is that we take advantage of smarter network technologies such as openflow. Currently Internet2 has a mesh with points of presence all over the US. Clients can control what their paths are to destinations through a remote API named OESS. However, before any action through the API it is important to collect information and analyze the data according to a favorable algorithm to take decisions to ensure optimal and distributed usage of the network. | ||||||||
Line: 68 to 68 | ||||||||
Paths between site A and B will at first be set by humans. The way to do it will be in a configuration file, in the INI style of Config::Simple. The agent will then poll the different paths and run the algorithm to take decisions. | ||||||||
Added: | ||||||||
> > | Link usage analysisWe will assume that whatever circuit established will be bi-directional, therefore we will use this to our advantage when calculating link occupancy, so if A <-> B is :
ok 2 - it loaded the config file in : 4880768648.32 out : 23459754131.92 Occupancy : 23459754131.92 in : 4923468309.12 out : 23343333114.4 Occupancy : 23343333114.4 in : 4923468309.12 out : 23343333114.4 Occupancy : 23343333114.4 in : 26732614349.12 out : 6674543318.08 Occupancy : 26732614349.12 in : 25724523544.64 out : 5172133386.72 Occupancy : 25724523544.64 in : 11104883426.7378 out : 5572073934.03555 Occupancy : 11104883426.7378 in : 464418907.68 out : 1221074236.24 Occupancy : 1221074236.24 in : 3608908918.24 out : 1939667358.24 Occupancy : 3608908918.24 in : 2275492791.2 out : 3712034803.36 Occupancy : 3712034803.36 | |||||||
Actions - OESSAzher deployed one OESS instance. Once the previous parts are written, a possibility is to do a small demo with the local equipment, having 2 links between 2 local servers and shifting the load between the links. |
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
In 2014 the bandwidth available to many CMS T2 sites has been upgraded to about 100 Gbps. To use these links efficiently and still not overload Internet2 the ideal is that we take advantage of smarter network technologies such as openflow. Currently Internet2 has a mesh with points of presence all over the US. Clients can control what their paths are to destinations through a remote API named OESS. However, before any action through the API it is important to collect information and analyze the data according to a favorable algorithm to take decisions to ensure optimal and distributed usage of the network. | ||||||||
Line: 40 to 40 | ||||||||
Added: | ||||||||
> > | Configuration file format# Simply to which Point of Presence your site (Caltech) is connected to? site-pop = sdn-sw.losa.net.internet2.edu [NEBRASKA] path1 = 'sdn-sw.losa.net.internet2.edu&interfaces=100GigabitEthernet3/2', 'sdn-sw.phoe.net.internet2.edu&interfaces=et-4/0/0', 'sdn-sw.phoe.net.internet2.edu&interfaces=et-4/0/0', 'sdn-sw.elpa.net.internet2.edu&interfaces=ethernet3%2F1', 'sdn-sw.houh.net.internet2.edu&interfaces=ethernet1%2F1', 'sdn-sw.kans.net.internet2.edu&interfaces=ethernet3%2F1' path2 = 'sdn-sw.losa.net.internet2.edu&interfaces=ethernet3%2F1', 'sdn-sw.denv.net.internet2.edu&interfaces=ethernet1%2F1', 'sdn-sw.denv.net.internet2.edu&interfaces=100GigabitEthernet3/2' [WISCONSIN] path1 = 'a','b', 'c' | |||||||
PerfSONARIt looks like PerfSONAR will help in the future as you can query traceroutes to it. In the very beginning the best is to do the routing decisions ourselves, and not have any automatic mechanism, but for the future it is interesting to note this. |
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
Added: | ||||||||
> > | In 2014 the bandwidth available to many CMS T2 sites has been upgraded to about 100 Gbps. To use these links efficiently and still not overload Internet2 the ideal is that we take advantage of smarter network technologies such as openflow.
Currently Internet2 has a mesh with points of presence all over the US. Clients can control what their paths are to destinations through a remote API named OESS. However, before any action through the API it is important to collect information and analyze the data according to a favorable algorithm to take decisions to ensure optimal and distributed usage of the network.
The goal in this page is to document the high level requirements for this to happen.
It might happen that a proof-of-concept agent is written in Perl, but the end goal is that the OpenFlow controllers such as OLiMPS accomplish that.
Data collectionWeathermapThis weathermap shows the live status of the networks. Reverse engineering it one can find URLs that provide the data seen on the map in the XML Format. There is a number of different nodes and it is not clear that all interfaces are "capturable". Look for the "custom.cgi" HTTP Call on the page (from JS) and you will find what appears to be all metadata of all points in the map.Map logical link / monitoringCaltech <-> Nebraska [1] - southern
Caltech <-> Nebraska [2] - centralGenericPerfSONARIt looks like PerfSONAR will help in the future as you can query traceroutes to it. In the very beginning the best is to do the routing decisions ourselves, and not have any automatic mechanism, but for the future it is interesting to note this.AlgorithmThe agent should be based in polling cycles. It will monitor links to site A to B, C, D, E and F. Each link A <-> B, A <-> C will have more than one route. The agent will analyze the multiple routes and figure out if link occupancy can be optimized to reduce load in overloaded paths and increase the load in sub-utilized paths. Paths between site A and B will at first be set by humans. The way to do it will be in a configuration file, in the INI style of Config::Simple. The agent will then poll the different paths and run the algorithm to take decisions.Actions - OESSAzher deployed one OESS instance. Once the previous parts are written, a possibility is to do a small demo with the local equipment, having 2 links between 2 local servers and shifting the load between the links. -- Main.samir - 2014-08-06 |