Recherche dans les collections de brevets nationales et internationales
Une partie du contenu de cette demande n'est pas disponible pour le moment.
Si cette situation persiste, contactez-nous auObservations et contact
1. (WO2015172745) DÉTECTION DE RÉACHEMINEMENT BIDIRECTIONNEL
Document

说明书

发明名称 0001   0002   0003   0004   0005   0006   0007   0008   0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046  

权利要求书

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15  

附图

0001   0002   0003   0004   0005   0006   0007  

说明书

发明名称 : BIDIRECTIONAL FORWARDING DETECTION

Background

[0001]
A failure of a communication link between network devices in a neighbor relationship (e.g., two neighbor routers) may be detected through Bidirectional Forwarding Detection (BFD) . The communication link between the network devices is set up according to a protocol, and also the failure of the link through the BFD is detected according to the protocol, so the protocol can be called a protocol served by the BFD. The protocol signals information of the neighbor network devices to the BFD, and then the BFD sets up a BFD session between the neighbor network devices. After the session is set up, either of the two devices in the session will periodically transmit a BFD message to the opposite device. If no BFD message transmitted by the opposite device has been received within a detection period of time, then the device determines that there is a failure occurring on the link between the device and the neighbor device, and signals this failure to the served protocol.

Brief Description of the Drawings

[0002]
Fig. 1 is a schematic diagram illustrating a structure of a bidirectional forwarding detection device according to an example of the present disclosure;
[0003]
Fig. 2 is a schematic diagram illustrating a flow chart of bidirectional forwarding detection according to an example of the present disclosure;
[0004]
Fig. 3 is a schematic diagram illustrating a flow chart of setting up a bidirectional forwarding detection session according to an example of the present disclosure;
[0005]
Fig. 4 is a schematic diagram illustrating a flow chart of maintaining a bidirectional forwarding detection session according to an example of the present disclosure;
[0006]
Fig. 5 is a schematic diagram illustrating a flow chart of maintaining a bidirectional forwarding detection session according to an example of the present disclosure;
[0007]
Fig. 6 is a schematic diagram illustrating a multi-session scenario in a method for bidirectional forwarding detection according to an example of the present disclosure; and
[0008]
Fig. 7 is a schematic diagram illustrating a structure of a bidirectional forwarding detection device according to an example of the present disclosure.
[0009]
Detailed Description of the Embodiments
[0010]
A system and method for bidirectional forwarding detection according to the present disclosure can be applied to setting up and maintaining a BFD session between neighbor network devices (e.g., routers) . The neighbor devices are devices at either end of a link. The neighbor devices may be referred to as opposite devices, i.e. if referring to one device of a pair of neighbor devices, that device may be referred to as the present device and the other device as the opposite device.
[0011]
For example, a router Aand a router B (or switches or other network devices, for example) run a protocol served by the BFD. For example, BFD may serve protocols such as Virtual Router Redundancy Protocol (VRRP) , Open Shortest Path First (OSPF) , Multi-Protocol Label Switching (MPLS) , an IP routing related protocol, etc. After the protocol discovers neighbor devices through a Hello mechanism, a connection is set up between the router A and the router B. When the protocol needs to check a link between the two routers for health in the BFD session, the protocol may instruct that a BFD is to be set up between the routers, and the health of the link between the two routers may be checked in the BFD session.
[0012]
Still taking as an example the BFD session between the router A and the router B, firstly the BFD session is set up, and then the session is maintained. In an example, the network device setting up the BFD session can set up the session and maintain the session as described above respectively through two modules, wherein one of the modules is a processor and the other of the modules is a programmable logic device. Referring to Fig. 1 for an example, the router A can include a processor 11 and a programmable logic device 12. The processor 11 is responsible for setting up the BFD session with the opposite router, and the programmable logic device 12 is responsible for maintaining the session after the session is set up. This approach may free up CPU resources for other tasks and may provide a faster, more reliable service, compared to an approach in which both session set up and session maintenance are carried out by a CPU.
[0013]
The processor 11 may execute instructions stored on a non-transitory machine readable storage medium. The processor may for example be a Central Processing Unit (CPU) . In order to set up the BFD session, the router A needs to exchange BFD messages (e.g., a BFD response message, a BFD acknowledgement message, etc. ) with the opposite router (e.g., the router B) to negotiate about and confirm session parameters, and these BFD messages can be processed by the processor 11, and here the programmable logic device 12 is responsible for forwarding the BFD messages between the processor 11 and the opposite router. As schematically illustrated by the dotted arrow in Fig. 1, the programmable logic device 12 forwards a received BFD message, transmitted by the opposite router, to the processor 11 or forwards a BFD message of the processor 11 to the opposite router.
[0014]
After the session is set up, the programmable logic device 12 receives a BFD session table entry issued by the processor 11 and maintains the session according to the table entry. For example, the session table entry can include a message transmission interval of time determined as a result of negotiation in the session setup phase. The programmable logic device 12 can transmit a BFD message to the opposite router periodically at the message transmission interval of time. In another example, the session table entry can include a message reception interval of time determined as a result of negotiation in the session setup phase. The programmable logic device 12 can thereby determine whether a BFD message transmitted by the opposite router has been received in a predetermined period of time, which may be called a message reception interval of time. If no BFD message transmitted by the opposite router has been received upon expiration of the predetermined period of time, then the programmable logic device 12 can determine that the BFD session has failed, which implies that a link between the devices has failed. In this case the programmable logic device 12 may signal to the processor 11 that the BFD session has failed. The processor 11 may handle this failure accordingly, e.g., the processor 11 may signal the failure of the session to the protocol served by the BFD.
[0015]
In an example, the programmable logic device 12 can be a Programmable Array Logic (PAL) , and in another example, the programmable logic device 12 can be a Generic Array Logic (GAL) , a Complex Programmable Logic Device (CPLD) or a Field Programmable Gate Array (FPGA) . Such dedicated programmable logic devices may be able to handle maintenance of the BFD session more quickly than a CPU. Furthermore, unlike a CPU, the programmable logic device may be less likely to suffer interrupts from other processes.
[0016]
In an example, the programmable logic device 12 can be a logic device dedicated to maintaining the BFD session, e.g., a logic device newly, added to the router or another network device, dedicated to maintaining the BFD session. In another example, the programmable logic device 12 can be an existing logic device in the network device, e.g., a programmable logic device 12 already included in the device to forward a service message, to thereby save a resource in use and low a cost. For example, there is an FPGA arranged in some router to forward a service message. Except a BFD message, when the programmable logic device 12 is further configured to forward a service message, upon reception of a message transmitted by the opposite router, the device can firstly determine whether the type of the message is a BFD message, and if it is not a BFD message, then the message can be forwarded according to a forwarding table entry, or if it is a BFD message, then a corresponding processing logic will be further performed on the BFD message. The BFD message can be encapsulated in the User Datagram Protocol (UDP) and can include a standard UDP port number (3784/3785/4784) , and the BFD message can be identified with the UDP port number.
[0017]
Referring to Fig. 2 for an example, such a flow will be described below taking a BFD session as an example that the present device detects a failure of the link with the opposite device through its cooperating processor and programmable logic device.
[0018]
At block 201, the processor 11 sets up a BFD session with the opposite device, and transmits a BFD session table entry corresponding to the BFD session to the programmable logic device 12 after the session is set up. For example, the processor11 of the router A sets up a BFD session with the router B, and then transmits a BFD session table entry corresponding to the BFD session to the programmable logic device 12 of the router A.
[0019]
At block 202, the programmable logic device 12 transmits a BFD message periodically to the opposite device according to the BFD session table entry transmitted by the processor11, and when no BFD message has been received from the opposite device within a predetermined period of time, the programmable logic device 12 signals a failure of the BFD session to the processor11. For example, the programmable logic device12 of the router A transmits a BFD message periodically to the router B, and when no BFD message has been received from the router B within a predetermined period of time, which may be called a message reception interval of time, then the programmable logic device12 can determine that the BFD session has failed, which implies that the link between the router A and the router B has failed, and the programmable logic device12 signals the failure to the processor11.
[0020]
Referring to Fig. 3 for an example, such a flow will be described below taking a BFD session as an example that the present device sets the session with the opposite device through its cooperating processor and programmable logic device.
[0021]
In 301, the processor transmits a BFD negotiation message to the programmable logic device where the message can be a message initiated by the present device to request the opposite device for negotiating about BFD session parameters, and the message carries an IP address of the opposite device as a destination IP address.
[0022]
In 302, the programmable logic device transmits the BFD negotiation message to the opposite device according to the destination IP address carried in the BFD negotiation message, and in 303, the programmable logic device receives a BFD response message returned by the opposite device to respond to the present device, where the BFD response message can carry a negotiation result. For example, the negotiation result can include the following session parameters: a message transmission interval of time, a message reception interval of time, message transmission contents, etc., to maintain the BFD session.
[0023]
In 304, the programmable logic device checks its BFD session table for a BFD session table entry corresponding to the received BFD response message.
[0024]
For example, if a BFD session has been set up, then the processor generates a BFD session table entry corresponding to the BFD session and transmits it to the programmable logic device so that the programmable logic device hereby maintains the set-up BFD session. The processor will not transmit any corresponding session table entry to the programmable logic device until a BFD session is set up. Since the BFD session has not been set up yet at this time, the programmable logic device will not find any corresponding table entry but will hereby determine that negotiation about the BFD session has not been completed, and transmit the BFD response message to the processor in 305.
[0025]
In 306, if the processor determines that the BFD response message carries the session parameters as a result of negotiation, then the processor can transmit a BFD acknowledgement message to the opposite device through the programmable logic device to signal to the opposite device that the present device has received the message, carrying the negotiation result, transmitted by the opposite device. The programmable logic device can forward the BFD acknowledgement message to the opposite device in 307 so that the present device determines that the BFD session has been set up with the opposite device. The opposite device determines the BFD session has been set up with the present device upon reception of the BFD acknowledgement message.
[0026]
In 308, the processor creates a BFD session table entry corresponding to the BFD session and transmits the BFD session table entry to the programmable logic device after the session is set up.
[0027]
For example, the session table entry can include a BFD session identifier of the present device and a BFD session identifier of the opposite device; a source IP address and a destination IP address of the BFD session; a BFD session transmission interval of time of a transmission timer and a BFD session reception interval of time of a reception timer; transmission contents of a BFD message; a detection period multiple, DetectMult, of the BFD message; and a control message length, Length, of the BFD message.
[0028]
In 309, the programmable logic device can receive the BFD session table entry issued by the processor, and store the BFD session table entry in its BFD session table, create a transmission timer for the BFD session according to the transmission interval of time in the table entry, and creates a reception timer for the BFD session according to the reception interval of time in the table entry; and can further record a session state (e.g., Active or Inactive) corresponding to the BFD session. As depicted in Table 1 below, the session table can store session table entries respectively to a plurality of BFD sessions, etc. :
[0029]
Table 1 BFD session table
[0030]


[0031]
After the BFD session table entry is stored in the BFD session table, the programmable logic device can maintain the BFD session according to the contents in Table 1 above, for example, the programmable logic device can transmit a BFD message to the opposite device when the transmission timer expires. Maintenance of the BFD session will be described in the following example.
[0032]
In an example, in 308 above, when the processor transmits the BFD session table entry to the programmable logic device, the processor can further transmit the entire BFD message, to be transmitted, for maintaining the BFD session directly to the programmable logic device so that when the transmission timer expires, the programmable logic device can transmit the message previously transmitted by the processor instead of composing the BFD message from the parameters in the BFD session table entry, to thereby further simplify processing by the programmable logic device and further improve the efficiency of processing by the programmable logic device.
[0033]
In another example, in order to save a storage resource of the programmable logic device, in 309 above, the programmable logic device can filter the BFD session table entry transmitted by the processor upon reception of the table entry to keep the attributes in the table entry for use in transmitting the BFD message periodically (e.g., the message transmission contents, etc., in the table entry) to thereby save storage and calculation resources of the programmable logic device. For example, the “detection period multiple, DetectMult, of the BFD message” and the “control message length, Length, of the BFD message” in the table entry in 308 are filtered out, and the remaining attributes are stored.
[0034]
Fig. 3 above illustrates a flow in which the present device sets up on its own initiative a BFD session with the opposite device, the programmable logic device is responsible for forwarding the BFD negotiation message, transmitted by the processor, to the opposite device, and forwarding the BFD response message of the opposite device to the processor, so the entire session setup process is performed at the processor. When the present device is triggered to set up a BFD session by the opposite device, the process will also be performed by the processor, and the programmable logic device forwards BFD messages exchanged between the processor and the opposite device in the session setup process (e.g., the BFD negotiation message, the BFD response message, etc. ) except the BFD messages are forwarded in a reversed direction. For example, the programmable logic device forwards the BFD negotiation message, transmitted by the opposite device, to the processor, and forwards the BFD response message, carrying the negotiation result, transmitted by the processor, to the opposite device. In another example, the programmable logic device transmits the BFD acknowledgement message, transmitted by the opposite device, to the processor, and after the processor determines that the message is a BFD acknowledgment message, the processor determines that the BFD session between the present device and the opposite device has been set up and transmits the BFD session table entry to the programmable logic device. Moreover upon reception of each BFD message transmitted by the opposite device, the programmable logic device searches locally for a corresponding BFD session table entry, and if the corresponding table entry is not found, then the programmable logic device determines that the message is a message in the session setup phase, and transmits the message to the processor.
[0035]
Such a flow will be described below still taking a BFD session as an example that the BFD session is maintained after the session is set up, and this session maintenance flow is generally performed by the programmable logic device and includes transmitting a BFD message periodically to the opposite device and receiving a message from the opposite device on time:
[0036]
As illustrated in Fig. 4, At block 401, the programmable logic device receives a message transmitted by the opposite device, and upon reception of the message, the programmable logic device can search its stored BFD session table for a BFD session table entry corresponding to a BFD message transmitted by the opposite device at block 402. The search can be made, for example, according to a BFD session identifier carried in the BFD message, and the BFD message transmitted by the opposite device can carry a BFD session identifier of the opposite device, and a BFD session identifier of the present device, determined as a result of negotiation in a session setup phase and these two session identifiers are also stored in the BFD session table entry, so the programmable logic device can check for such a BFD session table entry in which BFD session identifiers of the present and opposite devices are the same as the BFD session identifiers of the present and opposite devices carried in the BFD message received by the programmable logic device.
[0037]
At block 403, the programmable logic device can determine whether there is such a BFD session table entry. If there is such a BFD session table entry, then the table entry is a session table entry matching the BFD message; otherwise, it indicates that the programmable logic device fails to search for a BFD session table entry matching the BFD message.
[0038]
If the programmable logic device fails to search for a BFD session table entry matching the BFD message, then it indicates that the session setup phase is ongoing, and at block 404, the message is transmitted to the processor for processing, that is, the BFD session setup flow in the example above is performed. When the programmable logic device stores the BFD session table entry corresponding to the BFD message, it indicates that the message is a message transmitted by the opposite device in a BFD session maintenance phase, and if a reception timer does not expire at this time, that is, the opposite device transmits the BFD message before the reception timer expires, then the programmable logic device can reset the reception timer corresponding to the session at block 405 so that the timer does not expire, and keep the state of the session Active as it is. Moreover a count of received messages can be also updated at block 406.
[0039]
After the programmable logic device transmits the message to the processor, the processor can handle the message to set up the BFD session with the opposite device, and transmit the BFD session table entry corresponding to the BFD session to the programmable logic device after the BFD session is set up at block 407, the programmable logic device can create timers according to the BFD session table entry, where the timers includes the reception timer and the transmission timer.
[0040]
At block 408, the programmable logic device can determine whether the reception timer expires. If no BFD message transmitted by the opposite device has been received when the reception timer expires, it indicates that the opposite device has not transmitted any BFD message for a prescribed period of time and the opposite device or a link to the opposite device may fail, and at this time the programmable logic device can set the state of the BFD session to the corresponding opposite device to Inactive at block 409, and signal the change in state of the session to the processor at block 410, to inform the processor that the BFD session has failed. The processor further signals the served protocol. At block 411, the programmable logic device can delete the stored session table entry of the BFD session upon reception of an instruction from the processor. The processor can delete the BFD session upon reception of the signal indicating that the BFD session has failed.
[0041]
As illustrated in Fig. 5, at block 501, the programmable logic device can determine whether the transmission timer expires, and the programmable logic device can further transmit a BFD message to the opposite device when the transmission timer expires. If the transmission timer expires, then at block 502, the programmable logic device can extract parameters (e.g., BFD message contents) from the session table entry corresponding to the session and compose a BFD message; or as described above, the message can be the entire BFD message, to be transmitted, previously transmitted by the processor, so that the message is transmitted by the programmable logic device. After the BFD message is transmitted at block 503, the programmable logic device resets the transmission timer at block 504, and updates a count of transmitted messages in the BFD session table at block 505.
[0042]
In the example above taking a BFD session as an example, setting up and maintenance of the BFD session through the cooperating processor and programmable logic device has been described. Also, a programmable logic device can be configured to manage a large number of BFD sessions, and for example, in a scenario as illustrated in Fig. 6, a convergence device can be connected with a large number of accessing devices (via physical interfaces or logical interfaces) , all of which are connected with a programmable logic device of the convergence device, and each connection link can be checked for health in a corresponding BFD session, so the programmable logic device needs to manage a large number of BFD sessions, e.g., up to 1024 BFD sessions.
[0043]
Each of the large number of BFD sessions above can be set up and maintained by the programmable logic device in the logics as illustrated in Fig. 2, Fig. 3 , Fig. 4 and Fig. 5. Although the programmable logic device maintains a large number of BFD sessions, it can operate at a high speed, for example, it can poll eight session table entries in 10 nanoseconds, so that the programmable logic device can manage rapidly a large number of BFD session table entries, transmit BFD messages periodically as temporally counted by the transmission timer and perform an overtime process in response to the expiring reception timer to thereby manage the sessions precisely.
[0044]
The programmable logic device can store the BFD session table entries above in its memory and can be configured with the logical flows as illustrated in Fig. 4 and Fig. 5 in a programming language of the programmable logic device so that the device can maintain the BFD sessions. The processor can invoke BFD session setup logical instructions stored in a memory of the network device where the processor resides. As illustrated in Fig. 7, a processor 71 and a memory 72 communicate with each other over a communication bus 73, and the processor 71 invokes and executes BFD session setup logical instructions in the memory to negotiate with the opposite device about session parameters.
[0045]
If the functions above are embodied in the form of software functional elements and sold or used as a separate product, then the product can be stored in a computer readable storage medium. Based upon such understanding, the technical solution of the disclosure in essence or the part thereof contributing to the prior art or a part of the technical solution can be embodied in the form of a software product stored in a storage medium and including several instructions to cause a computer device (e.g., a personal computer, a server, a network device, etc. ) to perform all or a part of the steps in the methods according to the respective embodiments of the invention. The storage medium above can include a U disk, a mobile hard disk, a Read-Only Memory (ROM) , a Random Access Memory (RAM) , a magnetic disk, an optical disk or various other medium in which program codes can be stored.
[0046]
The foregoing is preferred examples of the present disclosure, which is not intended to limit the present disclosure. Any modifications, equivalents, and improvements made within the spirit and principle of the present disclosure should be covered by the scope of the present disclosure.

权利要求书

[权利要求 1]
A system for Bidirectional Forwarding Detection (BFD) , comprising: a processor and a programmable logic device; wherein the processor is to set up a BFD session with an opposite device, and to transmit a BFD session table entry corresponding to the BFD session to the programmable logic device after the session is set up; and wherein the programmable logic device is to transmit a BFD message periodically to the opposite device according to the BFD session table entry, and when no BFD message has been received from the opposite device within a predetermined period of time, to signal to the processor that the BFD session has failed.,
[权利要求 2]
The system according to claim 1, wherein in order to transmit the BFD message periodically to the opposite device according to the BFD session table entry, the programmable logic device is to: create a transmission timer corresponding to the BFD session according to a message transmission interval of time in the BFD session table entry; and transmit the BFD message to the opposite device and to reset the transmission timer, when the transmission timer expires.
[权利要求 3]
The system according to claim 1, wherein the BFD message transmitted to the opposite device includes message parameters in the BFD session table entry.
[权利要求 4]
The system according to claim 1, wherein the BFD message transmitted to the opposite device is a BFD message, transmitted by the processor, corresponding to the BFD session.
[权利要求 5]
The system according to claim 1, wherein in order to signal to the processor that the BFD session has failed when no BFD message has been received from the opposite device within a predetermined period of time, the programmable logic device is to: create a reception timer corresponding to the BFD session according to a message reception interval of time in the BFD session table entry; and set a state of the BFD session table entry to Inactive and signal the failure of the BFD session to the processor when the reception timer expires.
[权利要求 6]
The system according to claim 1, wherein the programmable logic device is to: receive a BFD message transmitted by the opposite device; and transmit the BFD message to the processor for setting up the BFD session upon determining that there is no local BFD session table entry matching the BFD message.
[权利要求 7]
The system according to claim 6, wherein the programmable logic device is further to: upon reception of the BFD message transmitted by the opposite device, to determine that a type of the received message is the BFD message, according to a User Datagram Protocol (UDP) port number in the message.
[权利要求 8]
The system according to claim 1, wherein the processor is further to: delete the BFD session upon reception of the signal indicating that the BFD session has failed.
[权利要求 9]
A method for Bidirectional Forwarding Detection (BFD) , applicable to a bidirectional forwarding detection system comprising a processor and a programmable logic device, the method comprising: the processor setting up a BFD session with an opposite device, and transmitting a BFD session table entry corresponding to the BFD session to the programmable logic device after the session is set up; and the programmable logic device transmitting a BFD message periodically to the opposite device according to the BFD session table entry transmitted by the processor, and when no BFD response message has been received from the opposite device within a predetermined period of time, signaling a failure of the BFD session to the processor.
[权利要求 10]
The method according to claim 9, wherein the programmable logic device transmitting the BFD message periodically to the opposite device according to the BFD session table entry transmitted by the processor comprises: creating a transmission timer corresponding to the BFD session according to a message transmission interval of time in the BFD session table entryr; and transmitting the BFD message to the opposite device, and resetting the transmission timer, when the transmission timer expires.
[权利要求 11]
The method according to claim 10, comprising: including message parameters from the BFD session table entry in the BFD message.
[权利要求 12]
The method according to claim 10, wherein before transmitting the BFD message to the opposite device, the method further comprises: retrieving the BFD message, transmitted by the processor, corresponding to the BFD session.
[权利要求 13]
The method according to claim 9, comprising: creating a reception timer corresponding to the BFD session according to a message reception interval of time in the BFD session table entry; and setting a state of the BFD session table entry to Inactive and signaling the failure of the BFD session to the processor when the reception timer expires.
[权利要求 14]
The method according to claim 9, wherein the processor setting up the BFD session with the opposite device comprises: the programmable logic device receiving a BFD message transmitted by the opposite device; and the programmable logic device transmitting the BFD message to the processor for setting up the BFD session upon determining that there is no local BFD session table entry matching the BFD message.
[权利要求 15]
The method according to claim 14, wherein the programmable logic device receiving the BFD message transmitted by the opposite device comprises: receiving the BFD message transmitted by the opposite device; and determining that a type of the received message is the BFD message, according to a User Datagram Protocol (UDP) port number in the message.

附图

[ 图 0001]  

[ 图 0002]  

[ 图 0003]  

[ 图 0004]  

[ 图 0005]  

[ 图 0006]  

[ 图 0007]