LDP协议笔记.docx
《LDP协议笔记.docx》由会员分享,可在线阅读,更多相关《LDP协议笔记.docx(10页珍藏版)》请在冰豆网上搜索。
LDP协议笔记
1LDP标签分发协议——rfc5036提取笔记
2014年09月09日09:
49:
32
阅读数:
2160
FECs
FECs:
精确的指出哪个包被映射到每个LSP。
一个LSP被多个FEC元素共享,LSP将被终止。
FEC定义一种单独的FEC类型,地址前缀。
LDPID:
:
LDP发现
直连——非直连,基本发现——扩展发现
基本发现:
LinkHello,目的地址:
"allroutersonthissubnet"groupmulticastaddress
扩展发现:
TargetedHello,目的地址:
specificaddress
创建和维护LDP会话
创建:
传输创建和会话初始化。
传输创建
1,标签空间交换还没有建立会话。
它试图两者建立TCP连接。
两者通过TransportAddress选项TLV向对方通告一个地址。
2,两者比较A1,A2来决定谁是主动方,谁是被动方。
A1,A2不在同一个地址族,会话不可建立。
地址用无符号整型来比较A1,A2。
大的为主动方。
3,如果LSR1为主动,它试图创建TCP连接。
如果LSR1为被动,它等待LDP TCP连接的建立。
会话初始化
通过LDP初始化消息协商会话参数。
协商参数包括:
LDP协议版本,标签发布方式,计时器值,
VPI/VCI,标签控制ATM,LDCI标签帧的延时。
成功的协商就是完成了会话的创建。
LSR1端的角度。
连接创建完,LSR1以主动的角色通过发送Initializationmsg给LSR2初始化。
如果LSR1是被动,等待LSR2初始化参数的协商。
LSR1扮被动角色。
1,LSR1接收Initializationmsg,它试图使一个标识符(PDU携带)和一个hello邻居相匹配。
2,如果匹配,该邻接指定本地会话标签空间。
然后LSR1检查参数是否可接受,
如果可接受,LSR1用初始化消息提出期望被使用的参数和一个KeepAlive消息来示意LSR2参数的接收。
如果不接受,LSR1通过发送ErrorNotification回应,关闭TCP连接。
3,如果不匹配,发送ErrorNotification,关闭TCP连接。
4,如果LSR1接受一个KeepAlive响应它的初始化消息。
该会话isoperational。
5,如果LSR1接受ErrorNotification,LSR1关闭会话。
LSR2扮主动角色。
1,如果LSR1收到ErrorNotification,LSR1关闭TCP连接。
2,如果LSR1收到一个初始化消息,它检查会话参数是否可接受,
如果可接受,回应KeepAlive消息;
如果不可接受,LSR1发送ErrorNotification,关闭TCP连接。
3,如果LSR1接收一个KeepAlive消息,LSR2接受被推荐的会话参数。
4,LSR1收到初始化消息和KeepAlive消息,会话isoperational。
PDULDP头部
0 1 2 3
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | PDULength |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LDPIdentifier |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
TLV编码:
2字节:
14bit指定类型,2bit指定行为;2字节:
长度
一切出现在LDPPDU中的都可以以TLV格式编码。
WildcardFECElement
仅仅被用于LabelWithdrawandLabelReleasemsg
FEC
0 1 2 3
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0|0|FEC(0x0100) | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| FECElement1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| FECElementn |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
PrefixFECElementvalueencoding:
0 1 2 3
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Prefix
(2) | AddressFamily | PreLen |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Prefix |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
FEC的处理:
地址族不支持或FEC元素类型不能被解码。
发送ErrorNotification
LabelTLV
标签TLVs:
编码标签的。
GenericLabelTLV :
以太网和PPP
ATMLabelTLV :
ATM
FrameRelayLabelTLV :
帧中继链路
通常第一个:
0 1 2 3
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0|0|GenericLabel(0x0200) | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Label |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
encodelabels:
label值为20位。
略 AddressListTLV(inAddressandAddressWithdrawmsg.)
略 HopCountTLV
略 PathVectorTLV
StatusTLV(Notificationmessages)
0 1 2 3
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|U|F|Status(0x0300) | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| StatusCode |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MessageID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MessageType |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
其中StatusCode为:
0 1 2 3
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|E|F| StatusData |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
LDP消息
0 1 2 3
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|U| MessageType | MessageLength |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MessageID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| MandatoryParameters |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| OptionalParameters |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Notification消息的处理过程。
1,LSR遇到请求通告给对等体咨询和error的这样条件,给对等体发送一个包含有关那个条件的TLV的消息
如果这个条件是一个fatal致命,StatusCode就会指明。
当发送完一个Notification消息之后, LSR应该终止对话,关闭TCP连接,撤销所有会话状态,包括绑定的FCE。
2,LSR收到Notification,则关闭。
。
。
。
3,当LSR收到一个shutdownmsg应该传输一个Shutdown消息,然后关闭传输连接。
1,MalformedPDUorMessage
收到的PDU畸形如果:
接收者不知道LDPID或和自己无关,这就是一个fatalerror。
标记为BadLDPIdentifierStatusCode.
接收者不支持该协议版本或会话建立时版本未能协商,这就是一个fatalerror。
BadProtocolVersionStatusCode.
PDU的长度太长或太短,这就是一个fatalerror。
BadPDULengthStatusCode.
LDP消息畸形如果:
MessageTypeis<0x8000 UnknownMessageTypeStatusCode.
MessageTypeis>=0x8000 silentlydiscarded
TheMessageLengthistoolarge BadMessageLengthStatusCode.
TheMessageLengthistoosmall BadMessageLengthStatusCode.
missingoneormoreMandatoryParameters. MissingMessageParametersStatusCode.
2,UnknownorMalformedTLV
收到的LDP消息中的TLV畸形如果:
TheTLVLengthistoolarge BadTLVLengthStatusCode.
theTLVtypeis<0x8000 UnknownTLVStatusCode.
theTLVtypeis>=0x8000 silentlydropped.
TheTLVValueismalformed MalformedTLVValueStatusCode.(接收者不能够解码该TLV值)
3,SessionKeepAliveTimerExpiration
KeepAliveTimerExpiredStatusCode.
4,UnilateralSessionShutdown
发完Notification,LSR会立即终止该会话 ShutdownStatusCode.
5,InitializationMessageEvents
初始化协商可能会失败,如果初始化消息中的会话参数不接受。
StatusCode依赖Sections"InitializationMessage".
6,EventsResultingfromOtherMessages
InternalErrorStatusCode
Hello消息
0 1 2 3
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0| Hello(0x0100) | MessageLength |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MessageID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| CommonHelloParametersTLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OptionalParameters |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
CommonHelloParametersTLV
0 1 2 3
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0|0|CommonHelloParms(0x0400)| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HoldTime |T|R|Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
T 0:
LinkHello 1:
TargetedHello.
R 0:
无请求 1:
接收者周期性发送TargetedHellos给该Hello的源
扩展发现中
1:
检查是否它被配置发送TargetHellos给源。
0:
忽略该请求。
Reserved =0
OptionalParameter Type Length
IPv4TransportAddress 0x0401 4
Configuration 0x0402 4
SequenceNumber
IPv6TransportAddress 0x0403 16
Hello消息的处理
推荐Hello传输间隔至多为holdtime的1/3。
LSR处理接受到的LDPHello:
1,检查Hello是否可接受的,决定的标准是:
是否独立实现。
2,如