The present invention relates to data center infrastructure and usage, and more particularly, this invention relates to exchanging security level and status information between transmission control protocol/user datagram protocol (TCP/UDP) client(s) and server(s) to provide secure transactions.
Multiple TCP/UDP sessions may be established between one or more clients and one or more servers to exchange confidential data over sockets of the devices. Servers and/or clients are usually exposed to viruses and/or malware, which may lead to virus infections and/or malware and/or spyware attacks which appropriate information from the devices which are affected/infected.
TCP/UDP sessions which are exchanging confidential information with such affected/infected devices (or devices which are infected by other sessions while secure sessions are exchanging information), are completely unaware of device security status or concerns over virus, malware, or spyware attacks.
Transport protocols are not aware of the security level of devices while a session is in progress. Also, transport protocols are not adaptive nor capable of adjusting the information exchange according to security exposure/levels of peers in the session. Accordingly, TCP/UDP sessions are vulnerable to virus/malware/spyware attacks, which may result in the exposure of confidential information.
According to one embodiment, a system includes a processor and logic integrated with the processor, executable by the processor, or integrated with and executable by the processor. The logic is configured to cause the processor to inform a second peer about a security issue in one or more secure transmission control protocol/user datagram protocol (TCP/UDP) sessions using a first peer of the one or more TCP/UDP sessions. The logic is also configured to cause the processor to perform at least one action at the first peer in response to detecting the security issue. The at least one action resolves the security issue, avoids the security issue, or resolves and avoids the security issue. Also, the at least one action includes informing, via a socket call or an extension of a socket call on the one or more TCP/UDP sessions, one or more applications operating on the second peer to limit information exchange based on a severity of the security issue.
In another embodiment, a method includes informing a second peer about a security issue in one or more secure TCP/UDP sessions using a first peer of the one or more TCP/UDP sessions. The method also includes performing at least one action at the first peer in response to detecting the security issue. The at least one action resolves the security issue, avoids the security issue, or resolves and avoids the security issue. Also, the at least one action includes informing, via a socket call or an extension of a socket call on the one or more TCP/UDP sessions, one or more applications operating on the second peer to limit information exchange based on a severity of the security issue.
In yet another embodiment, a computer program product includes a computer readable storage device having program code embodied therewith. The embodied program code is executable by a processor to cause the processor to inform, by the processor, a second peer about a security issue in one or more secure TCP/UDP sessions using a first peer of the one or more TCP/UDP sessions. The embodied program code also causes the processor to perform, by the processor, at least one action at the first peer in response to detecting the security issue. The at least one action resolves the security issue, avoids the security issue, or resolves and avoids the security issue. Moreover, the at least one action includes informing, via a socket call or an extension of a socket call on the one or more TCP/UDP sessions, one or more applications operating on the second peer to limit information exchange based on a severity of the security issue.
Other aspects and embodiments of the present invention will become apparent from the following detailed description, which, when taken in conjunction with the drawings, illustrate by way of example the principles of the invention.
The following description is made for the purpose of illustrating the general principles of the present invention and is not meant to limit the inventive concepts claimed herein. Further, particular features described herein can be used in combination with other described features in each of the various possible combinations and permutations.
Unless otherwise specifically defined herein, all terms are to be given their broadest possible interpretation including meanings implied from the specification as well as meanings understood by those skilled in the art and/or as defined in dictionaries, treatises, etc.
It must also be noted that, as used in the specification and the appended claims, the singular forms “a,” “an,” and “the” include plural referents unless otherwise specified. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
Furthermore, “about” as used herein as a relative term includes any amount reasonably close to the value being modified by the term “about.” In one embodiment, ±5% of the value which is modified by about is included. For example, “about 10” may include 9.5, 10.5, and all values therebetween.
According to one general embodiment, a system includes a processor and logic integrated with and/or executable by the processor, the logic being configured to identify a security issue affecting a first peer in one or more secure transmission control protocol/user datagram protocol (TCP/UDP) sessions, inform a second peer about the security issue using the first peer of the one or more TCP/UDP sessions, and perform at least one action in response to identifying and/or being informed about the security issue.
In another general embodiment, a method for providing a secure TCP/UDP session includes identifying a security issue affecting a first peer in one or more TCP/UDP sessions, informing a second peer about the security issue using the first peer of the one or more TCP/UDP sessions, and performing at least one action in response to identifying and/or being informed about the security issue.
In yet another general embodiment, a computer program product for providing a secure TCP/UDP session includes a computer readable storage medium having program code embodied therewith, the program code readable/executable by a processor to identify a security issue affecting a first peer in one or more TCP/UDP sessions, inform a second peer about the security issue using the first peer by sending a packet from the first peer to the second peer, the packet including an indication of the security issue in a TCP header of the packet, and perform at least one action to resolve and/or avoid the security issue in response to identifying and/or being informed about the security issue at the first peer and/or the second peer.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention 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 a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, 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), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be 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).
Aspects of the present invention 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. 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 medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
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.
Moreover, a system according to various embodiments may include a processor and logic integrated with and/or executable by the processor, the logic being configured to perform one or more of the process steps recited herein. By integrated with, what is meant is that the processor has logic embedded therewith as hardware logic, such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), etc. By executable by the processor, what is meant is that the logic is hardware logic, software logic such as firmware, operating system, etc., or some combination of hardware and software logic that is accessible by the processor and configured to cause the processor to perform some functionality upon execution by the processor. Software logic may be stored on local and/or remote memory of any memory type, as known in the art. Any processor known in the art may be used, such as a software processor module and/or a hardware processor such as an ASIC, a FPGA, a central processing unit (CPU), an integrated circuit (IC), etc.
In use, the gateway 101 serves as an entrance point from the remote networks 102 to the proximate network 108. As such, the gateway 101 may function as a router, which is capable of directing a given packet of data that arrives at the gateway 101, and a switch, which furnishes the actual path in and out of the gateway 101 for a given packet.
Further included is at least one data server 114 coupled to the proximate network 108, and which is accessible from the remote networks 102 via the gateway 101. It should be noted that the data server(s) 114 may include any type of computing device/groupware. Coupled to each data server 114 is a plurality of user devices 116. Such user devices 116 may include a desktop computer, lap-top computer, hand-held computer, printer or any other type of logic. It should be noted that a user device 111 may also be directly coupled to any of the networks, in one embodiment.
A peripheral 120 or series of peripherals 120, e.g., facsimile machines, printers, networked and/or local storage units or systems, etc., may be coupled to one or more of the networks 104, 106, 108. It should be noted that databases and/or additional components may be utilized with, or integrated into, any type of network element coupled to the networks 104, 106, 108. In the context of the present description, a network element may refer to any component of a network.
According to some approaches, methods and systems described herein may be implemented with and/or on virtual systems and/or systems which emulate one or more other systems, such as a UNIX system which emulates an IBM z/OS environment, a UNIX system which virtually hosts a MICROSOFT WINDOWS environment, a MICROSOFT WINDOWS system which emulates an IBM z/OS environment, etc. This virtualization and/or emulation may be enhanced through the use of VMWARE software, in some embodiments.
In more approaches, one or more networks 104, 106, 108, may represent a cluster of systems commonly referred to as a “cloud.” In cloud computing, shared resources, such as processing power, peripherals, software, data, servers, etc., are provided to any system in the cloud in an on-demand relationship, thereby allowing access and distribution of services across many computing systems. Cloud computing typically involves an Internet connection between the systems operating in the cloud, but other techniques of connecting the systems may also be used.
The workstation shown in
The workstation may have resident thereon an operating system such as the Microsoft Windows® Operating System (OS), a MAC OS, a UNIX OS, etc. It will be appreciated that a preferred embodiment may also be implemented on platforms and operating systems other than those mentioned. A preferred embodiment may be written using JAVA, XML, C, and/or C++ language, or other programming languages, along with an object oriented programming methodology. Object oriented programming (OOP), which has become increasingly used to develop complex applications, may be used.
Referring now to
In order to virtualize network services, other than simply providing a fabric communication path (connectivity) between devices, services may be rendered on packets as they move through the gateway 314 which provides routing and forwarding for packets moving between the non-virtual network(s) 312 and the Virtual Network A 304 and Virtual Network B 306. The one or more virtual networks 304, 306 exist within a physical (real) network infrastructure 302. The network infrastructure 302 may include any components, hardware, software, and/or functionality typically associated with and/or used in a network infrastructure, including, but not limited to, switches, connectors, wires, circuits, cables, servers, hosts, storage media, operating systems, applications, ports, I/O, etc., as would be known by one of skill in the art. This network infrastructure 302 supports at least one non-virtual network 312, which may be a legacy network.
Each virtual network 304, 306 may use any number of virtual machines (VMs) 308, 310. In one embodiment, Virtual Network A 304 includes one or more VMs 308, and Virtual Network B 306 includes one or more VMs 310. As shown in
According to one embodiment, the overlay network 300 may include one or more cell switched domain scalable fabric components (SFCs) interconnected with one or more distributed line cards (DLCs).
By having a “flat switch” architecture, the plurality of VMs may move data across the architecture easily and efficiently. It is very difficult for VMs, generally, to move across Layer-3 (L3) domains, between one subnet to another subnet, internet protocol (IP) subnet to IP subnet, etc. But if it the architecture is similar to a large flat switch, in a very large Layer-2 (L2) domain, then the VMs are aided in their attempt to move data across the architecture.
The system 400 also has several devices outside of the switch cluster 402, such as Host F 416 which is connected to the switch cluster 402 via Router I 408a, Host H 418 which is connected to the switch cluster 402 via Router G 408b, Host E 414 which is connected to the switch cluster 402 via Switch O 404d, etc. Also capable of being connected to the switch cluster 402 is a non-overlay L2 virtual switch 412 that is supported by a physical server 430. This server may also host VMs 420a and 420b, which have their own IP addresses.
Three servers 422a, 422b, 422c are shown hosting a plurality of VMs 428, each server having a virtualization platform or hypervisor (such as Hyper-V, KVM, Virtual Box, VMware Workstation, etc.) which hosts the VMs 428 and a vSwitch 410a, 410b, 410c, respectively. In addition, the hosted VMs 428 on the various servers 422a, 422b, 422c may be included in one or more overlay networks, such as Overlay networks 1 or 2 (424 or 426, respectively). How the VMs 428 are divided amongst the overlay networks is a design consideration that may be chosen upon implementing the system 400 and adjusting according to needs and desires.
The number of various devices (e.g., Router G 408b, server 422a, Host E 414, etc.) connected to the switch cluster 402 are for exemplary purposes only, and not limiting on the number of devices which may be connected to a switch cluster 402.
Each device in the system 400, whether implemented as a physical or a virtual device, and regardless of whether it is implemented in hardware, software, or a combination thereof, is described as having an internet protocol (IP) address. Due to limited space, the routers 408a, 408b do not have their IP addresses or subnet information shown. However, Router I 408a is in Subnet W, and has a router address of W.I, while Router G 408b is in Subnet Z and has a router address of Z.G.
Some of the embodiments and approaches described herein may be used in the context of a SDN system 400 as shown in
Now referring to
The local threat detection module 528 is accessible by the local TCP/UDP layers 520 on the hosts (Host A 504, Host B 506) via interfaces to the local threat detection module 528 to communicate and receive threat level and/or security status information. This security status may be used by these protocols to inform the peers on a per-session basis, and/or for any other purpose determined useful in alleviating threats.
The network 502 may include any number of components used in networking communications, such as routers 508, 510, switches 512, servers, etc. As shown, the network 502 includes two routers, Router C 508 and Router D 510, which are connected to one another via a plurality of switches 512. Router C 508 is also connected to Host A 504, while Router D 510 is connected to Host B 506. Of course, more or less virtual or physical components, virtual or physical devices, applications, virtual or physical appliances, etc., may be included in the network 502 and/or within or external to either of the hosts 504, 506, as would be understood by one of skill in the art upon reading the present descriptions.
In the system 500 shown in
During this exchange of information, the server and/or client (e.g., Host A 504 and/or Host B 506) may be exposed to some type or form of virus, malware, and/or spyware attacks which may attempt to confiscate, steal, appropriate, or otherwise obtain the information being exchanged over the TCP/UDP sessions 514.
TCP/UDP sessions 514 which are exchanging confidential information with a server and/or a client (e.g., Host A 504 and/or Host B 506) which is infected by the virus, malware, and/or spyware attack (or infected by some other session, such as another TCP/UDP session, while the secure TCP/UDP sessions 514 were exchanging information), are completely unaware of a security status of the other server and/or the other client (e.g., Host A 504 is unaware of the security status of Host B 506, and Host B 506 is unaware of the security status of Host A 504).
This is because transport protocols, such as TCP, UDP, etc., are not configured to be aware of a security status (or security level or security warning) that may be issued by any devices in a TCP/UDP session 514 while the TCP/UDP session 514 is in progress. Furthermore, transport protocols are not adaptive and not configured to adjust the information exchange between peers in the TCP/UDP session 514 according to security exposure/levels of peers in the secure TCP/UDP session 514. However, a local TCP/UDP stack 520 of any device is typically able to identify security issues on the device supporting the local TCP/UDP stack 520. This information is typically not available to other devices external to the device supporting the local TCP/UDP stack 520.
Therefore, in order to resolve this limitation of TCP/UDP sessions 514 and security information distribution, it is useful to have a mechanism that is configured to receive the local security status from a local security threat detection program and transmit security information from one host or server to another host or server that are peers in one or more TCP/UDP sessions in progress 514 (e.g., Host A 504 and Host B 506) so that both devices are made aware f the security issue.
As shown in
Referring again to
Also, in one embodiment, Host B 506 may inform the peer device (e.g., Host A 504) that the packet 516 was received indicating the security issue by sending a return packet 526 back to Host A 504 via the network 502. The return packet 526 includes an indication that the security level adjustment has taken place, such as by indicating acknowledgement of the security issue in a TCP header of the return packet 526. In one embodiment, a security acknowledgment flag (SAC flag or bit) may be set in the TCP header of the return packet 526 which is returned/forwarded/sent to Host A 504.
In response to receiving the packet 516 indicating a security issue (e.g., via having the SEC bit flipped), one or more of the applications at Host B 506 may act in any number of ways known in the art, such as by doing nothing in response to a minor security issue or security alert, trying to resolve the security issue, limit exchange of information via the TCP/UDP sessions 514, limit exchange of information with Host A 504, etc.
Now referring to
Referring again to
Now referring to
In addition, in some approaches, the reserve field 612 may include a security (SEC) flag 626 and a security acknowledgement (SAC) flag 628, as described previously. The SEC flag 626 may be used to indicate a security issue with one or more TCP/UDP sessions and/or a security issue at a host or server peer to the device which is destined to receive a packet including the TCP header 600. For example, when the SEC flag 626 is set, it may indicate that one of the ends of the TCP/UDP session has determined that a security compromise or security problems have been identified, such as via security protection software and/or malware detection software, an intrusion prevention system (IPS), an intrusion detection system (IDS), etc., which may be embodied in the local threat detection module 528.
In another embodiment, the SAC flag 628 may be set to acknowledge the receipt of a packet identifying a security problem. By setting this bit, it is intended to signify to a receiving device that a proper corresponding action is being taken to address the security issue on the sending device's side of the TCP/UDP session.
Referring to
In one approach, the TLV values may be used to indicate a severity of a security issue, with higher TLV values indicating a more severe security issue, and lower TLV values indicating a less severe security issue, or vice versa. In some instances, a TLV value below a threshold may be ignored, while TLV values at or above the threshold may indicate a more severe security issue and may be indicated to peers in the one or more TCP/UDP sessions.
In another embodiment, the options field 620 may be used to signify certain aspects of the security issue when the SAC flag 628 is set, such as identifying one or more actions that have been taken in response to the security issue being relayed to a peer device.
In an additional embodiment, a handshake operation, as known in the art, may take place between peers in the one or more TCP/UDP sessions to establish TLV values that may be used, and what each TLV value represents for a level of the security issue. This handshake and setting of usable TLV values may take place for each TCP stack, in one approach.
For an UDP session, according to one embodiment, a unique UDP packet may be sent to peers in a UDP session to indicate a security issue instead of relying on TLV values in a TCP header of a packet. In another embodiment, an indicator may be included at an end of the payload of a UDP packet in order to indicate a security issue, as long as enough space is available in the UDP packet. Of course, other possible methods of informing about a security issue may be used in UDP packets, as would be understood by one of skill in the art upon reading the present descriptions.
As described previously, one or more actions may be taken in response to a security issue being identified on a peer device. One such action may include a TCP reset, where the TCP socket is closed and/or reset. Another action may include a UDP reset, where the UDP socket is closed and/or reset. Another action may include re-authenticating and resetting a secure sockets layer (SSL) virtual private network (VPN) which is being utilized for the TCP/UDP session(s). According to another action, a predetermined amount of time may be waited to determine whether the security issue may be worked out through some other action on the network. After this predetermined amount of time, such as 1 msec, 5 msec, 10 msec, ½ sec, 1 sec, etc., should the security issue not be resolved, some other action may be taken.
Another suitable action may be application specific, as each application may have a set of actions available for use in case of a security issue being encountered, and one of these actions may be taken depending on the severity of the security issue, as would be understood by one of skill in the art upon reading the present descriptions.
In another embodiment, only non-confidential fields of the query may be sent, thereby protecting the confidential information that would normally have been sent. In order for this action to be effective, the non-confidential fields (or conversely the confidential fields) are identified in the secure transmissions, thereby allowing only the non-confidential fields to be transmitted. Of course, this action does not allow for confidential information to be sent, but in some instances, the transmission of the non-confidential fields may be sufficient. In a further embodiment, no credit card numbers, bank account numbers, social security numbers, or any other sensitive account information may be sent.
According to another embodiment, in case a device fails to receive an acknowledgement (such as a SAC flag being set) to its identification of a security issue (such as by using the SEC flag), or a time-out is reached prior to receiving the acknowledgement, the TCP socket may be reset and closed, thereby preventing further security breaches.
In another embodiment, depending on the severity or level of the security issue, an appropriate action may be to do nothing extraordinary, as the security issue may not be indicative of an issue which concerns either peer in the TCP/UDP session(s). Of course, this determination may be made automatically, or may be presented to a user to make the decision. A TLV value below a threshold may be ignored, while TLV values at or above the threshold may indicate a more severe security issue.
Of course, any other suitable actions may be taken as would be known by one of skill in the art.
There are many possible sources of security issues. A non-exhaustive list may include: a local firewall appliance and/or virtual appliance, an IPS appliance (local or remote), an IDS appliance (local or remote), an application registry monitor (local or remote), a Total Security Protection System (e.g., End Point Protection by Symantec, etc.), etc.
Now referring to
Each of the steps of the method 700 may be performed by any suitable component of the operating environment. For example, in one embodiment, the method 700 may be partially or entirely performed by a host, a server, one or more vSwitches hosted by one or more servers, a router, a switch, a switch controller (such as a SDN controller, OpenFlow controller, etc.), a processor, e.g., a CPU, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), etc., one or more network interface cards (NICs), one or more virtual NICs, one or more virtualization platforms, or any other suitable device or component of a network system or cluster.
In operation 702, a security issue affecting a first peer in one or more secure TCP/UDP sessions is identified, using any technique known in the art capable of identifying security issues.
In operation 704, a second peer is informed about the security issue using the first peer. In one embodiment, the first peer may send a packet to the second peer, the packet comprising an indication of the security issue.
In a further embodiment, the packet may include a TCP header, the TCP header comprising a source port, a destination port, and a security flag set to indicate a security issue at the first peer. This may be a simple bit flag which, when flipped from a 0 to a 1, or vice versa, indicates that a security issue has been detected. This security flag being set may cause the second peer to examine other portions of the packet to determine a severity of the security issue, in one approach.
In a further embodiment, the TCP header may also include one or more TLV elements configured to indicate a severity of the security issue. In one approach, the TLV element may be a multi-bit identifier, which has a predefined meaning, such that indicating a certain value with the TLV element may indicate a level of security breach, a type of security issue, or any other useful or usable information concerning the security issue.
In one embodiment, the security flag may be stored within a reserve field of the TCP header. Furthermore, according to one embodiment, the one or more TLV elements may be stored within an options field of the TCP header.
In this way, a TCP stack of a peer which receives the indication of the security issue may respond to the security issue almost immediately, through use of the TCP state machine, to provide an extremely fast response to the security issue, thereby maintaining security of the one or more TCP/UDP sessions.
In operation 706, at least one action is performed in response to identifying and/or being informed about the security issue. This at least one action may be performed at the first peer and/or the second peer to resolve and/or avoid the security issue.
Any action known in the art may be performed, such as resetting and closing any TCP/UDP sockets affected by the security issue, re-authenticating and resetting the one or more TCP/UDP sessions affected by the security issue, waiting for a predetermined amount of time for the security issue to be resolved, adjusting a type of information exchanged across the one or more TCP/UDP sessions, and performing no extraordinary action, etc.
In a further embodiment, method 700 may include establishing the one or more TCP/UDP sessions between a server and a client which are peers on the one or more TCP/UDP sessions.
In another embodiment, method 700 may include informing the first peer that the security issue has been acknowledged by the second peer. Method 700 may include informing the first peer that the security issue has been acknowledged by the second peer by sending a second packet from the second peer to the first peer, the second packet comprising a TCP header having a security acknowledgement flag set therein to indicate that the security issue has been acknowledged by the second peer, according to one embodiment.
In a further embodiment, the security acknowledgement flag may be stored within a reserve field of the TCP header, similar to the security flag described previously.
Also, in one approach, the at least one action may be performed at the second peer to resolve and/or avoid the security issue.
In various other embodiments, some or all operations of method 700 may be implemented in a system with logic, a computer program product using program code, or some other implementation that would be known by one of skill in the art upon reading the present descriptions.
In an exemplary embodiment, a system comprises a processor (e.g., a CPU, an ASIC, a FPGA, etc.) and logic (hardware, software, or a combination thereof) integrated with and/or executable by the processor. The logic may be configured to cause the execution of some or all operations of method 700.
In another exemplary embodiment, a computer program product may comprise a computer readable storage medium having program code embodied therewith, the program code readable/executable by a device (e.g., a computer, a processor, a switch, a router, a processing circuit, etc.) to cause the execution of some or all operations of method 700.
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 of the present invention. 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.
It will be clear that the various features of the foregoing systems and/or methodologies may be combined in any way, creating a plurality of combinations from the descriptions presented above.
It will be further appreciated that embodiments of the present invention may be provided in the form of a service deployed on behalf of a customer to offer service on demand.
While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. Thus, the breadth and scope of a preferred embodiment should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
Number | Date | Country | |
---|---|---|---|
Parent | 14151537 | Jan 2014 | US |
Child | 15414501 | US |