IP Library › Granted Patent US 12,255,820
Granted Patent B2
US 12,255,820 · App. 17/717,712 · Granted Mar 18, 2025

Platform agnostic gateway for efficient data transfer between systems

Inventor: Naga Vamsi Krishna Akkapeddi (Charlotte, NC)
Assignee: Bank of America Corporation
H04L47/12
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,255,820
App. No.
17/717,712
Filed
Apr 11, 2022
Granted
Mar 18, 2025
Kind
B2
Art Unit
2462
USPC
370/401
Abstract

An apparatus includes a memory and a processor. The memory stores information identifying a first set of protocols associated with communication channels available to a first system and a second set of protocols associated with communication channels available to a second system. The processor receives, from the first system, a request to transmit data, and selects, based at least on a size of the data and a load of each communication channel available to the first system, a protocol of the first set of protocols. The processor instructs the first system to transmit the data according to the selected protocol. The processor receives, over the communication channel associated with the selected protocol, the data from the first system. The processor further selects a protocol of the second set of protocols, and transmits, over the communication channel associated with the selected protocol, the data to the second system.

Claims (105)

1. An apparatus comprising:

a memory configured to store:

information identifying a first plurality of protocols supported by a first system, each protocol of the first plurality of protocols is associated with a communication channel of a first set of communication channels available to the first system; and

information identifying a second plurality of protocols supported by a second system, each protocol of the second plurality of protocols is associated with a communication channel of a second set of communication channels available to the second system; and

a hardware processor communicatively coupled to the memory, the first system, and the second system, the hardware processor configured to:

receive, from the first system, a request to transmit a first piece of data; and

in response to receiving the request to transmit the first piece of data:

select, based at least on a size of the first piece of data and a load of each communication channel available to the first system, a first protocol of the first plurality of protocols supported by the first system;

instruct the first system to transmit the first piece of data according to the first protocol of the first plurality of protocols;

receive, over the communication channel associated with the first protocol of the first plurality of protocols, the first piece of data from the first system;

select, based at least on the size of the first piece of data and a load of each communication channel available to the second system, a second protocol of the second plurality of protocols supported by the second system; and

transmit, over the communication channel associated with the second protocol of the second plurality of protocols, the first piece of data to the second system.

2. The apparatus of claim 1 , wherein the first protocol of the first plurality of protocols is different from the second protocol of the second plurality of protocols.

3. The apparatus of claim 1 , wherein:

the memory is further configured to store an identifier assigned to the second system;

the first piece of data received from the first system comprises the identifier assigned to the second system; and

the hardware processor is further configured to determine, based on the presence of the identifier assigned to the second system in the first piece of data, that the first piece of data is destined for the second system.

4. The apparatus of claim 1 , wherein the hardware processor is further configured to:

receive a registration request from a third system; and

in response to receiving the registration request:

receive information identifying a third plurality of protocols, each protocol of the third plurality of protocols associated with a communication channel of a third set of communication channels available to the third system; and

store the information identifying the third plurality of protocols in the memory.

5. The apparatus of claim 1 , wherein:

the first plurality of protocols comprises the first protocol and a third protocol; and

selecting the first protocol of the first plurality of protocols comprises determining that the load of the communication channel associated with the third protocol of the first plurality of protocols is greater than the load of the communication channel associated with the first protocol of the first plurality of protocols.

6. The apparatus of claim 1 , wherein the hardware processor is further configured to:

receive, from the first system, a request to transmit a second piece of data to a third system; and

in response to receiving the request to transmit the second piece of data:

select, based at least on a size of the second piece of data and the load of each communication channel available to the first system, a third protocol of the first plurality of protocols;

instruct the first system to transmit the second piece of data according to the third protocol of the first plurality of protocols;

receive, over the communication channel associated with the third protocol of the first plurality of protocols, the second piece of data from the first system;

determine that the third system is not registered;

in response to determining that the third system is not registered:

transmit a request to the third system for information identifying a third plurality of protocols available to the third system; and

receive the information identifying the third plurality of protocols, each protocol of the third plurality of protocols associated with a communication channel of a third set of communication channels available to the third system;

select, based at least on the size of the second piece of data and a load of each communication channel available to the third system, a fourth protocol of the third plurality of protocols; and

transmit, over the communication channel associated with the fourth protocol of the third plurality of protocols, the second piece of data to the third system.

7. The apparatus of claim 1 , wherein the first set of protocols comprises a protocol associated with at least one of:

file server communications;

web server communications; and

database communications.

8. A method comprising:

receiving, from a first system, a request to transmit a first piece of data to a second system, wherein:

a first set of communication channels are available to the first system, each communication channel of the first set of communication channels associated with a protocol of a first plurality of protocols supported by the first system; and

a second set of communication channels are available to the second system, each communication channel of the second set of communication channels associated with a protocol of a second plurality of protocols supported by the second system; and

in response to receiving the request to transmit the first piece of data:

selecting, based at least on a size of the first piece of data and a load of each communication channel of the first set of communication channels, a first protocol of the first plurality of protocols supported by the first system;

instructing the first system to transmit the first piece of data according to the first protocol of the first plurality of protocols;

receiving, over the communication channel associated with the first protocol of the first plurality of protocols, the first piece of data from the first system;

selecting, based at least on the size of the first piece of data and a load of each communication channel of the second set of communication channels, a second protocol of the second plurality of protocols supported by the second system; and

transmitting, over the communication channel associated with the second protocol of the second plurality of protocols, the first piece of data to the second system.

9. The method of claim 8 , wherein the first protocol of the first plurality of protocols is different from the second protocol of the second plurality of protocols.

10. The method of claim 8 , wherein:

the first piece of data received from the first system comprises an identifier assigned to the second system; and

the method further comprises determining, based on the presence of the identifier assigned to the second system in the first piece of data, that the first piece of data is destined for the second system.

11. The method of claim 8 , further comprising:

receiving a registration request from a third system; and

in response to receiving the registration request:

receiving information identifying a third plurality of protocols, each protocol of the third plurality of protocols associated with a communication channel of a third set of communication channels available to the third system; and

storing the information identifying the third plurality of protocols in a memory.

12. The method of claim 8 , wherein:

the first plurality of protocols comprises the first protocol and a third protocol; and

selecting the first protocol of the first plurality of protocols comprises determining that the load of the communication channel associated with the third protocol of the first plurality of protocols is greater than the load of the communication channel associated with the first protocol of the first plurality of protocols.

13. The method of claim 8 , further comprising:

receiving, from the first system, a request to transmit a second piece of data to a third system; and

in response to receiving the request to transmit the second piece of data:

selecting, based at least on a size of the second piece of data and the load of each communication channel of the first set of communication channels, a third protocol of the first plurality of protocols;

instructing the first system to transmit the second piece of data according to the third protocol of the first plurality of protocols;

receiving, over the communication channel associated with the third protocol of the first plurality of protocols, the second piece of data from the first system;

determining that the third system is not registered;

in response to determining that the third system is not registered:

transmitting a request to the third system for information identifying a third plurality of protocols available to the third system; and

receiving the information identifying the third plurality of protocols, each protocol of the third plurality of protocols associated with a communication channel of a third set of communication channels available to the third system;

selecting, based at least on the size of the second piece of data and a load of each communication channel of the third set of communication channels, a first protocol of the third plurality of protocols; and

transmitting, over the communication channel associated with the fourth protocol of the third plurality of protocols, the second piece of data to the third system.

14. The method of claim 8 , wherein the first plurality of protocols comprises a protocol associated with at least one of:

file server communications;

web server communications; and

database communications.

15. A non-transitory computer-readable medium comprising instructions that, when executed by a hardware processor, cause the processor to:

receive, from a first system, a request to transmit a first piece of data to a second system, wherein:

a first set of communication channels are available to the first system, each communication channel of the first set of communication channels associated with a protocol of a first plurality of protocols supported by the first system; and

a second set of communication channels are available to the second system, each communication channel of the second set of communication channels associated with a protocol of a second plurality of protocols supported by the second system; and

in response to receiving the request to transmit the first piece of data:

select, based at least on a size of the first piece of data and a load of each communication channel of the first set of communication channels, a first protocol of the first plurality of protocols supported by the first system;

instruct the first system to transmit the first piece of data according to the first protocol of the first plurality of protocols supported by the second system;

receive, over the communication channel associated with the first protocol of the first plurality of protocols, the first piece of data from the first system;

select, based at least on the size of the first piece of data and a load of each communication channel of the second set of communication channels, a second protocol of the second plurality of protocols supported by the second system; and

transmit, over the communication channel associated with the second protocol of the second plurality of protocols, the first piece of data to the second system.

16. The non-transitory computer-readable medium of claim 15 , wherein the first protocol of the first plurality of protocols is different from the second protocol of the second plurality of protocols.

17. The non-transitory computer-readable medium of claim 15 , wherein:

the first piece of data received from the first system comprises an identifier assigned to the second system; and

the instructions, when executed by the hardware processor, further cause the processor to determine, based on the presence of the identifier assigned to the second system in the first piece of data, that the first piece of data is destined for the second system.

18. The non-transitory computer-readable medium of claim 15 , wherein the instructions, when executed by the hardware processor, further cause the processor to:

receive a registration request from a third system; and

in response to receiving the registration request:

receive information identifying a third plurality of protocols, each protocol of the third plurality of protocols associated with a communication channel of a third set of communication channels available to the third system; and

store the information identifying the third plurality of protocols in a memory.

19. The non-transitory computer-readable medium of claim 15 , wherein:

the first plurality of protocols comprises the first protocol and a third protocol; and

selecting the first protocol of the first plurality of protocols comprises determining that the load of the communication channel associated with the third protocol of the first plurality of protocols is greater than the load of the communication channel associated with the first protocol of the first plurality of protocols.

20. The non-transitory computer-readable medium of claim 15 , wherein the first plurality of protocols comprises a protocol associated with at least one of:

file server communications;

web server communications; and

database communications.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 11, 2022
From: AKKAPEDDI, NAGA VAMSI KRISHNA
To: BANK OF AMERICA CORPORATION
Reel/Frame 059562/0991 →
Continuity (1)
Related Publication 20230327992A1 · Oct 12, 2023
References Cited (64)
US 7464178B2 · Corrigan et al. · 2008 [cited by applicant]
US 7685304B2 · Kothari · 2010 [cited by examiner]
US 8086702B2 · Baum et al. · 2011 [cited by applicant]
US 8086703B2 · Baum et al. · 2011 [cited by applicant]
US 8122131B2 · Baum et al. · 2012 [cited by applicant]
US 8205240B2 · Ansari et al. · 2012 [cited by applicant]
US 8209400B2 · Baum et al. · 2012 [cited by applicant]
US 8713132B2 · Baum et al. · 2014 [cited by applicant]
US 8819178B2 · Baum et al. · 2014 [cited by applicant]
US 8825871B2 · Baum et al. · 2014 [cited by applicant]
US 8996665B2 · Baum et al. · 2015 [cited by applicant]
US 9047753B2 · Dawes et al. · 2015 [cited by applicant]
US 9059863B2 · Baum et al. · 2015 [cited by applicant]
US 9100285B1 · Choudhury et al. · 2015 [cited by applicant]
US 9172553B2 · Dawes et al. · 2015 [cited by applicant]
US 9306809B2 · Dawes et al. · 2016 [cited by applicant]
US 9519474B2 · Kurian et al. · 2016 [cited by applicant]
US 9529630B1 · Fakhouri et al. · 2016 [cited by applicant]
US 9544340B2 · Ezell · 2017 [cited by applicant]
US 9655197B1 · Coombes et al. · 2017 [cited by applicant]
US 9979595B2 · Choudhury et al. · 2018 [cited by applicant]
US 10051078B2 · Burd et al. · 2018 [cited by applicant]
US 10062245B2 · Fulker et al. · 2018 [cited by applicant]
US 10079839B1 · Bryan et al. · 2018 [cited by applicant]
US 10091014B2 · Dawes et al. · 2018 [cited by applicant]
US 10127801B2 · Raji et al. · 2018 [cited by applicant]
US 10210058B1 · Srinath et al. · 2019 [cited by applicant]
US 10237237B2 · Dawes et al. · 2019 [cited by applicant]
US 10375253B2 · Dawes · 2019 [cited by applicant]
US 10389736B2 · Dawes et al. · 2019 [cited by applicant]
US 10423309B2 · Kitchen et al. · 2019 [cited by applicant]
US 10484512B2 · Pai et al. · 2019 [cited by applicant]
US 10530839B2 · Kitchen et al. · 2020 [cited by applicant]
US 10666523B2 · Dawes et al. · 2020 [cited by applicant]
US 10930136B2 · Baum et al. · 2021 [cited by applicant]
US 10992784B2 · Decenzo et al. · 2021 [cited by applicant]
US 10999254B2 · Baum et al. · 2021 [cited by applicant]
US 11089122B2 · Dawes · 2021 [cited by applicant]
US 11108827B2 · Beckman et al. · 2021 [cited by applicant]
US 11113950B2 · Baum et al. · 2021 [cited by applicant]
US 11146637B2 · Kitchen et al. · 2021 [cited by applicant]
US 20130279334A1 · Xu · 2013 [cited by examiner]
US 20160019763A1 · Raji et al. · 2016 [cited by applicant]
US 20160043951A1 · Srinivas · 2016 [cited by examiner]
US 20160164923A1 · Dawes · 2016 [cited by applicant]
US 20170054594A1 · Decenzo et al. · 2017 [cited by applicant]
US 20170064045A1 · Pai · 2017 [cited by examiner]
US 20170070361A1 · Sundermeyer et al. · 2017 [cited by applicant]
US 20170070563A1 · Sundermeyer et al. · 2017 [cited by applicant]
US 20170118037A1 · Kitchen et al. · 2017 [cited by applicant]
US 20170155545A1 · Baum et al. · 2017 [cited by applicant]
US 20170244573A1 · Baum et al. · 2017 [cited by applicant]
US 20170257257A1 · Dawes et al. · 2017 [cited by applicant]
US 20170310500A1 · Dawes · 2017 [cited by applicant]
US 20170347283A1 · Kodaypak · 2017 [cited by applicant]
US 20180019890A1 · Dawes · 2018 [cited by applicant]
US 20180034942A1 · Jalil · 2018 [cited by examiner]
US 20180083831A1 · Baum et al. · 2018 [cited by applicant]
US 20180198841A1 · Chmielewski et al. · 2018 [cited by applicant]
US 20200068636A1 · Huang · 2020 [cited by examiner]
US 20200160679A9 · Dawes et al. · 2020 [cited by applicant]
US 20200344133A1 · Dawes et al. · 2020 [cited by applicant]
US 20210092131A1 · Decenzo et al. · 2021 [cited by applicant]
EP 3259898B1 · 2020 [cited by applicant]