#
38e65088 |
| 04-Mar-2017 |
renato <renato@openbsd.org> |
Send VPLS MAC withdrawals.
RFC 4762 says that MAC address withdrawal messages can be used to improve convergence time in VPLS networks. This patch makes ldpd send MAC withdrawals whenever a non-pseu
Send VPLS MAC withdrawals.
RFC 4762 says that MAC address withdrawal messages can be used to improve convergence time in VPLS networks. This patch makes ldpd send MAC withdrawals whenever a non-pseudowire interface pertaining to a VPLS goes down. The processing of received MAC withdrawals will be implemented later.
show more ...
|
#
9246985a |
| 04-Mar-2017 |
renato <renato@openbsd.org> |
Implement RFC 5919 (LDP End-of-LIB).
|
#
6702dd25 |
| 04-Mar-2017 |
renato <renato@openbsd.org> |
Implement RFC 6667 (Typed Wildcard FEC for PWid).
|
#
c7c5a728 |
| 04-Mar-2017 |
renato <renato@openbsd.org> |
Implement RFC 5918 (Typed Wildcard FEC).
|
#
3b4c1866 |
| 04-Mar-2017 |
renato <renato@openbsd.org> |
Implement RFC 5561 (LDP Capabilities).
This patch per-se doesn't introduce any useful functionality, but prepares the ground for new enhancements to ldpd (i.e. implementation of new RFCs that make u
Implement RFC 5561 (LDP Capabilities).
This patch per-se doesn't introduce any useful functionality, but prepares the ground for new enhancements to ldpd (i.e. implementation of new RFCs that make use of LDP capabilities).
show more ...
|
#
bd4a767a |
| 03-Mar-2017 |
renato <renato@openbsd.org> |
The PW Status is an unknown TLV.
Without this fix, any LDP speaker that doesn't implement RFC 4447 will shut down the session upon receipt of a PWid Label Mapping (unless the use of the PW-Status TL
The PW Status is an unknown TLV.
Without this fix, any LDP speaker that doesn't implement RFC 4447 will shut down the session upon receipt of a PWid Label Mapping (unless the use of the PW-Status TLV is disabled via configuration).
show more ...
|
#
02a212ee |
| 03-Mar-2017 |
renato <renato@openbsd.org> |
Minor tweaks.
|
#
397583bc |
| 03-Sep-2016 |
renato <renato@openbsd.org> |
Rework the sending of address messages.
* Respect the session's negotiated maximum pdu length and split the sending of our local addresses into multiple messages if necessary;
* Log sent/received
Rework the sending of address messages.
* Respect the session's negotiated maximum pdu length and split the sending of our local addresses into multiple messages if necessary;
* Log sent/received addresses;
* Add new wrappers to send only one address (send_address_single) and to send all addresses of the given address-family (send_address_all). These wrappers create a temporary list of addresses to be sent, and send_address() then acts on this last.
show more ...
|
#
4dcd314e |
| 15-Jul-2016 |
renato <renato@openbsd.org> |
Improve logging of reserved labels.
Print "exp-null" and "imp-null" instead of "0" and "3", for example. Also, remove print_label() and print_pw_type() from ldpctl.c and use the equivalent functions
Improve logging of reserved labels.
Print "exp-null" and "imp-null" instead of "0" and "3", for example. Also, remove print_label() and print_pw_type() from ldpctl.c and use the equivalent functions from ldpd's log.c.
While here, be more paranoid and use UINT32_MAX instead of UINT_MAX for NO_LABEL.
show more ...
|
#
60e1e0e7 |
| 01-Jul-2016 |
renato <renato@openbsd.org> |
More renaming and whitespace cleanup.
No binary change after "strip -s".
|
#
80237bd1 |
| 01-Jul-2016 |
renato <renato@openbsd.org> |
Decrease the initialization FSM timeout.
The previous value of 180 was just too long. If a neighbor get stuck in the initialization FSM for more than 15 seconds, then there's certainly something wro
Decrease the initialization FSM timeout.
The previous value of 180 was just too long. If a neighbor get stuck in the initialization FSM for more than 15 seconds, then there's certainly something wrong and the session should be dropped.
A potential case of a neighbor getting stuck in the initialization FSM is when both the local and the remote LSRs disable the LDPv4 GTSM negotiation and there's a mismatch in their GTSM configuration (one is enabled for GTSM while the other is not).
In this case, a smaller timeout allows for a quicker recovery of the session when the configuration is fixed on either side.
show more ...
|
#
d7525efd |
| 01-Jul-2016 |
renato <renato@openbsd.org> |
Rename hello flags to keep consistent with the rest of the code.
Flag constants should start with F_.
|
#
5ff72af8 |
| 01-Jul-2016 |
renato <renato@openbsd.org> |
Add GTSM support (RFC 6720).
This also finishes the missing bits from our RFC 7552 implementation because GTSM is mandatory for LDPv6.
To avoid any kind of interoperability problems, I included a f
Add GTSM support (RFC 6720).
This also finishes the missing bits from our RFC 7552 implementation because GTSM is mandatory for LDPv6.
To avoid any kind of interoperability problems, I included a few knobs to enable/disable GTSM on a per-address-family and per-neighbor basis. Cisco's LDPv6 implementation, for instance, doesn't support GTSM.
"reads good" claudio@
show more ...
|
#
5dc9330a |
| 23-May-2016 |
renato <renato@openbsd.org> |
Update copyright information.
|
#
5411bbb6 |
| 23-May-2016 |
renato <renato@openbsd.org> |
Remove superfluous includes.
|
#
a8c39dc0 |
| 23-May-2016 |
renato <renato@openbsd.org> |
Add support for IPv6 (RFC 7552).
This includes: * Full compliance to RFC 7552; * Support for MD5 on LDPov6 sessions; * Support for pseudowires over IPv6 LSPs (we're probably the world's first impl
Add support for IPv6 (RFC 7552).
This includes: * Full compliance to RFC 7552; * Support for MD5 on LDPov6 sessions; * Support for pseudowires over IPv6 LSPs (we're probably the world's first implementation doing this); * Support for the IPv6 explicit-null label; * Knob to specify the prefered address-family for TCP transport connections; * Knob to use cisco non-compliant format to send and interpret the Dual-Stack capability TLV.
show more ...
|
#
3de94509 |
| 23-May-2016 |
renato <renato@openbsd.org> |
Fix mess caused by my commit script.
I screwed up everything... trying to fix now.
|
#
1d5e7f63 |
| 23-May-2016 |
renato <renato@openbsd.org> |
Minor adjustments in l2vpn code.
* Define a new constant for the default pseudowire type; * On l2vpn_new(), initialize the l2vpn lists with LIST_NEW (cosmetic because the struct was calloc'ed); *
Minor adjustments in l2vpn code.
* Define a new constant for the default pseudowire type; * On l2vpn_new(), initialize the l2vpn lists with LIST_NEW (cosmetic because the struct was calloc'ed); * Add a const qualifier to the second parameter of l2vpn_find(); * Remove l2vpn_if_del() and use just free() instead.
show more ...
|
#
cf09440f |
| 23-May-2016 |
renato <renato@openbsd.org> |
Rename a few constants to avoid confusion.
In ldpd we have the map structure, which is used to represent a label message, and the fec structure, used to store FECs in the LIB.
As of now, ldpd suppo
Rename a few constants to avoid confusion.
In ldpd we have the map structure, which is used to represent a label message, and the fec structure, used to store FECs in the LIB.
As of now, ldpd supports two type of FECs: * IPv4 prefix (FEC_TYPE_IPV4); * PWID (FEC_TYPE_PWID).
For the label messages, the following contants were being used: * FEC_WILDCARD; * FEC_PREFIX (IPv4 or IPv6); * FEC_PWID.
Since these contants have similar names to the previous ones, rename them to: * MAP_TYPE_WILDCARD; * MAP_TYPE_PREFIX; * MAP_TYPE_PWID.
show more ...
|
#
3689c22f |
| 23-May-2016 |
renato <renato@openbsd.org> |
Remove unused code.
|
#
9277622b |
| 23-May-2016 |
renato <renato@openbsd.org> |
Improve the parser of TCP/session packets.
Add more safeguards against malformed packets and fix existing ones. Also, rename a few variables and constants to match their real meaning. For example, r
Improve the parser of TCP/session packets.
Add more safeguards against malformed packets and fix existing ones. Also, rename a few variables and constants to match their real meaning. For example, rename gen_msg_tlv() to gen_msg_hdr() because this function generates an LDP header, not a TLV.
Finally, clean-up all the send_* functions so they all follow the same pattern.
show more ...
|
#
69eaa65a |
| 23-May-2016 |
renato <renato@openbsd.org> |
Validate received hello holdtime and keepalive time.
Refuse a keepalive time of zero because it's invalid. For the hello holdtime, zero is valid and means infinite.
Additionally, refuse values smal
Validate received hello holdtime and keepalive time.
Refuse a keepalive time of zero because it's invalid. For the hello holdtime, zero is valid and means infinite.
Additionally, refuse values smaller than three for both the keepalive timer and the hello holdtime. The keepalive/hello interval is calculated as one third of their holdtime, which means that if the holdtime is one or two, the calculated interval would be zero using integer arithmetic.
If anyone wants to use such a small holdtime, he or she should use BFD instead.
show more ...
|
#
33f6ccfe |
| 23-May-2016 |
renato <renato@openbsd.org> |
Move some code around.
This patch doesn't introduce any logical change.
|
#
6399cec1 |
| 21-Jul-2015 |
renato <renato@openbsd.org> |
VPLS signaling support.
This patch introduces full support for pseudowire signaling in ldpd(8), including Control Word and Status TLV negotiation.
As of now it's not possible to configure a VPWS, b
VPLS signaling support.
This patch introduces full support for pseudowire signaling in ldpd(8), including Control Word and Status TLV negotiation.
As of now it's not possible to configure a VPWS, but the signaling is the same. In the future, when VPWS support is available in the kernel, ldpd(8) can be extended to support VPWS with only a few modifications.
Limitations: * No support for FEC 129, only FEC 128 (more widely deployed); * No support for group withdraws (not widely deployed); * No support for MAC withdraws (not widely deployed).
Related RFCs: * RFC 3916: Requirements for Pseudo-Wire Emulation Edge-to-Edge (PWE3) * RFC 3985: Pseudo Wire Emulation Edge-to-Edge (PWE3) Architecture * RFC 4385: Pseudowire Emulation Edge-to-Edge (PWE3) Control Word for Use over an MPLS PSN * RFC 4446: IANA Allocations for Pseudowire Edge to Edge Emulation (PWE3) * RFC 4447: Pseudowire Setup and Maintenance Using the Label Distribution Protocol (LDP) * RFC 4448: Encapsulation Methods for Transport of Ethernet over MPLS Networks * RFC 4905: Encapsulation Methods for Transport of Layer 2 Frames over MPLS Networks * RFC 4906: Transport of Layer 2 Frames Over MPLS
ok claudio@
show more ...
|
#
cf483f25 |
| 19-Jul-2015 |
renato <renato@openbsd.org> |
Rework label mapping algorithms to be more in line with the RFC.
This patch presents a thoroughly review of the label mapping algorithms. Most of the changes are minor bug fixes in the handling of r
Rework label mapping algorithms to be more in line with the RFC.
This patch presents a thoroughly review of the label mapping algorithms. Most of the changes are minor bug fixes in the handling of received label messages.
Additional improvements: * Add a few more references to the Appendix A of the RFC5036 ("LDP Label Distribution Procedures") into the code; * Add full multipath support; * Send label withdraws when appropriate; * Add label withdraw/release wildcard support.
NOTE: As a result of implementing only the "Liberal Label Retention" and "Downstream Unsolicited" modes, we will never send a label request ("Request Never"). And that means that we can ignore the following notification messages: "Label Request Aborted", "No Label Resources", "No Route" and "Label Resources Available". The following algorithms mentioned in the RFC can also be ignored: "Timeout of Deferred Label Request", "Detect Local Label Resources Have Become Available" and "Receive Label Abort Request".
Now, considering that we only support one combination of all modes of operation, we can say that we have an almost complete implementation of the protocol.
ok claudio@
show more ...
|