Internet DRAFT - draft-eck-dfp
draft-eck-dfp
Network Working Group C. Kersey
Internet-Draft Cisco Systems, Inc.
Expires: September 7, 2006 March 6, 2006
Dynamic Feedback Protocol
draft-eck-dfp-01
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on September 7, 2006.
Copyright Notice
Copyright (C) The Internet Society (2006).
Abstract
This memo presents a protocol for allowing servers in a load sharing
pool to provide feedback status to the entity making decisions on how
to distribute the work load to the pool.
Kersey Expires September 7, 2006 [Page 1]
Internet-Draft Dynamic Feedback Protocol March 2006
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Problem Description . . . . . . . . . . . . . . . . . . . 3
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Design Considerations . . . . . . . . . . . . . . . . . . . . 5
2.1. Environment Independence . . . . . . . . . . . . . . . . . 5
2.2. Extensibility . . . . . . . . . . . . . . . . . . . . . . 5
2.3. Security . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Architecture . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1. Functional Structure . . . . . . . . . . . . . . . . . . . 6
4. Message Structure . . . . . . . . . . . . . . . . . . . . . . 7
4.1. Message Format . . . . . . . . . . . . . . . . . . . . . . 7
5. Defined TLVs . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.1. Security TLV . . . . . . . . . . . . . . . . . . . . . . . 9
5.1.1. MD5 Security Authentication . . . . . . . . . . . . . 10
5.2. Load TLV . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.2.1. Weight Value . . . . . . . . . . . . . . . . . . . . . 12
5.3. Keep-alive TLV . . . . . . . . . . . . . . . . . . . . . . 13
5.4. BindID Table TLV . . . . . . . . . . . . . . . . . . . . . 14
6. Defined Messages . . . . . . . . . . . . . . . . . . . . . . . 16
6.1. Preference Information Message . . . . . . . . . . . . . . 16
6.2. Server State Message . . . . . . . . . . . . . . . . . . . 17
6.3. DFP Parmaters Message . . . . . . . . . . . . . . . . . . 17
6.4. BindID Request Message . . . . . . . . . . . . . . . . . . 17
6.5. BindID Report Message . . . . . . . . . . . . . . . . . . 18
6.6. BindID Change Notify Message . . . . . . . . . . . . . . . 18
7. System Flow . . . . . . . . . . . . . . . . . . . . . . . . . 19
7.1. Control Connection . . . . . . . . . . . . . . . . . . . . 19
7.2. DFP Parameter Messages . . . . . . . . . . . . . . . . . . 19
7.3. Status Reporting of Real Servers . . . . . . . . . . . . . 19
7.4. Server Status Updates to DFP Agent . . . . . . . . . . . . 19
7.5. DFP Manager Update Request . . . . . . . . . . . . . . . . 20
7.6. Real Server Updates to DFP Manager . . . . . . . . . . . . 20
8. Normative References . . . . . . . . . . . . . . . . . . . . . 20
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 21
Intellectual Property and Copyright Statements . . . . . . . . . . 22
Kersey Expires September 7, 2006 [Page 2]
Internet-Draft Dynamic Feedback Protocol March 2006
1. Introduction
1.1. Problem Description
The Dynamic Feedback Protocol, DFP, is designed to be used in Server
Load-Balancing (SLB) environments. In the SLB environment, it is
critical to know the availability or health of the servers in your
server farm. The problem today is that there is no effective way for
the real server to relay their overall health back to the SLB device.
There are several ways to monitor the health of real servers. You
can actively monitor the flows that are being served by the SLB
device. You can also activate probes on the SLB device. In this
context, a probe is a program that acts as a client to the server
farm. It will query for data, and it will compare the received data
to that of the probes configuration for acceptable data values coming
back. While these methods are somewhat effective in understanding if
the real servers are available or not, they do not offer a view into
the true health of the real servers.
The DFP protocol will allow the real servers to adjust their overall
health or availability to the SLB device. This will play a role into
which real server is picked by the SLB device to service a particular
flow. The most available and most healthy real server will be chosen
to handle the 'next' flow. The real server will calculate its own
health or availability to report to the SLB device.
1.2. Terminology
This document uses the following terms:
Virtual server: a virtual instance of a set of real servers that
clients use to connect to a site. The virtual server is represented
by an IP address, port, and protocol.
Server farm: a set of servers that are pre-defined to do the work for
a virtual server.
Real server: the physical server in a datacenter that is running the
application to fullfill the requests of incoming clients.
Server Load Balancer, SLB: Device in the network that distributes
load to a server farm via a virtual server.
Server agent/DFP Agent: software running on the real server that
collects statistics about the real server. These statistics are then
reported to a SLB device or a third-party box for determining the
overall health or availability of the real server.
Kersey Expires September 7, 2006 [Page 3]
Internet-Draft Dynamic Feedback Protocol March 2006
DFP Manager: the network entity that the DFP agent (or Server agent)
will report the availability of a real server to in a particular
operating environment. This could be the SLB device directly, or it
could be a third party.
1.3. Overview
In this system, DFP Agents will communicate with DFP Managers to set
the real server's health / availability to do work in a server farm.
The DFP Manager can be the actual SLB device that is making the
decisions on where the next flow goes, or it can be a third party
box. The third party box in this case could be a network management
system or something similar. In this case, the third party box will
gather the data from all the real servers and then apply its own
algorithms to the data. It will then send the data for all real
servers on to the DFP Manager, which could be running on a SLB
device. The idea is that the third party box can normalize the data
to ensure unique factors about each real server can be taken into
account before reporting the real server's availability to the DFP
Manager.
There are predefined messages that must be passed between the DFP
Agent and DFP Manager. Some messages are required to pass in only
one direction. The details on the message definitions and direction
are included in Section 6 and Section 7.
Kersey Expires September 7, 2006 [Page 4]
Internet-Draft Dynamic Feedback Protocol March 2006
2. Design Considerations
2.1. Environment Independence
This protocol is designed to be used within any network
infrastructure. It is the responsibility of the DFP Agent to gather
the statistical data from the actual server and to translate that
into meaningful data to report to the DFP Manager. Having this
separation allows the DFP Agent to interpret the information
differently depending on its actual operating environment.
2.2. Extensibility
The type of information being reported will grow as more features are
added to server farms or applications. Because of this, the protocol
must provide both flexibility and extensibility. New information can
be added and reported using DFP without 'breaking' the participants
that do not understand this new information. This is achieved
through the use of Type, Length, Value (TLV) parameters.
As new features are created, more TLVs can be added to messages
without disturbing the current participants. This allows for a form
of backwards compatibility in a particular operating environment
without adding a lot of complexity.
2.3. Security
This protocol allows real servers to provide feedback on their
availability in addition to allowing them to take themselves in and
out of service for a particular server farm. This implies that a
security risk exists if the network is 'hacked', which could take a
virtual server out of service.
An optional Security TLV is included in the protocol to allow for
message verification. This allows different levels of security to
the latest and greatest method that is being used without an overhaul
or modification to the protocol.
Kersey Expires September 7, 2006 [Page 5]
Internet-Draft Dynamic Feedback Protocol March 2006
3. Architecture
3.1. Functional Structure
DFP is a protocol between DFP Agents running on the real servers in a
server farm and a DFP Manager. That DFP Manager could be running on
a SLB device or a third-party host. If the data is collected by a
third-party host, the assumption is for that host to normalize the
data for all the servers in a server farm. The third-party host
would then report all the information to the SLB device. The DFP
Agent is responsible for collecting server status by whatever means
available. It then reports that information to the DFP Manager.
In the case of a third party unit gathering the information, DFP will
be the protocol used between all units in the network. DFP will be
running between the DFP Agents and DFP mananger. DFP will also be
running between the DFP manager and the SLB device. In this context,
it is assumed that any information being reported to a third party
unit will report the same information to the SLB device. The only
difference is that the third party unit can 'normalize' the data for
all real servers in a server farm. It should be noted that load-
balancing decisions will not be affected until the information is
received and processed by the SLB device.
The communication between the DFP Agent and the SLB/third-party unit
is a long-lived, reliable connection (e.g., TCP). The DFP Manager is
responsible for initiating and maintaining the connection. Based
upon the messages being received by the SLB device, the SLB device is
responsible for updating its internal status of the real servers.
The implemenation of the DFP Agent is outside the scope of the DFP
protocol. The agent software can gather whatever information it
wants to for determining the health of the real server (e.g.,
available memory, processor speed, process type, etc). The only part
that is important to the DFP protocol is how the information is sent
from the DFP Agent to the DFP Manager.
At this time, there is no dynamic discovery method implemented as a
part of the DFP protocol. The units must be configured with real and
virtual server information. Additionally, the SLB device must be
configured with DFP Agent information so it can initiate the
connection for retreiving information. Any dynamic discovery
protocol could be added to the DFP Agent and Manager to allow for
less configuration; however, that is outside the scope of this
document.
Kersey Expires September 7, 2006 [Page 6]
Internet-Draft Dynamic Feedback Protocol March 2006
4. Message Structure
DFP messages will contain a Signal Header describing the DFP protocol
version and the defined message type. In order to make the protocol
extensible, defined messages will be broken up into Type, Length,
Value, (TLV) format. Each message will contain the type of message
followed by the length of that component. Lastly the actual value
will be included. This will allow for new message types to be added
in the future without disturbing the current protocol definition. If
a message type is not understood by the receiver, the entire message
should be discarded.
All messages are assumed to be in Network Byte Order throughout the
protocol.
4.1. Message Format
The message format will be:
+-----------------------+
| Signal Header |
+-----------------------+
| First TLV |
+-----------------------+
| Second TLV |
+-----------------------+
| ..... |
+-----------------------+
| Last TLV |
+-----------------------+
The DFP version number is intended to be used for compatibility in
the network. The overall length of the entire DFP message is also
included.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version = 0x01 |0|0|0|0|0|0|0|0| Message Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The Message Length is the entire length of the message, including the
signal header.
Kersey Expires September 7, 2006 [Page 7]
Internet-Draft Dynamic Feedback Protocol March 2006
The TLV header is the first part of each component in the DFP
message. It describes the type and the overall length of the TLV.
This allows the receiver of the message to interpret the contents
correctly. It also allows the receiver the ability to skip over any
TLVs that are not understood.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The Length is the length of the TLV data plus the TLV header.
Kersey Expires September 7, 2006 [Page 8]
Internet-Draft Dynamic Feedback Protocol March 2006
5. Defined TLVs
The following TLVs are defined. TLVs are used to relay necessary
data based on the message type. The DFP message types are listed in
Section 6.
+-------------------------------------+
| TLV Name | Type Value |
+-------------------------------------+
| Security | 0x0001 |
+-------------------------------------+
| Load | 0x0002 |
+-------------------------------------+
| Keep-Alive | 0x0101 |
+-------------------------------------+
| Reserved | 0x0200-0x02ff |
+-------------------------------------+
| BindID Table | 0x0301 |
+-------------------------------------+
The "Reserved" TLVs are intended for future expansion or for user-
defined values. A user can define and use TLVs of their choosing.
5.1. Security TLV
The security TLV is used to describe the security algorithm being
used. Additionally, it provides the data necessary for that security
algorithm.
This TLV is optional in the protocol; however, if a receiving unit is
configured for a security type, then all DFP messages must contain
that Security TLV or they will be ignored. If the Security TLV is
present and not configured on the receiving unit, it will be ignored
while the rest of the message is processed normally. If this TLV is
present in a DFP message, then it must be immediately after the
Signal Header.
The definition:
Kersey Expires September 7, 2006 [Page 9]
Internet-Draft Dynamic Feedback Protocol March 2006
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Security Algorithm |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Security Data |
.............
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Security Algorithm: desribes the type of security algorithm being
implemented.
Security Data: contains the necessary data to implement the security
algorithm.
The defined Security values are:
+----------------------------+
| Security Type | Value |
+----------------------------+
| MD5_Security | 0x00000001 |
+----------------------------+
5.1.1. MD5 Security Authentication
The MD5 Security Authentication contains the following data:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MD5 Key ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MD5 Authentication Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MD5 Authentication Data (con't) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MD5 Authentication Data (con't) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MD5 Authentication Data (con't) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
MD5 Key ID, 4-bytes: used to determine which key (i.e., password) was
used in the MD5 calculation. This allows the changing of the keys on
the various boxes (i.e., DFP Agents, SLB devices, etc) without
messages being rejected.
Kersey Expires September 7, 2006 [Page 10]
Internet-Draft Dynamic Feedback Protocol March 2006
MD5 Authentication Data, 16-bytes: contains a 128-bit hash of the
message. This hash is based on the sum of the shared key plus the
entire message beginning with the Signal Header plus the shared key
again. This follows RFC1828 [1] MD5 to include the key in producing
the 128-bit message digest.
The MD5 hash is calculated per RFC1828 [1] over the entire DFP
portion of the message beginning with the signal header. The
Authentication Data and Key ID fields
MD5 keys will consist of up to 64 ASCII characters If the key is less
than 64 characters, it will be padded as per RFC1828 [1]. If
multiple keys are used, each key will have a "Key ID" assigned to it
upon configuration. This "Key ID" is provided with the message to
allow the receiving unit to be informed as to which key should be
used to verify this message. The "Key ID" for each key must be
unique and must be configured identically on all boxes. This value
is any 4-byte number. The default value for a single key should be
zero. When configuring MD5 keys, an optional time-out value can be
supplied.
The timeout value is used for two reasons:
1. When a new key is added, no system will send a message using this
new key for time-out number of seconds. All systems will accept
messages using this key immediately. If this is the first key, the
system should begin using it immediately as unit that are not yet
configured for security will ignore the security TLV. The system
should also accept messages that do not contain the security TLV for
this time-out period. This gives the system Administrator time-out
seconds to configure the key on all systems involved without having a
disruption in service.
2. When it becomes desirable to remove or replace a password, the
time-out value is used to tell each system to stop sending messages
with a key immediately. All systems should also stop accepting
messages using that key after time-out seconds. If the key is being
replaced, the old key must be accepted for time-out seconds. Again,
this will give the system Administrator time-out seconds to remove or
replace this key for each system.
Kersey Expires September 7, 2006 [Page 11]
Internet-Draft Dynamic Feedback Protocol March 2006
5.2. Load TLV
The Load TLV contains the actual load information being reported via
the DFP Agents on the servers. The real servers are first grouped by
their port number and protocol type requiring a seperate Load TLV for
each grouping. The individual servers are then listed with their
individual weights. The BindID is included in the definition of the
server to allow a single server to be bound to multiple virtual
servers. By having a distinct BindID, the server can report a
different weight for each virtual server.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Port Number | Protocol | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Number of Hosts |0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Host Preference Field - one per Host |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Host Preference Field - one per Host (con't) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Port Number, 2-bytes: port number of host server. This can be
represented as a wildcard value, 0x0000.
Protocol, 1-byte: protocol of the host server. This can be
represented as a wildcard value, 0x00.
Flags, 1-byte: miscellaneous flags - currently set to zeros.
Number of Hosts, 2-bytes: total number of host servers included in
this reporting of weights.
Reserverd, 2-bytes: all zeros.
Preference Field, 8-bytes: One for each host being reported, which
includes: IP address (4-bytes), BindID (2-bytes), and Weight
(2-bytes).
5.2.1. Weight Value
The weight value in the Load TLV is used by the SLB device to
determine which server is most available or healthiest to service the
next flow. In the most simplistic terms, the higher the weight value
the more available the server. The weight of zero means that the
Kersey Expires September 7, 2006 [Page 12]
Internet-Draft Dynamic Feedback Protocol March 2006
server is not available for any more flows. This is equivalent to
taking the real server out-of-service.
The way the weight value is exactly used depends on the load
distribution algorithim that the SLB device is using. The most
common load distribution algorithims that use a weight value are
weighted least connections and weighted round robin.
The weighted least connections algorithm distributes the next flow to
the server that has the fewest number of flows. It will use the
weight value as a way to have the overall load distributed for a
particular virtual server. For example, if there are 3 servers with
weights of 1, 1, and 2, then the servers with a weight of 1 would
have 25% each of the total flows for the virtual server, and the
server with a weight of 2 would have 50% of the total flows for the
same virtual server.
The weighted round robin algorithm distributes the next flow based on
which server got the previous flow and the weights. The servers for
a virtual server will get 'weight value' number of flows in a row,
then the next server will get its 'weight value' number of flows in a
row. This will repeat until the last server gets its flows, then it
will go back to the top of the list.
5.3. Keep-alive TLV
The Keep-alive TLV is part of the DFP configuration for the control
connection maintained between the SLB device and the DFP Agent. This
allows the DFP Manager to inform the DFP Agent about the minimum time
interval in which the DFP Agent must send information over the DFP
control connection.
If the SLB device does not receive an update from the DFP Agent in
the amount of time configured, the SLB device will close the
connection. Once the connection is closed, the SLB device will
attempt to establish a new control connection to the DFP Agent.
During the time the DFP Manager is re-establishing the control
connection, it must use the pre-configured static weight for each
real server it was receiving updates on via DFP.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Keep-alive Time |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Kersey Expires September 7, 2006 [Page 13]
Internet-Draft Dynamic Feedback Protocol March 2006
Keep-alive time: time in seconds for which activity over the DFP
control connection must be detected or the connection will be
terminated. A timeout value of zero means that the DFP control
connection will not be terminated due to no response from the DFP
Agent.
5.4. BindID Table TLV
The BindID Table TLV is a mapping of BindID values to client network
addresses for a particular real server. The SLB device may use the
client IP address as part of its server selection process. Allowing
the use of the client address in the server selection process for a
flow allows for a mechanism in which Quality of Service can be
implemented.
The inclusion of a BindID, and thus a client's network, in the
server's availability report allows a server to be more available for
some client networks while simultaneously being less available for
others. As each server may have a different "representation" of the
mapping between a client network and the BindID value, information
about the server is included in this TLV.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Server IP Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Server Port Number | Protocol |0|0|0|0|0|0|0|0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Number of Entries |0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| BindID Field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| BindID Field (con't) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| BindID Field (con't) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Server IP Address, 4-bytes: IP address of Server to which BindID's
apply.
Server Port Number, 2-bytes: port number of Server to which BindID's
apply.
Protocol, 1-byte: protocol type of Server to which BindID's apply.
Kersey Expires September 7, 2006 [Page 14]
Internet-Draft Dynamic Feedback Protocol March 2006
Reserved, 1-byte: all zeros.
Number of Entries, 2-bytes: number of BindID fields being reported in
this message.
Reserved, 2-bytes: all zeros.
BindID Field, 12-bytes: must include one for each Number of Entries
specified.
The format of the BindID Field is:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| BindID | Reserved = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Client Network IP Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Netmask of Client Network |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Kersey Expires September 7, 2006 [Page 15]
Internet-Draft Dynamic Feedback Protocol March 2006
6. Defined Messages
The following message types exist:
+----------------------------------------+
| Message Name | Type Value |
+----------------------------------------+
| Preference Information | 0x0101 |
+----------------------------------------+
| Server State | 0x0201 |
+----------------------------------------+
| DFP Parameters | 0x0301 |
+----------------------------------------+
| BindID Request | 0x0401 |
+----------------------------------------+
| BindID Report | 0x0402 |
+----------------------------------------+
| BindID Change Notify | 0x0402 |
+----------------------------------------+
| Customer Private Use | 0x0500-0x05FF |
+----------------------------------------+
6.1. Preference Information Message
The Preference Information message is sent from the DFP Agent to the
DFP Manger. It is used to report the availability or health (i.e.,
weight) for 0 to 128 Servers. If a DFP Agent does not have any
information to report, it must send this message with the Load TLV
not included. This is to act as an application level keep-alive as
descsribed in Section 5.3.
+--------------------------+
| Signal Header |
+--------------------------+
| Optional Security |
+--------------------------+
| Load |
+--------------------------+
Kersey Expires September 7, 2006 [Page 16]
Internet-Draft Dynamic Feedback Protocol March 2006
6.2. Server State Message
The Server State message is sent from the DFP Manager to the DFP
Agent. It is used to allow the DFP Manager to inform a DFP Agent
what it has decided independently from any status being reported by a
DFP Agent to take a server out-of-service or to place a server back
in-service. The DFP Agent may log this information, but it should
not change its internally stored availability / weight value for any
server reported in this message. Instead, the DFP Agent should
continue to report what it considers its availability of the server.
The availability / status of 0 to 128 real servers may be included in
this message.
+--------------------------+
| Signal Header |
+--------------------------+
| Optional Security |
+--------------------------+
| Load |
+--------------------------+
6.3. DFP Parmaters Message
The DFP Parameters message is used to send configuration information
about the DFP control connection from the DFP Manager to the DFP
Agent. This information allows the DFP Agent to know how to handle
the DFP control connection. Currently the only configuration
information passed is the keep-alive interval as described in
Section 5.3.
+--------------------------+
| Signal Header |
+--------------------------+
| Optional Security |
+--------------------------+
| Keep-alive |
+--------------------------+
6.4. BindID Request Message
The BindID Request message is used by the DFP Manager to request an
updated version of the BindID database from the DFP Agent. Upon
receiving this message, the DFP Agent should respond with BindID
Report messages in which the BindID database is reported, which is
described in Section 5.4. This message contains no data and
therefore it contains no additional TLVs.
Kersey Expires September 7, 2006 [Page 17]
Internet-Draft Dynamic Feedback Protocol March 2006
+--------------------------+
| Signal Header |
+--------------------------+
| Optional Security |
+--------------------------+
6.5. BindID Report Message
The BindID Report message is sent in response to a BindID Request
message. It is never sent autonomously. This message contains a
mapping of BindIDs to client networks, and it is used by the DFP
Agent to report this information to the DFP Manager. A seperate
BindID TLB message should be sent for each DFP Agent's real server
tables. The DFP Agent should send its entire table anytime the
BindID table is requested. When the entire table has been sent (or
there is no table to send), this message should be sent with the
BindID table TLV entries with a zero Server IP address, Server port,
protocol, and number of entries. This indicates there is no more
data to be sent.
+--------------------------+
| Signal Header |
+--------------------------+
| Optional Security |
+--------------------------+
| BindID Table |
+--------------------------+
6.6. BindID Change Notify Message
The BindID Change Notify message is used by a DFP Agent to report
that a change has been made to its BindID database. This
notification gives the DFP Manager the option of requesting a new
copy of the entire table from the DFP Agent. The request and report
messages are described in Section 6.4 and Section 6.5, respectively.
This message contains no additional data and therefore does not
contain any additional TLVs.
+--------------------------+
| Signal Header |
+--------------------------+
| Optional Security |
+--------------------------+
Kersey Expires September 7, 2006 [Page 18]
Internet-Draft Dynamic Feedback Protocol March 2006
7. System Flow
Messages are expected to flow in a certain order at a certain time.
That information is included here.
7.1. Control Connection
Before messages can be sent in either direction, the DFP control
connection must be established. It is the job of the DFP Manager to
establish the control connection to the DFP Agent. Currently the DFP
Agent port used in some SLB device implementations is port 8080. The
DFP Manager port is the next available TCP port that the TCP stack
assigns upon connecting. Of course the implementor can choose any
ports or make ports configurable on either side. If the control
connection is not able to be established, then DFP cannot be used to
report real server availability.
If the control connection is dropped or lost, it is up to the DFP
Manager to re-establish the connection. While the connection is not
available, the DFP Manager must use the default values for the real
servers as configured on the DFP Manager. Once the connection is re-
established, it can begin using the dynamic values sent to it by the
DFP Agent.
7.2. DFP Parameter Messages
The DFP Manager must report changes in configuration to the DFP
Agents. This information allows the DFP Agents to know how to handle
the DFP connection to the manager. Currently the only value that can
be changed is the keep-alive time interval. Note: a keep-alive time
interval of zero means to never time out the connection.
7.3. Status Reporting of Real Servers
The 'Preference Info' message is used to communicate the availability
(weight) of the real server to the DFP Manager. If a DFP Agent does
not have any information to report, it must send this message with
the Load TLV not included. This is intended to be an application
keep-alive message.
7.4. Server Status Updates to DFP Agent
This message is sent from the DFP Manager to the DFP Agent. The
purpose is for the DFP Manager to report any change in status that is
it able to determine from analysis of the flows going through the
device. The DFP Agent should not stop reporting for that real server
when it receives this message. The DFP Agent should only log the
information.
Kersey Expires September 7, 2006 [Page 19]
Internet-Draft Dynamic Feedback Protocol March 2006
7.5. DFP Manager Update Request
The DFP Manager can request for updates to the BindID table to be
sent to it. In order to do this, the DFP Manager would send the
BindID Request Message to the DFP Agent. The DFP Agent will then
provide the information via the BindID Report Message. Both message
types are defined in the 'Defined Messages' section.
7.6. Real Server Updates to DFP Manager
If the DFP Agent needs to update the DFP Manager with the current
status of its BindID table, then it can send the BindID CHange
Notification Message to the DFP Manger. It is then up to the DFP
Manager to request the full table update via the BindID Request
Message.
8. Normative References
[1] Metzger, P. and W. Simpson, "IP Authentication using Keyed MD5",
RFC 1828, August 1995.
Kersey Expires September 7, 2006 [Page 20]
Internet-Draft Dynamic Feedback Protocol March 2006
Author's Address
Curt Kersey
Cisco Systems, Inc.
500 Northridge Road
Suite 800
Atlanta, GA 30350
US
Phone: +1 678 352 2744
Email: eck@cisco.com
URI: http://www.cisco.com/
Kersey Expires September 7, 2006 [Page 21]
Internet-Draft Dynamic Feedback Protocol March 2006
Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Disclaimer of Validity
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Copyright Statement
Copyright (C) The Internet Society (2006). This document is subject
to the rights, licenses and restrictions contained in BCP 78, and
except as set forth therein, the authors retain all their rights.
Acknowledgment
Funding for the RFC Editor function is currently provided by the
Internet Society.
Kersey Expires September 7, 2006 [Page 22]