U.S. patent application number 14/104768 was filed with the patent office on 2015-06-18 for software-defined networking physical controller.
This patent application is currently assigned to International Business Machines Corporation. The applicant listed for this patent is International Business Machines Corporation. Invention is credited to Casimer DeCusatis, Rajaram B. Krishnamurthy, Anuradha Rao.
Application Number | 20150172192 14/104768 |
Document ID | / |
Family ID | 53369858 |
Filed Date | 2015-06-18 |
United States Patent
Application |
20150172192 |
Kind Code |
A1 |
DeCusatis; Casimer ; et
al. |
June 18, 2015 |
SOFTWARE-DEFINED NETWORKING PHYSICAL CONTROLLER
Abstract
Embodiments include a method, system, and computer program
product for managing data flows in a network. A software-defined
network controller obtains one or more attributes associated with
one or more devices, such as physical layer devices. The obtained
attribute(s) are stored in a table. A flow of data in the network
is controlled based on the table.
Inventors: |
DeCusatis; Casimer;
(Poughkeepsie, NY) ; Krishnamurthy; Rajaram B.;
(Wappingers Falls, NY) ; Rao; Anuradha; (Hopewell
Junction, NY) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
International Business Machines Corporation |
Armonk |
NY |
US |
|
|
Assignee: |
International Business Machines
Corporation
Armonk
NY
|
Family ID: |
53369858 |
Appl. No.: |
14/104768 |
Filed: |
December 12, 2013 |
Current U.S.
Class: |
709/223 |
Current CPC
Class: |
H04J 14/0269 20130101;
H04L 47/10 20130101; H04L 41/20 20130101; H04L 41/0853 20130101;
H04L 45/38 20130101; H04L 47/18 20130101; H04J 3/24 20130101 |
International
Class: |
H04L 12/801 20060101
H04L012/801 |
Claims
1-17. (canceled)
18. A computer system for managing data flows in a network, the
system comprising: at least one software-defined network controller
configured to perform a method comprising: obtaining attributes
associated with a plurality of devices comprising physical layer
devices, the attributes being at least one device attribute among a
plurality of device attributes comprising a number of supported
wavelength channels, a maximum data rate for each wavelength,
wavelength time-division multiplexing (TDM) support capability, a
number of supported channels of TDM, channel availability, channel
amplification, optical amplifier gain, a type of the devices
present, a manufacturer of the devices, and model of the devices;
storing the attributes in a table, the table indexing the
attributes to at least one corresponding device among the plurality
of devices; and controlling a flow of data in the network based on
the table wherein controlling the flow of data includes selecting
an output port that outputs data to that at least one corresponding
device based on the at least one device attribute.
19. The computer system of claim 18, wherein the physical layers
devices include at least one of: a wavelength-division multiplexing
enabled device, a switch inter-switch link, a cross connect, an
optical amplifier, and an electronic dispersion compensation
system.
20. The computer system of claim 18, wherein the at least one
software-defined network controller is configured to control the
flow of data in the network based on service requests from one or
more applications executing on one or more servers, and wherein the
at least one controller comprises a plurality of controllers, and
wherein a first of the controllers serves as a primary controller,
and wherein a second of the controllers is activated in the event
that the first controller fails.
Description
BACKGROUND
[0001] The present invention relates generally to computing
technology, and more specifically, to software-defined networking
(SDN).
[0002] SDN represents one technique for controlling networks. In
the context of the Open System Interconnection (OSI) model (ISO/IEC
7498-1), SDN is applied to Layer 2 or 3 devices, such as switches,
routers, etc. SDN is not applied to Layer 1 or physical layer (PHY)
devices.
[0003] In conventional systems, PHY devices each have their own
operating system (OS). The PHY devices need to be separately
configured. Moreover, in the context of the network as a whole, SDN
fails to provide for management of all the devices in the network,
or all the devices in a given communication path. In this respect,
there is no end-to-end management provided.
SUMMARY
[0004] Embodiments include a method, system, and computer program
product for managing data flows in a network. A software-defined
network controller obtains one or more attributes associated with
one or more devices, such as physical layer devices. The obtained
attribute(s) are stored in a table. A flow of data in the network
is controlled based on the table.
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
[0005] The subject matter which is regarded as embodiments is
particularly pointed out and distinctly claimed in the claims at
the conclusion of the specification. The forgoing and other
features, and advantages of the embodiments are apparent from the
following detailed description taken in conjunction with the
accompanying drawings in which:
[0006] FIG. 1 depicts a computing system environment in accordance
with an embodiment;
[0007] FIG. 2 depicts a process flow of a method in accordance with
an embodiment; and
[0008] FIG. 3 depicts a computing system environment in accordance
with an embodiment.
DETAILED DESCRIPTION
[0009] In accordance with one or more embodiments, systems,
apparatuses, and methods are described that provide a
software-defined network(ing) (SDN) controller configured to manage
physical layer (PHY) devices. The controller couples to the PHY
devices via a secure channel. The controller obtains attributes
associated with the PHY devices in order to provide data flow
control and load balancing. End-to-end management of all the
devices in the network and all the communication in the network is
provided.
[0010] Turning now to FIG. 1, a computing system 100 is generally
shown. The system 100 may be associated with one or more networks,
such as a data network, a management network, etc. The networks may
be coupled to one another.
[0011] The system 100 may include one or more controllers, such as
a SDN controller 110. The controller 110 may interface with or
connect to one or more PHY devices 116. The connection between the
controller 110 and the PHY devices 116 may be made using a secure,
encrypted channel or medium. In an embodiment, the PHY devices 116
may include one or more of wavelength-division multiplexing (WDM)
enabled devices, switch inter-switch links (ISLs), cross connects,
optical amplifiers, electronic dispersion compensation systems,
etc.
[0012] In some embodiments, the controller 110 may reside on a
server, such as an x86 server. The controller 110 may interface
with or connect to Layer 2 and 3 Ethernet ports (not shown in FIG.
1). In some embodiments, the controller 110 may be used to
provision or control, e.g., switches or routers 118. The controller
110 (or server) may connect to the switches or routers 118 through
a secure or encrypted link.
[0013] The controller 110 may interface with, or connect to, one or
more applications 130. In an embodiment, the applications 130 may
include one or more of load balancers, bandwidth monitors, and
wavelength controllers. The applications 130 may execute on one or
more computing devices, such as one or more servers.
[0014] The controller 110 may include a (northbound) application
programming interface (API) 134 that interfaces with the
applications 130. The API 134 may be used to collect physical
device attribute information used in switch/WDM provisioning.
[0015] The controller 110 may include a (southbound) API 144 that
interfaces to the PHY devices 116. The API 144 may be used to query
device attributes, populate a table 152 in the controller 110 with
that attribute information, and communicate traffic flow controls
to each PHY device 116.
[0016] In some embodiments, the table 152 may be populated by
device attribute information collected by one or both of the APIs
134, 144. Based on the attributes in the table 152, the controller
110 may configure the PHY devices 116 and select optimal
reconfigurable traffic flow paths through the PHY devices 116 in
response to service requests by the applications 130.
[0017] Any number of attributes may be stored in the table 152.
Device attributes that may be provided by the table 152 include,
for a WDM device: the number of wavelength channels supported, a
maximum data rate for each wavelength, whether or not the
wavelength supports time-division multiplexing (TDM) (and if so,
how many channels of TDM are supported and at what rate), whether a
channel is characterized by high availability (using a protection
switch), and whether or not the channel has a pre-amp or post-amp
attached. In the context of an optical amplifier, the inclusion or
value of a gain may be included in the table 152. In some
embodiments, the number or types of attributes stored in the table
152 may be based on the type of PHY devices 116 present, the
manufacturer of the PHY devices 116, and/or a make or model number
for a PHY device 116.
[0018] As described above, the table 152 may be used by the
controller to select an optimal traffic flow in a network. For
example, an incoming frame received on a port of a PHY device 116
may be compared to a specification or table of different types of
frames and action(s) to take based on receipt of those respective
frames. In this respect, the incoming frame may serve as an index
to the table, and the action(s) to take in response to the receipt
of that incoming frame may be selected from the table. Considering
the system 100 as a whole, the controller 110 may be used to
facilitate end-to-end control or management of an entire
network.
[0019] In terms of providing an optimal traffic flow in a network,
the controller 110 may cause one or more data flows to be
virtualized with respect to a resource or device (e.g., a PHY
device 116). Virtualization may entail the use of a physical medium
(e.g., a cable or channel) by more than one entity or device (e.g.,
one or more servers). In a first embodiment, the physical medium
may be shared using a TDM technique. In a second embodiment, the
entity or device serving as the source of data packets to be
conveyed on the physical medium may encapsulate the data packets
with a header. The header may include one or more addresses, such
as one or more virtual addresses. The header may be examined by the
controller 110 for making decisions regarding data flows in the
network. The use of headers may be associated with tunneling
techniques as would be known to one of skill in the art.
[0020] While a single controller 110 is shown in FIG. 1, in some
embodiments more than one controller 110 may be used. For example,
control or management functionality may be shared across or between
more than one controller 110. In some embodiments, a first
controller 110 may serve as a primary controller, and a second
controller 110 may be enabled or activated in the event that the
first controller 110 fails. In some embodiments, a controller 110
may provide load balancing.
[0021] In some embodiments, the system 100 (e.g., the controller
110) may be associated with an out-of-band management network for
purposes of, e.g., PHY device 116 control or maintenance.
Communication in the management network may adhere to an open
industry standard or may be based on a proprietary communication
technique or algorithm.
[0022] The system 100 of FIG. 1 is illustrative. In some
embodiments, the entities of the system 100 may be organized or
arranged in a manner that is different from what is shown. In some
embodiments, one or more of the entities shown may be optional. In
some embodiments, additional entities not shown may be
included.
[0023] Turning to FIG. 2, a flow chart of a method 200 is shown.
The method 200 may be tied to, one or more systems, devices, or
components, such as those described herein. For example, the method
200 may be executed by the controller 110. The method 200 may be
used to provide for data flow control and load balancing in a
network.
[0024] In block 202, one or more attributes associated with a
device (e.g., a PHY device) may be obtained. The attributes may
relate to the operation or use of the device. The attributes may be
obtained based on a polling algorithm or technique.
[0025] In block 204, the attributes obtained in block 202 may be
stored in a table. The attributes may be used to map incoming data
packets or frames to one or more actions. In this respect, the
table may be referred to as a match action table.
[0026] In block 206, data flow within the network may be
controlled, and load balancing may be provided for, based on the
attributes stored in the table in block 204. For example, upon
receipt of an incoming data packet or data frame on a port (e.g.,
port #3) of a PHY device, the controller 110 may obtain an
indication of the receipt of the data packet/frame, and the
incoming data packet/frame may serve as an index to the table of
block 204. Having knowledge of the attributes associated with the
PHY device, the controller 110 may select an output port (e.g.,
port #12) of the PHY device for routing the data packet/frame.
[0027] The method 200 is illustrative. In some embodiments, one or
more of the blocks, or a portion thereof, may be optional. In some
embodiments, additional blocks or operations not shown may be
included. In some embodiments, the blocks may execute in an order
or sequence that is different from what is shown in FIG. 2.
[0028] Referring to FIG. 3, an exemplary computing system 300 is
shown. The system 300 is shown as including a memory 302. The
memory 302 may store executable instructions. The executable
instructions may be stored or organized in any manner and at any
level of abstraction, such as in connection with one or more
applications, processes, routines, methods, etc. As an example, at
least a portion of the instructions are shown in FIG. 3 as being
associated with a first program 304a and a second program 304b.
[0029] The instructions stored in the memory 302 may be executed by
one or more processors, such as a processor 306. The processor 306
may be coupled to one or more input/output (I/O) devices 308. In
some embodiments, the I/O device(s) 308 may include one or more of
a keyboard or keypad, a touchscreen or touch panel, a display
screen, a microphone, a speaker, a mouse, a button, a remote
control, a joystick, a printer, etc. The I/O device(s) 308 may be
configured to provide an interface to allow a user to interact with
the system 300.
[0030] The processor 306 may include one or more hard drives 310.
The hard drives 310 may be used to store data.
[0031] The system 300 is illustrative. In some embodiments, one or
more of the entities may be optional. In some embodiments,
additional entities not shown may be included. For example, in some
embodiments the system 300 may be associated with one or more
networks. In some embodiments, the entities may be arranged or
organized in a manner different from what is shown in FIG. 3. In
some embodiments, at least a portion of the system 300 may be
associated with a computing device, such as a controller or a
server.
[0032] Technical effects and benefits include an ability to extend
concepts associated with SDN to PHY devices. End-to-end management
may be provided by a controller. Such end-to-end management may
include management of all the devices in a network, such as
servers, switches, routers, PHY devices, etc. Data flows associated
with the devices may be controlled based on attributes associated
with the devices, thereby providing for optimal data flow in the
network.
[0033] As will be appreciated by one of average skill in the art,
aspects of embodiments may be embodied as a system, method or
computer program product. Accordingly, aspects of embodiments may
take the form of an entirely hardware embodiment, an entirely
software embodiment (including firmware, resident software,
micro-code, etc.) or an embodiment combining software and hardware
aspects that may all generally be referred to herein as, for
example, a "circuit," "module" or "system." Furthermore, aspects of
embodiments may take the form of a computer program product
embodied in one or more computer readable storage device(s) having
computer readable program code embodied thereon.
[0034] One or more of the capabilities of embodiments can be
implemented in software, firmware, hardware, or some combination
thereof. Further, one or more of the capabilities can be
emulated.
[0035] An embodiment may be a computer program product for enabling
processor circuits to perform elements of the invention, the
computer program product comprising a computer readable storage
medium readable by a processing circuit and storing instructions
for execution by the processing circuit for performing a
method.
[0036] The computer readable storage medium (or media), being a
tangible, non-transitory, storage medium having instructions
recorded thereon for causing a processor circuit to perform a
method. The "computer readable storage medium" being non-transitory
at least because once the instructions are recorded on the medium,
the recorded instructions can be subsequently read one or more
times by the processor circuit at times that are independent of the
time of recording. The "computer readable storage media" being
non-transitory including devices that retain recorded information
only while powered (volatile devices) and devices that retain
recorded information independently of being powered (non-volatile
devices). An example, non-exhaustive list of "non-transitory
storage media" includes, but is not limited to, for example: a
semi-conductor storage device comprising, for example, a memory
array such as a RAM or a memory circuit such as latch having
instructions recorded thereon; a mechanically encoded device such
as punch-cards or raised structures in a groove having instructions
recorded thereon; an optically readable device such as a CD or DVD
having instructions recorded thereon; and a magnetic encoded device
such as a magnetic tape or a magnetic disk having instructions
recorded thereon.
[0037] A non-exhaustive list of examples of computer readable
storage medium include the following: a portable computer diskette,
a hard disk, a random access memory (RAM), a read-only memory
(ROM), an erasable programmable read-only memory (EPROM or Flash
memory), a portable compact disc read-only memory (CD-ROM).-Program
code can be distributed to respective computing/processing devices
from an external computer or external storage device via a network,
for example, the Internet, a local area network, wide area network
and/or wireless network. The network may comprise copper
transmission cables, optical transmission fibers, wireless
transmission, routers, firewalls, switches, gateway computers
and/or edge servers. A network adapter card or network interface
card in each computing/processing device receives a program from
the network and forwards the program for storage in a
computer-readable storage device within the respective
computing/processing device.
[0038] Computer program instructions for carrying out operations
for aspects of embodiments may be for example assembler code,
machine code, microcode or either source or object code written in
any combination of one or more programming languages, including an
object oriented programming language such as Java, Smalltalk, C++
or the like and conventional procedural programming languages, such
as the "C" programming language or similar programming languages.
The program code may execute entirely on the user's computer,
partly on the user's computer, as a stand-alone software package,
partly on the user's computer and partly on a remote computer or
entirely on the remote computer or server. In the latter scenario,
the remote computer may be connected to the user's computer through
any type of network, including a local area network (LAN) or a wide
area network (WAN), or the connection may be made to an external
computer (for example, through the Internet using an Internet
Service Provider).
[0039] Aspects of embodiments are described below with reference to
flowchart illustrations and/or block diagrams of methods, apparatus
(systems) and computer program products according to embodiments of
the invention. It will be understood that each block of the
flowchart illustrations and/or block diagrams, and combinations of
blocks in the flowchart illustrations and/or block diagrams, can be
implemented by computer program instructions.
[0040] These computer program instructions may be provided to a
processor of a general purpose computer, special purpose computer,
or other programmable data processing apparatus to produce a
machine, such that the instructions, which execute via the
processor of the computer or other programmable data processing
apparatus, create means for implementing the functions/acts
specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a
computer readable storage medium that can direct a computer, other
programmable data processing apparatus, or other devices to
function in a particular.
[0041] The computer program instructions may also be loaded onto a
computer, other programmable data processing apparatus, or other
devices to cause a series of operational steps to be performed on
the computer, other programmable apparatus or other devices to
produce a computer implemented process such that the instructions
which execute on the computer or other programmable apparatus
provide processes for implementing the functions/acts specified in
the flowchart and/or block diagram block or blocks.
[0042] The flowchart and block diagrams in the Figures illustrate
the architecture, functionality, and operation of possible
implementations of systems, methods and computer program products
according to various embodiments. In this regard, each block in the
flowchart or block diagrams may represent a module, segment, or
portion of code, which comprises one or more executable
instructions for implementing the specified logical function(s). It
should also be noted that, in some alternative implementations, the
functions noted in the block may occur out of the order noted in
the figures. For example, two blocks shown in succession may, in
fact, be executed substantially concurrently, or the blocks may
sometimes be executed in the reverse order, depending upon the
functionality involved. It will also be noted that each block of
the block diagrams and/or flowchart illustration, and combinations
of blocks in the block diagrams and/or flowchart illustration, can
be implemented by special purpose hardware-based systems that
perform the specified functions or acts, or combinations of special
purpose hardware and computer instructions.
* * * * *