Sign In to Follow Application
View All Documents & Correspondence

System And Method For Managing Connections Between A Client And A Server

Abstract: ABSTRACT SYSTEM AND METHOD FOR MANAGING CONNECTIONS BETWEEN A CLIENT AND A SERVER The present invention relates to a system (108) and a method (600) for managing connections between a client (102) and a server (104). The method (600) includes steps of establishing a communication between the client (102) and the server (104) by creating multiple connections between the client (102) and the server (104) based on one or more parameters. Further, adding the multiple connections created in a list. Thereafter, detecting whether each of the multiple connections between the client (102) and the server (104) are active or inactive. Furthermore, deleting the said inactive connection from the list. Finally, replacing the deleted inactive connection in real time with a new connection included in the round robin list in order to maintain the multiple connections between the client (102) and the server (104). Ref. Fig. 2

Get Free WhatsApp Updates!
Notices, Deadlines & Correspondence

Patent Information

Application #
Filing Date
05 September 2023
Publication Number
11/2025
Publication Type
INA
Invention Field
COMMUNICATION
Status
Email
Parent Application

Applicants

JIO PLATFORMS LIMITED
Office-101, Saffron, Nr. Centre Point, Panchwati 5 Rasta, Ambawadi, India

Inventors

1. Ravindra Yadav
Reliance Corporate Park, Thane - Belapur Road, Ghansoli, Navi Mumbai, Maharashtra 400701, India
2. Jyothi Durga Prasad Chillapalli
Reliance Corporate Park, Thane - Belapur Road, Ghansoli, Navi Mumbai, Maharashtra 400701, India
3. Aayush Bhatnagar
Reliance Corporate Park, Thane - Belapur Road, Ghansoli, Navi Mumbai, Maharashtra 400701, India
4. Ezaj Ansari
Reliance Corporate Park, Thane - Belapur Road, Ghansoli, Navi Mumbai, Maharashtra 400701, India
5. Sandeep Bisht
Reliance Corporate Park, Thane - Belapur Road, Ghansoli, Navi Mumbai, Maharashtra 400701, India

Specification

DESC:
FORM 2
THE PATENTS ACT, 1970
(39 of 1970)
&
THE PATENTS RULES, 2003

COMPLETE SPECIFICATION
(See section 10 and rule 13)
1. TITLE OF THE INVENTION
SYSTEM AND METHOD FOR MANAGING CONNECTIONS BETWEEN A CLIENT AND A SERVER
2. APPLICANT(S)
NAME NATIONALITY ADDRESS
JIO PLATFORMS LIMITED INDIAN OFFICE-101, SAFFRON, NR. CENTRE POINT, PANCHWATI 5 RASTA, AMBAWADI, AHMEDABAD 380006, GUJARAT, INDIA
3.PREAMBLE TO THE DESCRIPTION

THE FOLLOWING SPECIFICATION PARTICULARLY DESCRIBES THE NATURE OF THIS INVENTION AND THE MANNER IN WHICH IT IS TO BE PERFORMED.

FIELD OF THE INVENTION
[0001] The present invention relates to the field of wireless communication systems, more particularly relates to a method and a system for managing connections between a client and a server.
BACKGROUND OF THE INVENTION
[0002] In general, a network protocol for example the TCP (Transmission Control Protocol) is a protocol for establishing connection between a source and a destination, such as a client and a server, respectively and ensuring secure data transmission therebetween. The client is a computer running a program that requests the service from the server which offers network resources and provides service to the computer (client).
[0003] In some situations, there may be a communication failure between the client and the server. The failure may be due to at least one of, but not limited to, communication channel breakage, fluctuations in network connectivity, blocking of the data in the TCP queues or user level software delay problems in the network.
[0004] In a normal functioning scenario between the client and the server, the client generally transmits a connection request to the server, without having information whether a communication channel has been established between the client and the server is active or degraded. Active may mean that the communication channel between the client and the server is active and in good condition and degraded may mean there is an instance of the communication channel breakage between the client and the server. In the event, the communication channel breakage has occurred between the client and the server, the connection request transmitted by the client to the server may be unsuccessful at that instance of time.
[0005] Further, the client may also detect the failures of the communication channel and may rectify this failure by adding an alternate communication channel which is in good condition. During this time interval, the degraded communication channel may be used by clients without having knowledge of the status of the same for transmitting the connection request to the server. Therefore, during this instance, the connection request may again fail since the degraded communication channel will not transmit the connection request to the server. The process of manually rectifying the failure of the TCP connections is cumbersome and time consuming. This may reduce the efficiency of the client server relationship for any particular application that they may be used for.
[0006] In order to reduce these instances of TCP connections failures that may lead to failures of the connection requests, there is a need for system and method for managing connections between the client and the server and more particularly for anomaly detection and auto heal.
SUMMARY OF THE INVENTION
[0007] One or more embodiments of the present disclosure provides a method and a system for managing connections between a client and a server.
[0008] In one aspect of the present invention, the method for managing the connections between the client and the server is disclosed. The method includes the step of establishing, by one or more processors, a communication between the client and the server by creating multiple connections between the client and the server based on one or more parameters. The method further includes the step of adding, by the one or more processors, the multiple connections created in a list. The method further includes the step of detecting, by the one or more processors, whether each of the multiple connections between the client and the server are active or inactive. Upon detecting at least one of the multiple connections as inactive, the method further includes the step of deleting, by the one or more processors, the said inactive connection from the round robin list. The method further includes the step of replacing, by the one or more processors, the deleted inactive connection in real time with a new connection included in the list in order to maintain the multiple connections between the client and the server.
[0009] In another embodiment, to establish, a communication between the client and the server by creating multiple connections between the client and the server based on one or more parameters, the method comprises the steps of, receiving, by the one or more processors, a connection request from the client. The connection request pertains to establishing the communication between the client and the server. Further, extracting, by the one or more processors, the one or more parameters from the connection request. Thereafter, the method includes the step of determining, by the one or more processors, whether the communication is already established between the client and the server based on the one or more parameters. In response to determining, absence of the communication between the client and the server, creating, by the one or more processors, a handle for the communication establishment between the client and the server and returning the handle to the client to wait for further notification. Furthermore, in response to determining, presence of the communication between the client and the server, returning, by the one or more processors, the prestored handle to the client and creating, by the one or more processors, the multiple connections to establish the communication between the client and the server based on the determination.
[0010] In yet another embodiment, the one or more parameters includes at least one of, a target destination, a relevant protocol, a socket setting and a Hypertext Transfer Protocol (HTTP2) setting.
[0011] In yet another embodiment, to detect whether each of the multiple connections between the client and the server are active or inactive, the method comprises the steps of, transmitting, by the one or more processors, a ping request to each of the multiple connections between the client and the server in order to verify whether each of the multiple connections is active or inactive. Thereafter, the method includes the step of determining, by the one or more processors, that the at least one of the multiple connections is active when an acknowledgement is received from the server within a predefined time period via the said at least one of the multiple connections in response to transmission of the ping request. Similarly, determining, by the one or more processors, that the at least one of the multiple connections is inactive when the acknowledgement is not received from the server within the predefined time period via the said at least one of the multiple connections in response to transmission of the ping request.
[0012] In yet another embodiment, for replacing, the deleted inactive connection in real time with a new connection included in the list in order to maintain the required number of multiple connections between the client and the server, the method comprises the steps of, creating, by the one or more processors, the new connection. Further, adding, by one or more processors, the new connection created in the round robin list. Thereafter, replacing, by the one or more processors, the deleted inactive connection in real time with the new connection.
[0013] In yet another embodiment, the multiple connections between the client and the server is at least one of, a Transmission Control Protocol (TCP).
[0014] In yet another embodiment, the inactive connection is deleted from the list in order to avoid utilization of the inactive connection by the one or more processors for routing requests from the client to the server.
[0015] In yet another embodiment, the list is at least one of, a round robin list..
[0016] In another aspect of the present invention, the system for managing the connections between the client and the server is disclosed. The system includes an establishment unit, configured to, establish, a communication between a client and a server by creating multiple connections between the client and the server based on one or more parameters. The system includes an insertion unit, configured to, add, the multiple connections created in a list. The system further includes a detection unit, configured to, detect, whether each of the multiple connections between the client and the server are active or inactive. The system further includes an elimination unit, configured to, delete, the said inactive connection from the list upon detection at least one of the multiple connections as inactive. The system further includes a replacement unit, configured to, replace, the deleted inactive connection in real time with a new connection included in the list in order to maintain the multiple connections between the client and the server.
[0017] In yet another aspect of the present invention, a non-transitory computer-readable medium having stored thereon computer-readable instructions that, when executed by a processor. The processor is configured to establish, a communication between the client and the server by creating multiple connections between the client and the server based on one or more parameters. The processor is further configured to add, the multiple connections created in a list. The processor is further configured to detect, whether each of the multiple connections between the client and the server are active or inactive. Upon detecting at least one of the multiple connections as inactive, the processor is further configured to delete, the said inactive connection from the list. The processor is further configured to, replace, the deleted inactive connection in real time with a new connection included in the list in order to maintain the multiple connections between the client and the server.
[0018] In another aspect of the present invention, a User Equipment (UE) is disclosed. One or more primary processors is communicatively coupled to one or more processors. The one or more primary processors is further coupled with a memory. The memory stores instructions which when executed by the one or more primary processors causes the UE to transmit a connection request from the client to the one or more processors to establish the communication between the client and the server.
[0019] Other features and aspects of this invention will be apparent from the following description and the accompanying drawings. The features and advantages described in this summary and in the following detailed description are not all-inclusive, and particularly, many additional features and advantages will be apparent to one of ordinary skill in the relevant art, in view of the drawings, specification, and claims hereof. Moreover, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes and may not have been selected to delineate or circumscribe the inventive subject matter, resort to the claims being necessary to determine such inventive subject matter.
BRIEF DESCRIPTION OF THE DRAWINGS
[0020] The accompanying drawings, which are incorporated herein, and constitute a part of this disclosure, illustrate exemplary embodiments of the disclosed methods and systems in which like reference numerals refer to the same parts throughout the different drawings. Components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present disclosure. Some drawings may indicate the components using block diagrams and may not represent the internal circuitry of each component. It will be appreciated by those skilled in the art that disclosure of such drawings includes disclosure of electrical components, electronic components or circuitry commonly used to implement such components.
[0021] FIG. 1 is an exemplary block diagram of an environment for managing connections between a client and a server, according to one or more embodiments of the present invention;
[0022] FIG. 2 is an exemplary block diagram of a system for managing the connections between the client and the server, according to one or more embodiments of the present invention;
[0023] FIG. 3 is an exemplary architecture of the system of FIG. 2, according to one or more embodiments of the present invention;
[0024] FIG. 4 is an exemplary architecture for managing the connections between the client and the server, according to one or more embodiments of the present disclosure;
[0025] FIG. 5 is an exemplary signal flow diagram illustrating the flow for managing the connections between the client and the server, according to one or more embodiments of the present disclosure; and
[0026] FIG. 6 is a flow diagram of a method for managing the connections between the client and the server, according to one or more embodiments of the present invention.
[0027] The foregoing shall be more apparent from the following detailed description of the invention.
DETAILED DESCRIPTION OF THE INVENTION
[0028] Some embodiments of the present disclosure, illustrating all its features, will now be discussed in detail. It must also be noted that as used herein and in the appended claims, the singular forms "a", "an" and "the" include plural references unless the context clearly dictates otherwise.
[0029] Various modifications to the embodiment will be readily apparent to those skilled in the art and the generic principles herein may be applied to other embodiments. However, one of ordinary skill in the art will readily recognize that the present disclosure including the definitions listed here below are not intended to be limited to the embodiments illustrated but is to be accorded the widest scope consistent with the principles and features described herein.
[0030] A person of ordinary skill in the art will readily ascertain that the illustrated steps detailed in the figures and here below are set out to explain the exemplary embodiments shown, and it should be anticipated that ongoing technological development will change the manner in which particular functions are performed. These examples are presented herein for purposes of illustration, and not limitation. Further, the boundaries of the functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternative boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed. Alternatives (including equivalents, extensions, variations, deviations, etc., of those described herein) will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein. Such alternatives fall within the scope and spirit of the disclosed embodiments.
[0031] Various embodiments of the present invention provide a system and a method for managing connections between a client and a server and more particularly for an anomaly detection and an auto healing of the connections between the client and the server. The disclosed system and method aim at enhancing efficiency of the client and the server relationship by ensuring that the connections therebetween is optimally managed in real time by anomaly detection of any connection failure and auto healing of the same. In other words, the present invention provides a unique approach of identifying degraded connections and replacing this degraded connection in real time with alternate connections. Due to this application of alternative unique approach by the system ensures seamless use of the new connections and transfer the connection request successfully from the clients to the servers.
[0032] Referring to FIG. 1, FIG. 1 illustrates an exemplary block diagram of an environment 100 for managing connections between a client 102 and a server 104, according to one or more embodiments of the present invention. The environment 100 includes a User Equipment (UE) 102, the server 104, a network 106, and a system 108. In an embodiment, the client is the UE 102 which interacts with the system 108. However, it is to be noted that the UE 102 will hereinafter be referred to as client 102 as per the requirement and without deviating from the scope of the present disclosure
[0033] For the purpose of description and explanation, the description will be explained with respect to one or more user equipment’s (UEs) 102, or to be more specific will be explained with respect to a first UE 102a, a second UE 102b, and a third UE 102c, and should nowhere be construed as limiting the scope of the present disclosure. Each of the at least one UE 102 namely the first UE 102a, the second UE 102b, and the third UE 102c is configured to connect to the server 104 via the network 106.
[0034] In an embodiment, each of the first UE 102a, the second UE 102b, and the third UE 102c is one of, but not limited to, any electrical, electronic, electro-mechanical or an equipment and a combination of one or more of the above devices such as smartphones, Virtual Reality (VR) devices, Augmented Reality (AR) devices, laptop, a general-purpose computer, desktop, personal digital assistant, tablet computer, mainframe computer, or any other computing device.
[0035] The network 106 includes, by way of example but not limitation, one or more of a wireless network, a wired network, an internet, an intranet, a public network, a private network, a packet-switched network, a circuit-switched network, an ad hoc network, an infrastructure network, a Public-Switched Telephone Network (PSTN), a cable network, a cellular network, a satellite network, a fiber optic network, or some combination thereof. The network 106 may include, but is not limited to, a Third Generation (3G), a Fourth Generation (4G), a Fifth Generation (5G), a Sixth Generation (6G), a New Radio (NR), a Narrow Band Internet of Things (NB-IoT), an Open Radio Access Network (O-RAN), and the like.
[0036] The network 106 may also include, by way of example but not limitation, at least a portion of one or more networks having one or more nodes that transmit, receive, forward, generate, buffer, store, route, switch, process, or a combination thereof, etc. one or more messages, packets, signals, waves, voltage or current levels, some combination thereof, or so forth.
[0037] The environment 100 includes the server 104 accessible via the network 106. The server 104 may include by way of example but not limitation, one or more of a standalone server, a server blade, a server rack, a bank of servers, a server farm, hardware supporting a part of a cloud service or system, a home server, hardware running a virtualized server, a processor executing code to function as a server, one or more machines performing server-side functionality as described herein, at least a portion of any of the above, some combination thereof. In an embodiment, the entity may include, but is not limited to, a vendor, a network operator, a company, an organization, a university, a lab facility, a business enterprise side, a defense facility side, or any other facility that provides service.
[0038] In one embodiment, the connections between the client 102 and the server 104 is at least one of, but not limited to, a Transmission Control Protocol (TCP) connection. The TCP is a protocol for establishing connection between a source and a destination, such as the client 102 and the server 104 which ensures secure data transmission therebetween. In other words, the connections are the medium through which the communication between the client 102 and the server 104 takes places. In one embodiment, the connections are designed to send packets across an internet and ensure the successful delivery of data and messages over the network 106.
[0039] The environment 100 further includes the system 108 communicably coupled to the server 104, and the UE/client 102 via the network 106. The system 108 is adapted to be embedded within the server 104 or is embedded as the individual entity.
[0040] Operational and construction features of the system 108 will be explained in detail with respect to the following figures.
[0041] FIG. 2 is an exemplary block diagram of the system 108 for managing connections between the client 102 and the server 104, according to one or more embodiments of the present invention.
[0042] As per the illustrated and preferred embodiment, the system 108 for managing the connections between the client 102 and the server 104, includes one or more processors 202, a memory 204, and a storage unit 206. The one or more processors 202, hereinafter referred to as the processor 202, may be implemented as one or more microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units, state machines, logic circuitries, single board computers, and/or any devices that manipulate signals based on operational instructions. However, it is to be noted that the system 108 may include multiple processors as per the requirement and without deviating from the scope of the present disclosure. Among other capabilities, the processor 202 is configured to fetch and execute computer-readable instructions stored in the memory 204.
[0043] As per the illustrated embodiment, the processor 202 is configured to fetch and execute computer-readable instructions stored in the memory 204 as the memory 204 is communicably connected to the processor 202. The memory 204 is configured to store one or more computer-readable instructions or routines in a non-transitory computer-readable storage medium, which may be fetched and executed to manage connections between the client 102 and the server 104. The memory 204 may include any non-transitory storage device including, for example, volatile memory such as RAM, or non-volatile memory such as disk memory, EPROMs, FLASH memory, unalterable memory, and the like.
[0044] As per the illustrated embodiment, the storage unit 206 is configured to store data associated with the multiple connections. The storage unit 206 is one of, but not limited to, the Unified Inventory Management (UIM) unit, a centralized database, a cloud-based database, a commercial database, an open-source database, a distributed database, an end-user database, a graphical database, a No-Structured Query Language (NoSQL) database, an object-oriented database, a personal database, an in-memory database, a document-based database, a time series database, a wide column database, a key value database, a search database, a cache databases, and so forth. The foregoing examples of storage unit 206 types are non-limiting and may not be mutually exclusive e.g., the database can be both commercial and cloud-based, or both relational and open-source, etc.
[0045] As per the illustrated embodiment, the system 108 includes the processor 202 to manage connections between the client 102 and the server 104. The processor 202 includes an establishment unit 208, an insertion unit 210, a detection unit 212, an elimination unit 214 and a replacement unit 216. The processor 202 is communicably coupled to the one or more components of the system 108 such as the storage unit 206, and the memory 204. In an embodiment, operations and functionalities of the establishment unit 208, the insertion unit 210, the detection unit 212, the elimination unit 214, the replacement unit 216, and the one or more components of the system 108 can be used in combination or interchangeably.
[0046] In an embodiment, the establishment unit 208 of the processor 202 is configured to establish a communication between the client 102 and the server 104 by creating multiple connections between the client 102 and the server 104 based on one or more parameters. In one embodiment, the multiple connections between the client 102 and the server 104 is at least one of, but not limited to, a Transmission Control Protocol (TCP) connection. The client 102 will always establish the connection with the server 104 and never the other way around. In one embodiment, initially the establishment unit 208 receives a connection request from the client 102. Herein, the connection request corresponds to a request for establishing the communication between the client 102 and the server 104.
[0047] Further, the establishment unit 208 extracts the one or more parameters from the received connection request. In an embodiment, the one or more parameters includes at least one of, but not limited to, a target destination, a relevant protocol, a socket setting and a Hypertext Transfer Protocol (HTTP2) setting. The target destination is an exact location of a target resource where the connection request is routed. For example, the connection request transmitted by the client 102 includes the at least one of, an Internet Protocol (IP) address and a port address which acts as a location of the server 104 in order to establish the communication between the client 102 and the server 104. In one embodiment, the IP address is the unique identifying number assigned to every network element connected to the internet such as the server 104. In one embodiment, the port address or port number is a number assigned to uniquely identify a connection endpoint and to direct request/data to a network element such as the server 104.
[0048] In one embodiment, the protocols are a set of rules that are responsible for the communication between various network elements in the network 106. In other words, the protocols serve as a common language for the various network elements to enable communication therebetween. For example, the connection request transmitted by the client 102, includes the protocol to be used for the transmission of the connection request to the server 104. In one embodiment, the socket is one endpoint of a two way communication link between two programs running on the network 106. For example, the socket setting is a way of various network elements such as the client 102 and the server 104 on the network 106 to communicate with each other. The socket settings are required when the clients 102 application software communicates with the server 104 via the socket. In one embodiment, HTTP2 setting are the parameters that are exchanged between the various network elements such as the client 102 and the server 104 for establishing communication therebetween. For example, the HTTP2-settings header is used to proactively supply the server 104 with HTTP/2-specific parameters during an HTTP Upgrade request.
[0049] Thereafter, based on the extracted one or more parameters, the establishment unit 208 determines whether the communication is already established between the client 102 and the server 104. If the establishment unit 208 determines presence of the communication between the client 102 and the server 104, then the establishment unit 208 returns a prestored handler to the client 102. For example, in the event, the communication already exists between the client 102 and the server 104, then the client 102 may transmit the connection request to the server 104 by creating a first establishment task and the establishment unit 208 returns the prestored handler to the client 102. In an embodiment, the prestored handler is configured to route the connection request to the appropriate destination, herein from the client 102 to the server 104.
[0050] In one embodiment, the handler handles the communication between the client 102 and the server 104. The handler ensures delivery of requests/data from the client 102 to the server 104 or vice versa and informs the client 102 in the case of successful delivery of the requests/data to the server 104.
[0051] In an embodiment, the first establishment task is a task to establish the TCP connection between the client 102 and the server 104 The establishment unit 208 runs the first establishment task between the client 102 and the server 104 and notifies the client 102 once the first establishment task is completed.
[0052] If the establishment unit 208 determines absence of the communication between the client 102 and the server 104, then the establishment unit 208 creates a handler for the communication establishment between the client 102 and the server 104. In one embodiment, the created handler is stored in the storage unit 206. In other words, the handler information is stored in the storage unit 206. Further, the establishment unit 208 returns the created handler to the client 102 and indicates the client 102 to wait for further notification. For example, in the event, the communication between the client 102 and the server 104 does not exist, the establishment unit 208 creates the handler for establishing the multiple connections between the server 104 and the client 102. Further, the establishment unit 208 also by means of the handler, indicates to the client 102 to wait for further notification. The notification pertains to waiting for a second establishment task.
[0053] Furthermore, based on the determination, the establishment unit 208 creates the multiple connections to establish the communication between the client 102 and the server 104. For example, when the first establishment task is not able to create the required number of multiple connections then by means of the handler, the establishment unit 208 indicates to the client 102 to wait for the second establishment task which creates the required number of multiple connections according to settings and preferences provided and notified by the client 102. In an embodiment, the second establishment task is a task to establish the communication between the client 102 and the server 104, since the connection does not exist between the client 102 and the server 104.
[0054] In one embodiment, the client 102 is notified whether the second establishment task is successful or unsuccessful. In particular, when the multiple connections are created by establishment unit 208, then the second establishment task is inferred as successful. Similarly, when the multiple connections are not created by establishment unit 208, then the second establishment task is inferred as unsuccessful. In one embodiment, if the second establishment task is unsuccessful, then again, the second establishment task is performed by the establishment unit 208 until the required number of multiple connections are created.
[0055] Upon successfully creating the multiple connections, the insertion unit 210 of the processor 202 is configured to add the created multiple connections in a list. In one embodiment, the list is at least one of, but not limited to a round robin list. Hereinafter, the list will be referred as the round robin list. The round robin list is a collection of the multiple connections in which the multiple connections are utilized in a rotating manner for each new connection request received at the establishment unit 208. Due to the approach of utilizing the multiple connection in the rotating manner, load pertaining to the new connection request among the multiple connections are balanced.
[0056] Upon adding the created multiple connections in the round robin list, the detection unit 212 of the processor 202 is configured to detect whether each of the multiple connections between the client 102 and the server 104 are active or inactive. In other words, detection unit 212 of the processor 202 is configured to check health of the multiple connections between the client 102 and the server 104. In order to check health of the multiple connections or to verify whether each of the multiple connections is active or inactive, the detection unit 212 transmits a ping request to each of the multiple connections between the client 102 and the server 104.
[0057] Further, when an acknowledgement is received from the server 104 within a predefined time period via the at least one of the multiple connections in response to transmission of the ping request, the detection unit 212 determines that the said at least one of the multiple connections is active. In one embodiment, the predefined time period is defined by at least one of, the client 102 and the processor 202 based on historical data pertaining to the multiple connections. For example, when a server’s 104 response is received at the detection unit 212 via the multiple connections within or at predefined time period, then the multiple connections are inferred as the active connections.
[0058] Similarly, when an acknowledgement is not received from the server 104 within the predefined time period via the said at least one of the multiple connections in response to transmission of the ping request, the detection unit 212 determines that the at least one of the multiple connections is inactive. For example, when a server’s 104 response is not received at the detection unit 212 via the multiple connections within or at predefined time period, then the multiple connections are inferred as the inactive connections. In one embodiment, the detection unit 212 infers inactive connections as an anomaly.
[0059] Upon detecting at least one of the multiple connections as inactive, the elimination unit 214 of the processor 202 is configured to delete the said inactive connection from the round robin list. In one embodiment, the inactive connection is deleted from the round robin list in order to avoid utilization of the inactive connection by the establishment unit 208 for routing connection requests from the client 102 to the server 104. Further, the deleted said inactive connection is labelled as closed connection and the data pertaining to the of the same is recorded and stored in the storage unit 206.
[0060] Upon deleting the said inactive connection from the round robin list, the replacement unit 216 of the processor 202 is configured to replace the deleted inactive connection in real time with a new connection included in the round robin list. In particular, if the round robin list includes the new connection, then the replacement unit 216 replaces the deleted inactive connection with the new connection. In an alternate embodiment, if the round robin list does not include the new connection, then the establishment unit 208 creates the new connection and the insertion unit 210 adds the created new connection in the round robin list. Thereafter, the replacement unit 216 replaces the deleted inactive connection in real time with the new connection added in in the round robin list in order to maintain the required number of multiple connections between the client 102 and the server 104.
[0061] The establishment unit 208, the insertion unit 210, the detection unit 212, the elimination unit 214, and the replacement unit 216, in an exemplary embodiment, are implemented as a combination of hardware and programming (for example, programmable instructions) to implement one or more functionalities of the processor 202. In the examples described herein, such combinations of hardware and programming may be implemented in several different ways. For example, the programming for the processor 202 may be processor-executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the processor may comprise a processing resource (for example, one or more processors), to execute such instructions. In the present examples, the memory 204 may store instructions that, when executed by the processing resource, implement the processor 202. In such examples, the system 108 may comprise the memory 204 storing the instructions and the processing resource to execute the instructions, or the memory 204 may be separate but accessible to the system 108 and the processing resource. In other examples, the processor 202 may be implemented by electronic circuitry.
[0062] FIG. 3 illustrates an exemplary architecture for the system 108, according to one or more embodiments of the present invention. More specifically, FIG. 3 illustrates the system 108 for managing connections between the client 102 and the server 104. It is to be noted that the embodiment with respect to FIG. 3 will be explained with respect to the client 102 for the purpose of description and illustration and should nowhere be construed as limited to the scope of the present disclosure.
[0063] FIG. 3 shows communication between the client 102, and the system 108. For the purpose of description of the exemplary embodiment as illustrated in FIG. 3, the client 102, uses network protocol connection to communicate with the system 108. In an embodiment, the network protocol connection is the establishment and management of communication between the client 102, and the system 108 over the network 106 (as shown in FIG. 1) using a specific protocol or set of protocols. The network protocol connection includes, but not limited to, Session Initiation Protocol (SIP), System Information Block (SIB) protocol, Transmission Control Protocol (TCP), User Datagram Protocol (UDP), File Transfer Protocol (FTP), Hypertext Transfer Protocol (HTTP), Simple Network Management Protocol (SNMP), Internet Control Message Protocol (ICMP), Hypertext Transfer Protocol Secure (HTTPS) and Terminal Network (TELNET).
[0064] In an embodiment, the client 102 includes a primary processor 302, and a memory 304 and a User Interface (UI) 306. In alternate embodiments, the client 102 may include more than one primary processor 302 as per the requirement of the network 106. The primary processor 302, may be implemented as one or more microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units, state machines, logic circuitries, single board computers, and/or any devices that manipulate signals based on operational instructions.
[0065] In an embodiment, the primary processor 302 is configured to fetch and execute computer-readable instructions stored in the memory 304. The memory 304 may be configured to store one or more computer-readable instructions or routines in a non-transitory computer-readable storage medium, which may be fetched and executed to manage connections between the client 102 and the server 104. The memory 304 may include any non-transitory storage device including, for example, volatile memory such as RAM, or non-volatile memory such as disk memory, EPROMs, FLASH memory, unalterable memory, and the like.
[0066] In an embodiment, the User Interface (UI) 306 includes a variety of interfaces, for example, a graphical user interface, a web user interface, a Command Line Interface (CLI), and the like. The User Interface (UI) 306 allows the client 102 to transmit the connection request to the system 108 for establishing the communication between the client 102 and the server 104. In one embodiment, the client 102 may be at least one of, but not limited to, one or more components included in the network 106. In one embodiment, the client 102 is operated by at least one of, but not limited to, a network operator.
[0067] For example, based on the connection request, the system 108 establishes the communication between the client 102 and the server 104 by creating multiple connections between the client 102 and the server 104. Let us assume the multiple connections which are created by the system 108 are TCP connections. Further, the system 108 constantly/periodically checks for a status of multiple TCP connections which were created between the client 102 and the server 104. In the event, the system 108 detects that the at least one of, the TCP connection between the client 102 and the server 104 is degraded, due to which the communication between the client 102 and the server 104 is affected as the degraded TCP connection leads to reduction in the number of the connections as per the requirements between the client 102 and the server 104. Thereafter, the system 108 auto heals a situation of the degraded TCP connection by creating a new TCP connection and replacing the degraded TCP connection with the new connection TCP in real time in order to maintain the multiple connections between client 102 and the server 104.
[0068] As mentioned earlier in FIG.2, the system 108 includes the processors 202, the memory 204, and the storage unit 206, for managing connections between the client 102 and the server 104, which are already explained in FIG. 2. For the sake of brevity, a similar description related to the working and operation of the system 108 as illustrated in FIG. 2 has been omitted to avoid repetition.
[0069] Further, as mentioned earlier the processor 202 includes the establishment unit 208, the insertion unit 210, the detection unit 212, the elimination unit 214, and the replacement unit 216, which are already explained in FIG. 2. Hence, for the sake of brevity, a similar description related to the working and operation of the system 108 as illustrated in FIG. 2 has been omitted to avoid repetition. The limited description provided for the system 108 in FIG. 3, should be read with the description provided for the system 108 in the FIG. 2 above, and should not be construed as limiting the scope of the present disclosure.
[0070] FIG. 4 is an exemplary architecture 400 of the system 108 for managing the connections between the client 102 and the server 104, according to one or more embodiments of the present disclosure.
[0071] As per the illustrated embodiment, the system 108 architecture 400 includes a Virtual Machine (VM) 402. The VM enables the UE 102 to run programs written in Java as well as programs written in other languages that are compiled to bytecode. In the illustrated embodiment, the VM 402 is the environment in which an application 404 and a protocol stack 406 is executed.
[0072] In one embodiment, the application 404 is at least one of, but not limited to, a java application which utilizes the protocol stack 406 to communicate between the client 102 and the server 104 via the one or more protocols. The application 404 includes, at least one of, but not limited to, desktop applications, web applications, mobile applications, and enterprise applications.
[0073] In an embodiment of the present invention, the protocol stack 406 is a library based on one or more programming languages which interacts within the network 106 to communicate between the client 102 and the server 104 via one or more network protocol connections.
[0074] In an embodiment, the one or more network protocol connections is the establishment and management of communication between two or more client 102 over the network 106 using a specific protocol or set of protocols. The one or more network protocol connection includes, but not limited to, Transmission Control Protocol (TCP), User Datagram Protocol (UDP), File Transfer Protocol (FTP), Hypertext Transfer Protocol (HTTP), Simple Network Management Protocol (SNMP), Internet Control Message Protocol (ICMP), Hypertext Transfer Protocol Secure (HTTPS) and Terminal Network (TELNET).
[0075] The protocol stack 406 provides abstracted APIs (Application Programming Interface) for developers to build an application around it with inbuilt features like connection management, log management, transport HTTP2 messages, overload protection, rate limit protection, etc. Further, the protocol stack 406 has the capability to create multiple connections and replace the existing connections with the new connections. The protocol stack 406 also keeps track of the number of the connections required for a particular environment including multiple clients 102 and servers 104.
[0076] Further, the system 108 architecture 400 includes a network layer 408. The network layer 408 is capable of transmitting network packets from the client 102 to the server 104. In particular, the network packets are the data or requests transmitted via the network 106 from the client 102 to the server 104. The request includes, at least one of, but not limited to, data, service, Hypertext Transfer Protocol (HTTP) requests.
[0077] FIG. 5 is a signal flow diagram illustrating the flow for managing the connections between the client 102 and the server 104, according to one or more embodiments of the present disclosure.
[0078] At step 502, the client 102 transmits the connection request to the system 108 in order to establish the communication between the client 102 and the server 104. In an embodiment, the connection request includes at least one of, but not limited to, the target destination, and the relevant protocol. For example, the connection request includes the at least one of, an Internet Protocol (IP) address which acts as a location of the server 104 in order to establish the communication between the client 102 and the server 104.
[0079] At step 504, the system 108 establishes the communication between the client 102 and the server 104 by creating at least two or more connections based on the connection request. For example, the TCP connection establishment process involves a series of steps, often referred to as a "three-way handshake," process where the client 102 and the server 104 establishes a secure and synchronized connection before initiating the actual data transfer. In particular, the client 102 initiates the connection request by sending a TCP packet with the synchronize (SYN) flag set to the server 104. The TCP packet indicates that the client’s 102 desire to establish the connection. Upon receiving the TCP packet, the server 104 responds with a TCP packet that has both the SYN and acknowledge (ACK) flags set. The TCP packet acknowledges the client’s 102 request and signals the server’s 104 readiness to establish the connection. Finally, the client 102 sends an acknowledgment (ACK) packet to the server 104. The ACK packet acknowledges the server’s 104 readiness, and the connection is now established.
[0080] At step 506, the multiple connections created by the system 108 are added in the round robin list which is stored in the storage unit 206. These multiple connections are utilized in the rotating manner for each new request received at the system 108 from the client 102. In particular, a Connection Identifier (CID) is a unique identifier which is assigned to the multiple connection created between the client 102 and the server 104 in the network 106. The purpose of the CID is to distinguish one connection from another and allow the client 102 and the server 104 to communicate effectively.
[0081] At step 508, the system 108 detects active or inactive connections among the multiple connections between the client 102 and the server 104 by transmitting the ping request. Based on the response to the transmission of the ping request the system 108 detects whether the at least one of the multiple connections is active or inactive. For example, the ping works by sending an Internet Control Message Protocol (ICMP) echo request from the client 102 to a specified address of the server 104 via the multiple connections and waits for a reply. When the server 104 receives the ICMP echo request, the server 104 responds by sending an echo reply packet to the client 102. In one scenario, if the echo reply packet transmitted from server 104 is not received by the client 102 then the at least one of the multiple connections is considered as inactive. Similarly, if the echo reply packet transmitted from server 104 is received by the client 102 then the at least one of the multiple connections is considered as active.
[0082] At step 510, the system 108 deletes the inactive connections from the round robin list subsequent to detecting the at least one of the multiple connections is inactive. In particular, the system 108 deletes the inactive connections from the round robin list based on the CID assigned to the multiple connections.
[0083] At step 512, the system 108 replaces the deleted inactive connection in real time with the new connection list in order to maintain the multiple connections between the client 102 and the server 104. In particular, initially the system 108 deletes the inactive connection and transmits a TCP reset (RST) signal to the server 104 to close connection between the client 102 and server 104. Further, the system 108 informs the client 102 to user another connection for communication with the server 104 which is established therebetween by performing the three-way handshake process.
[0084] FIG. 6 is a flow diagram of a method 600 for managing connections between the client 102 and the server 104, according to one or more embodiments of the present invention. For the purpose of description, the method 600 is described with the embodiments as illustrated in FIG. 2 and should nowhere be construed as limiting the scope of the present disclosure.
[0085] At step 602, the method 600 includes the step of establishing, the communication between the client 102 and the server 104 by creating multiple connections between the client 102 and the server 104 based on one or more parameters. In one embodiment, the establishment unit 208 establishes communication between the client 102 and the server 104 by creating required number of multiple connections between the client 102 and the server 104 based on the one or more parameters extracted from the connection request received from the client 102. For example, if the connection between the client 102 and the server 104 is not available, then the establishment unit 208 creates the multiple connections to establish the communication between the client 102 and the server 104.
[0086] At step 604, the method 600 includes the step adding, the multiple connections created in the round robin list. In one embodiment, the insertion unit 210 adds the multiple connections created in the round robin list. In particular, the round robin list is stored in the storage unit 206. The round robin list includes the multiple connections which are created and utilized in the rotating manner for each new request received at the establishment unit 208 in order to balance load pertaining to new requests among the multiple connections. For example, let us assume 3 new connections are created by the establishment unit 208 such as connection 1, connection 2, and connection 3. Based on the incoming request such as a request 1, request 2 and request N, the newly created connections are utilized in rotating manner such as connection 1 for request 1, connection 2 for request 2, connection 3 for request 3 and connection 1 for request 4 and so on.
[0087] At step 606, the method 600 includes the step of detecting whether each of the multiple connections between the client 102 and the server 104 are active or inactive. In one embodiment, the detection unit 212 detecting whether each of the multiple connections between the client 102 and the server 104 are active or inactive. The detection unit 212 transmits the ping request to the server 104 via each of the multiple connections to detect whether the multiple connections between the client 102 and the server 104 are active or inactive.
[0088] For example, in the event, the server responds to the ping request within or at predefined time period such as 1 millisecond via the each of the multiple connections, then the detection unit 212 infers the each of the multiple connections as the active connection and may be utilized for the communication between the client 102 and the server 104. Alternatively, in the event, the server does not respond to the ping request within or at predefined time period such as 1 millisecond via the each of the multiple connections, then the detection unit 212 infers the each of the multiple connections as the inactive connection and will be not utilized for the communication between the client 102 and the server 104.
[0089] At step 608, the method 600 includes the step of deleting, the said inactive connection from the round robin list upon detecting at least one of the multiple connections as inactive. In one embodiment, the elimination unit 214 deletes the said inactive connection from the round robin list. In particular, the inactive connection is deleted from the round robin list by the elimination unit 214 in order to avoid utilization of the inactive connection by the establishment unit 208 for routing connection requests from the client 102 to the server 104.
[0090] At step 610, the method 600 includes the step of replacing the deleted inactive connection in real time with the new connection included in the round robin list in order to maintain the required number of multiple connections between the client 102 and the server 104. In particular, the replacement unit 216 replaces the deleted inactive connection in real time with the new connection included in the round robin list. For example, let us assume, connection 8 and connection 9 among the 10 connections between the client 102 and the server 104 are deleted inactive connection, then the replacement unit 216 communicates with the establishment unit 208 to create two new connections in order to maintain the 10 connections between the client 102 and the server 104. Further, the two new connections are added in the round robin list. Thereafter the replacement unit 216 automatically replaces the connection 8 and the connection 9 with the two new connections in real time. Advantageously, even in the case of inactive connections, the system 108 ensures seamless and non-interruptive communication between the client 102 and the server 104 by replacing the inactive connection with the new connection.
[0091] The present invention further discloses a non-transitory computer-readable medium having stored thereon computer-readable instructions. The computer-readable instructions are executed by the processor 202. The processor 202 is configured to establish, a communication between the client 102 and the server 104 by creating multiple connections between the client 102 and the server 104 based on one or more parameters. The processor 202 is further configured to add, the multiple connections created in a list. The processor 202 is further configured to detect, whether each of the multiple connections between the client 102 and the server 104 are active or inactive. Upon detecting at least one of the multiple connections as inactive, the processor 202 is further configured to delete, the said inactive connection from the list. The processor 202 is further configured to replace, the deleted inactive connection in real time with a new connection included in the round robin list in order to maintain the multiple connections between the client 102 and the server 104.
[0092] A person of ordinary skill in the art will readily ascertain that the illustrated embodiments and steps in description and drawings (FIG.1-6) are set out to explain the exemplary embodiments shown, and it should be anticipated that ongoing technological development will change the manner in which particular functions are performed. These examples are presented herein for purposes of illustration, and not limitation. Further, the boundaries of the functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternative boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed. Alternatives (including equivalents, extensions, variations, deviations, etc., of those described herein) will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein. Such alternatives fall within the scope and spirit of the disclosed embodiments.
[0093] The present disclosure provides technical advancements by continuously checking the connection integrity to avoid request failures which improves user experience and Key Performance Indicators (KPIs). Even in the case of fluctuations or the degraded connections, the system ensures seamless and non-interruptive communication with the server. The system manages the connection creation on behalf of the application so the application can focus on developing core functionality. The system creates connections based on real time available parameters like, target destination, protocol, settings, etc. The system creates an exact number of connections as required by the application. In case of failure in creating connections, the system provides notifications to the clients.
[0094] The present invention offers multiple advantages over the prior art and the above listed are a few examples to emphasize on some of the advantageous features. The listed advantages are to be read in a non-limiting manner.

REFERENCE NUMERALS

[0095] Environment - 100;
[0096] User Equipment (UE)/client - 102;
[0097] Server - 104;
[0098] Network- 106;
[0099] System -108;
[00100] Processor - 202;
[00101] Memory - 204;
[00102] Storage unit – 206;
[00103] Establishment unit – 208;
[00104] Insertion unit – 210;
[00105] Detection unit – 212;
[00106] Elimination unit – 214;
[00107] Replacement unit – 216;
[00108] Primary Processor – 302;
[00109] Memory – 304;
[00110] User Interface (UI) – 306;
[00111] Virtual Machine – 402;
[00112] Application – 404;
[00113] Protocol Stack – 406;
[00114] Network layer -408.


,CLAIMS:CLAIMS
We Claim:
1. A method (600) for managing connections between a client (102) and a server (104), the method (600) comprises the steps of:
establishing, by one or more processors (202), a communication between the client (102) and the server (104) by creating multiple connections between the client (102) and the server (104) based on one or more parameters;
adding, by the one or more processors (202), the multiple connections created in a list;
detecting, by the one or more processors (202), whether each of the multiple connections between the client (102) and the server (104) are active or inactive;
upon detecting at least one of the multiple connections as inactive, deleting, by the one or more processors (202), the said inactive connection from the round robin list; and
replacing, by the one or more processors (202), the deleted inactive connection in real time with a new connection included in the in order to maintain the multiple connections between the client (102) and the server (104).

2. The method (600) as claimed in claim 1, wherein the step of establishing, a communication between the client (102) and the server (104) by creating multiple connections between the client (102) and the server (104) based on one or more parameters, includes the steps of:
receiving, by the one or more processors (202), a connection request from the client, wherein the connection request pertains to establishing the communication between the client (102) and the server (104);
extracting, by the one or more processors (202), the one or more parameters from the connection request;
determining, by the one or more processors (202), whether the communication is already established between the client (102) and the server (104) based on the one or more parameters;
in response to determining, absence of the communication between the client (102) and the server (104), creating, by the one or more processors (202), a handler for the communication establishment between the client (102) and the server (104) and returning the handler to the client (102) to wait for further notification;
in response to determining, presence of the communication between the client (102) and the server (104), returning, by the one or more processors (202), the prestored handler to the client (102); and
creating, by the one or more processors (202), the multiple connections to establish the communication between the client (102) and the server (104) based on the determination.

3. The method (600) as claimed in claim 1, wherein the one or more parameters includes at least one of, a target destination, a relevant protocol, a socket setting and a Hypertext Transfer Protocol (HTTP2) setting.

4. The method (600) as claimed in claim 1, wherein the step of detecting, whether each of the multiple connections between the client (102) and the server (104) are active or inactive, includes the steps of:
transmitting, by the one or more processors (202), a ping request to each of the multiple connections between the client (102) and the server (104) in order to verify whether each of the multiple connections is active or inactive;
determining, by the one or more processors (202), that the at least one of the multiple connections is active when an acknowledgement is received from the server (104) within a predefined time period via the said at least one of the multiple connections in response to transmission of the ping request; and
determining, by the one or more processors (202), that the at least one of the multiple connections is inactive when the acknowledgement is not received from the server (104) within the predefined time period via the said at least one of the multiple connections in response to transmission of the ping request.

5. The method (600) as claimed in claim 1, wherein the step of replacing, the deleted inactive connection in real time with a new connection included in the list in order to maintain the required number of multiple connections between the client (102) and the server (104), includes the steps of:
creating, by the one or more processors (202), the new connection;
adding, by one or more processors (202), the new connection created in the round robin list; and
replacing, by the one or more processors (202), the deleted inactive connection in real time with the new connection.

6. The method (600) as claimed in claim 1, wherein the multiple connections between the client (102) and the server (104) is at least one of, a Transmission Control Protocol (TCP).

7. The method (600) as claimed in claim 1, wherein the inactive connection is deleted from the list in order to avoid utilization of the inactive connection by the one or more processors (202) for routing requests from the client (102) to the server (104).

8. The method (600) as claimed in claim 1, wherein the list is at least one of, a round robin list.

9. A system (108) for managing connections between a client and a server, the system (108) comprises:
an establishment unit, configured to, establish, a communication between the client (102) and the server (104) by creating multiple connections between the client (102) and the server (104) based on one or more parameters;
an insertion unit, configured to, add, the multiple connections created in a list;
a detection unit, configured to, detect, whether each of the multiple connections between the client (102) and the server (104) are active or inactive;
an elimination unit, configured to, delete, the said inactive connection from the round robin list upon detection of at least one of the multiple connections as inactive,; and
a replacement unit, configured to, replace, the deleted inactive connection in real time with a new connection included in the list in order to maintain the multiple connections between the client (102) and the server (104).

10. The system (108) as claimed in claim 9, wherein the establishment unit establishes, a communication between the client (102) and the server (104) by creating multiple connections between the client (102) and the server (104) based on one or more parameters, by:
receiving, a connection request from the client, wherein the connection request pertains to establishing the communication the client (102) and the server (104);
extracting, the one or more parameters from the connection request;
determining, whether the communication is already established between the client (102) and the server (104) based on the one or more parameters;
in response to determining, absence of the communication between the client (102) and the server (104), creating, a handler for the communication establishment between the client (102) and the server (104) and returning the handler to the client (102) to wait for further notification;
in response to determining, presence of the communication between the client (102) and the server (104), returning, the prestored handler to the client (102); and
creating, the multiple connections to establish the communication between the client (102) and the server (104) based on the determination.

11. The system (108) as claimed in claim 9, wherein the one or more parameters includes at least one of, a target destination, a relevant protocol, a socket setting and a Hypertext Transfer Protocol (HTTP2) setting.

12. The system (108) as claimed in claim 9, wherein the detection unit detects, whether each of the multiple connections between client (102) and the server (104) are active or inactive, by:
transmitting, a ping request to each of the multiple connections between the client (102) and the server (104) in order to verify whether each of the multiple connections is active or inactive;
determining, that the at least one of the multiple connections is active when an acknowledgement is received from the server (104) within a predefined time period via the said at least one of the multiple connections in response to transmission of the ping request; and
determining, that the at least one of the multiple connections is inactive when the acknowledgement is not received from the server (104) within the predefined time period via the said at least one of the multiple connections in response to transmission of the ping request.

13. The system (108) as claimed in claim 9, wherein the replacement unit replaces, the deleted inactive connection in real time with a new connection included in the list in order to maintain the required number of multiple connections between the client (102) and the server (104), by:
creating, the new connection;
adding, the new connection created in the round robin list; and
replacing, the deleted inactive connection in real time with the new connection.

14. The system (108) as claimed in claim 9, wherein the multiple connections between the client (102) and the server (104) is at least one of, a Transmission Control Protocol (TCP).

15. The system (108) as claimed in claim 9, wherein the inactive connection is deleted from the list in order to avoid utilization of the inactive connection by the establishment unit for routing requests from the client (102) to the server (104).

16. The system (108) as claimed in claim 9, wherein the list is at least one of, a round robin list.

17. A User Equipment (UE) (102), comprising:
one or more primary processors (302) communicatively coupled to one or more processors (202), the one or more primary processors (302) coupled with a memory (304), wherein said memory (304) stores instructions which when executed by the one or more primary processors (302) causes the UE (102) to:
transmit, a connection request from the client (102) to the one or more processors (202) to establish the communication between the client (102) and the server (104); and
wherein the one or more processors (202) is configured to perform the steps as claimed in claim 1.

Documents

Application Documents

# Name Date
1 202321059736-STATEMENT OF UNDERTAKING (FORM 3) [05-09-2023(online)].pdf 2023-09-05
2 202321059736-PROVISIONAL SPECIFICATION [05-09-2023(online)].pdf 2023-09-05
3 202321059736-FORM 1 [05-09-2023(online)].pdf 2023-09-05
4 202321059736-FIGURE OF ABSTRACT [05-09-2023(online)].pdf 2023-09-05
5 202321059736-DRAWINGS [05-09-2023(online)].pdf 2023-09-05
6 202321059736-DECLARATION OF INVENTORSHIP (FORM 5) [05-09-2023(online)].pdf 2023-09-05
7 202321059736-FORM-26 [17-10-2023(online)].pdf 2023-10-17
8 202321059736-Proof of Right [12-02-2024(online)].pdf 2024-02-12
9 202321059736-DRAWING [03-09-2024(online)].pdf 2024-09-03
10 202321059736-COMPLETE SPECIFICATION [03-09-2024(online)].pdf 2024-09-03
11 Abstract 1.jpg 2024-09-26
12 202321059736-Power of Attorney [24-01-2025(online)].pdf 2025-01-24
13 202321059736-Form 1 (Submitted on date of filing) [24-01-2025(online)].pdf 2025-01-24
14 202321059736-Covering Letter [24-01-2025(online)].pdf 2025-01-24
15 202321059736-CERTIFIED COPIES TRANSMISSION TO IB [24-01-2025(online)].pdf 2025-01-24
16 202321059736-FORM 3 [29-01-2025(online)].pdf 2025-01-29
17 202321059736-FORM 18 [20-03-2025(online)].pdf 2025-03-20