📄 pim_testsuite.tex
字号:
\end{verbatim} \item In Part B, after TR1 is started, and after up to \verb=Triggered_Hello_Delay= ({\PimsmTriggeredHelloDelay}), the neighbor state information in the RUT must contain TR1:\begin{verbatim}Xorp> show pim neighbors Interface DRpriority NeighborAddr V Mode Holdtime Timeoutdc1 1 10.2.0.2 2 Sparse 105 103\end{verbatim} \item In Part C, after TR1 is started, and after up to \verb=Triggered_Hello_Delay= ({\PimsmTriggeredHelloDelay}), the neighbor state information in the RUT must contain TR1 with protocol version of 15 (0xF).\begin{verbatim}Xorp> show pim neighbors Interface DRpriority NeighborAddr V Mode Holdtime Timeoutdc2 1 10.3.0.1 15 Sparse 105 103\end{verbatim} \item In Part D, after TR1 is started and after it sends PIM messages containing a Type field of 0xF, the RUT should log the messages with this unrecognized Type field:\begin{verbatim}[ 2002/08/17 22:45:20 WARNING test_pim.rut PIM ] RX PIM_type_unknown from10.3.0.2 to 224.0.0.13: message type (15) is unknown\end{verbatim}\end{itemize}\para{Possible Problems:}\begin{itemize} \item Earlier protocol specification (RFC 2117), have ``Addr length'' field in place of the ``Reserved'' field. Therefore, the test in Part B may not be appropriate for such implementations. \item At the moment of writing, the lastest PIM-SM specification does not describe the behavior if a PIM message is received with protocol version that is larger than the implemented one. (TODO: if the specification later is modified to include that behavior, remove this bullet). Hence, in Part C, it is possible that an implementation may silently ignore all messages with protocol version larger than \verb=PIM_SM_version_default= ({\PimsmVersionDefault}). As a result, the RUT will not see TR1 as a neighbor. \item In Part D, the RUT may not log events such as receiving of a message with unrecognized Type field, because the logging is not described in the spec.\end{itemize}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\newpage\section{Holdtime Option}\para{Purpose:}Verify that a router properly sends and receives Hello messages with Holdtimeoption.\para{References:}\begin{itemize} \item draft-ietf-pim-sm-v2-new-05 -- Sections 4.3.1 and 4.10.2\end{itemize}\para{Discussion:}PIM capable routers periodically send Hello messagesmessages to the ALL-PIM-ROUTERS address (224.0.0.13 for IPv4,and ``ff02::d'' for IPv6). If a PIM router does not receive a Hello messagefrom a neighbor for some amount of time, it is assumed that the neighbor (orthe connectivity to it) is not operational, therefore the neighbor istimed-out. A Hello message may contain a Holdtime option that specifies theamount of time (in seconds) a router must keep the neighbor reachable.If a Hello message does not contain a Holdtime option, the default valueof \verb=Default_Hello_Holdtime= ({\PimsmDefaultHelloHoldtime})is assumed. If a Hello message contains a Holdtime option with value of0xFFFF, then only one Hello message should be sent, and the router-recipientof the message should not time-out the router-originator.\para{Test Setup:}Connect the RUT and TR1 according to Figure~\ref{fig:pim_test_2_4_holdtime_option}.Enable PIM-SM on both the RUT and TR1.\begin{figure}[htbp] \begin{center} \includegraphics[scale=0.8]{figs/pim_test_2_4_holdtime_option} \caption{Holdtime option test setup} \label{fig:pim_test_2_4_holdtime_option} \end{center}\end{figure}\para{Procedure:}\subpara{Part A: Transmission of a PIM Hello message containing a Holdtimeoption.}\begin{enumerate} \item Start the RUT. \item Observe the messages transmitted by the RUT for at least \verb=Triggered_Hello_Delay= + 3 * \verb=Hello_Holdtime= (\ie ({\PimsmTriggeredHelloDelay}) + 3 * ({\PimsmHelloHoldtime})). \item Stop the RUT. \item Observe the messages transmitted by the RUT for at least \verb=Triggered_Hello_Delay= + 3 * \verb=Hello_Holdtime= (\ie ({\PimsmTriggeredHelloDelay}) + 3 * ({\PimsmHelloHoldtime})). \item Change the configuration value of \verb=Hello_Holdtime= and repeat.\end{enumerate}\subpara{Part B: Transmission of a PIM Hello message containing a Holdtimeoption with value of 0xFFFF.}The procedure is same as in Part A, except that the RUT is configured withHoldtime option value of 0xFFFF. Note that the amount of time to observe thetransmitted messages should be same as in Part A.\subpara{Part C: Reception of a PIM Hello message containing a Holdtimeoption.}\begin{enumerate} \item Start the RUT. \item Observe the neighbor state information in the RUT for at least \verb=Triggered_Hello_Delay= ({\PimsmTriggeredHelloDelay}). \item Configure TR1 such that its Hello messages would contain a Holdtime option with the default value of \verb=Hello_Holdtime= ({\PimsmHelloHoldtime}). \item Start TR1. \item Observe the neighbor state information in the RUT for at least \verb=Triggered_Hello_Delay= ({\PimsmTriggeredHelloDelay}). \item Stop TR1. \item Observe the neighbor state information in the RUT for at least \verb=Hello_Holdtime= ({\PimsmHelloHoldtime}). \item Change the configuration value of \verb=Hello_Holdtime= in TR1 and repeat.\end{enumerate}\subpara{Part D: Reception of a PIM Hello message containing a Holdtime optionwith value of 0xFFFF.}The procedure is same as in Part C, except that in Step 3 the Hello messageoriginated by TR1 must be configured contain a Holdtime option with value of0xFFFF.\subpara{Part E: Reception of a PIM Hello message that does not contain aHoldtime option.}The procedure is same as in Part C, except that in Step 3 the the Hello messageoriginated by TR1 must be configured to exclude the Holdtime option.\para{Observable Results:}\subpara{Part A:}\begin{itemize} \item After the RUT is started, the first Hello message should be transmitted no later than \verb=Triggered_Hello_Delay= ({\PimsmTriggeredHelloDelay}). \item After the first Hello message, there should be one Hello message transmitted each \verb=Hello_Period= ({\PimsmHelloPeriod}). Each Hello message should contain a Holdtime option with default value of \verb=Hello_Holdtime= ({\PimsmHelloHoldtime}). \item Right after the RUT is stopped, there should be a Hello message transmitted with Holdtime option value of 0. \item After the Hello message with Holdtime option value of 0, no other Hello messages should be transmitted. \item The results of repeating the test with different value of \verb=Hello_Holdtime= should be similar, except that the Hello messages should be transmitted every 1/3th of the new \verb=Hello_Holdtime=, and the Holdtime Option value in the Hello messages should be the new \verb=Hello_Holdtime=.\end{itemize}\subpara{Part B:}\begin{itemize} \item After the RUT is started, the first Hello message should be transmitted no later than \verb=Triggered_Hello_Delay= ({\PimsmTriggeredHelloDelay}). This message should contain a Holdtime option with value of 0xFFFF. \item After the first Hello message, there should be no one Hello messages transmitted before the RUT is stopped. \item Right after the RUT is stopped, there should be a Hello message transmitted with Holdtime option value of 0. \item After the Hello message with Holdtime option value of 0, no other Hello messages should be transmitted.\end{itemize}\subpara{Part C:}\begin{itemize} \item Before TR1 is started, the neighbor state information in the RUT should show no PIM neighbors:\begin{verbatim}Xorp> show pim neighborsInterface DRpriority NeighborAddr V Mode Holdtime Timeout\end{verbatim} \item After TR1 is started, and after up to \verb=Triggered_Hello_Delay= ({\PimsmTriggeredHelloDelay}), the neighbor state information in the RUT must contain TR1. The Holdtime information about TR1 must match the Holdtime value in the Hello messages by TR1:\begin{verbatim}Xorp> show pim neighborsInterface DRpriority NeighborAddr V Mode Holdtime Timeoutdc1 1 10.2.0.2 2 Sparse 105 103\end{verbatim} \item After TR1 is stopped, and after it sends a Hello message with Holdtime option value of 0, the RUT must immediately expire it. The neighbor state information in the RUT should show no PIM neighbors:\begin{verbatim}Xorp> show pim neighborsInterface DRpriority NeighborAddr V Mode Holdtime Timeout\end{verbatim} \item The results of repeating the test with different value of \verb=Hello_Holdtime= should be similar, except that the Holdtime value in the state information in the RUT about TR1 should match the chosen value of the \verb=Hello_Holdtime=.\end{itemize}\subpara{Part D:}The observed results should be same as in Part C, except thatafter the first Hello message from TR1 is received, the neighbor stateinformation in the RUT must show that the TR1 would never be expired:\begin{verbatim}Xorp> show pim neighbors Interface DRpriority NeighborAddr V Mode Holdtime Timeoutdc1 1 10.3.0.2 2 Sparse 65535 None\end{verbatim}\subpara{Part E:}The observed results should be same as in Part C, except thatthe RUT assumes that the Holdtime value about TR1 is always equal to thedefault value of \verb=Hello_Holdtime= ({\PimsmHelloHoldtime}).\para{Possible Problems:}None.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\newpage\section{DR Priority Option}\para{Purpose:}Verify that a router properly sends and receives Hello messages with DRPriority option.\para{References:}\begin{itemize} \item draft-ietf-pim-sm-v2-new-05 -- Sections 4.3.1, 4.3.2, and 4.10.2\end{itemize}\para{Discussion:}One of the PIM routers on each LAN, the Designated Router (DR), needs to acton behalf of the rest of the routers and directly connected hosts with respectto the PIM protocol. The DR election considers the DR priority of eachPIM router and its IP address: numerically larger DR priority is alwaysbetter, with a numerically larger IP address used as a tie-break. Each PIMrouter includes its DR priority in the DR Priority option of the Hellomessages it originates. If there is at least one PIM router on a LAN that doesnot include the DR Priority option in its Hello messages, then the DR electionprocess considers only the IP addresses of the routers.\para{Test Setup:}Connect the RUT and TR1 according to Figure~\ref{fig:pim_test_2_5_dr_priority_option}.Enable PIM-SM on both the RUT and TR1.\begin{figure}[htbp] \begin{center} \includegraphics[scale=0.8]{figs/pim_test_2_5_dr_priority_option} \caption{DR priority option test setup} \label{fig:pim_test_2_5_dr_priority_option} \end{center}\end{figure}\para{Procedure:}\subpara{Part A: The RUT has a numerically larger IP address than TR1.}\begin{enumerate} \item Start the RUT with default DR priority of 1, and observe the DR state information in the RUT. \item Start TR1 with default DR priority of 1, and observe the DR state information in the RUT. \item Change the DR priority of TR1 to 2, and observe the DR state information in the RUT. \item Change the DR priority of TR1 to 0, and observe the DR state information in the RUT. \item Change the DR priority of TR1 to 1, and observe the DR state information in the RUT. \item Change the DR priority of the RUT to 2, and observe the DR state information in the RUT. \item Change the DR priority of the RUT to 0, and observe the DR state information in the RUT. \item Change the DR priority of the RUT to 1, and observe the DR state information in the RUT.\end{enumerate}\subpara{Part B: The RUT has a numerically smaller IP address than TR1.}The procedure is same as in Part A, except that TR1 has a numerically smallerIP address than TR1.\para{Observable Results:}\subpara{Part A:}\begin{enumerate} \item After the RUT is started with default DR priority of 1, it should be the DR for LAN1:\begin{verbatim}Xorp> show pim interface dc2Interface State Mode V PIMstate Priority DRaddr Neighborsdc2 UP Sparse 2 DR 1 10.2.0.2 0\end{verbatim} \item After TR1 is started with default DR priority of 1, the RUT should be still the DR for LAN1:\begin{verbatim}Xorp> show pim interface dc2Interface State Mode V PIMstate Priority DRaddr Neighborsdc2 UP Sparse 2 DR 1 10.2.0.2 1\end{verbatim} \item After the DR priority of TR1 is increased to 2, TR1 should become the DR for LAN1. The DR state information in the RUT should show that the RUT is not the DR anymore:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -