<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AlvinJ.NET &#187; Cisco tech</title>
	<atom:link href="http://alvinj.net/category/cisco-tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://alvinj.net</link>
	<description>Tech-Life</description>
	<lastBuildDate>Wed, 09 Jun 2010 08:54:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Config Cisco IOS Port forwarding（静态端口映射）</title>
		<link>http://alvinj.net/2010/06/09/config-cisco-ios-port-forwarding%ef%bc%88%e9%9d%99%e6%80%81%e7%ab%af%e5%8f%a3%e6%98%a0%e5%b0%84%ef%bc%89/</link>
		<comments>http://alvinj.net/2010/06/09/config-cisco-ios-port-forwarding%ef%bc%88%e9%9d%99%e6%80%81%e7%ab%af%e5%8f%a3%e6%98%a0%e5%b0%84%ef%bc%89/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 08:50:11 +0000</pubDate>
		<dc:creator>Alvin.J</dc:creator>
				<category><![CDATA[Cisco tech]]></category>

		<guid isPermaLink="false">http://alvinj.net/2010/06/09/config-cisco-ios-port-forwarding%ef%bc%88%e9%9d%99%e6%80%81%e7%ab%af%e5%8f%a3%e6%98%a0%e5%b0%84%ef%bc%89/</guid>
		<description><![CDATA[NAT overload（PAT）在进行地址转换时会为转换后的IP包随机分配一个端口，这也就造成了地址转换后IP数据包中源端口的不确定性了，配置PortForwarding（静态端口映射）可以弥补这一缺陷。更多关于PortForwarding的知识可以在Google上找到，或者在本站的文章：“DD-WRT PortForwarding配置及其作用”一文中了解到。
这项特性在绝大多数具有NAT功能的路由器上都可以配置，在cisco IOS上可以很简单地完成端口映射的配置，以我遇到的情况为例：
一个公司使用一台2621xm路由器作为网关通过ADSL上网，并在网关上启用PAT，但内网有一个监控摄像头需要被外网访问，并且需要通过特定的端口实现。所以这里有必要为监控摄像头所监听的端口进行静态的端口映射。先给出重点配置：
interface FastEthernet0/0
description LAN
ip address 192.168.1.1 255.255.255.0
ip access-group upload_flow in
ip nat inside

interface FastEthernet0/1
description WAN
no ip address
pppoe enable group global
pppoe-client dial-pool-number 1
no cdp enable
interface Dialer0
ip address negotiated
ip mtu 1492
 ip nat outside
 encapsulation ppp
ip tcp adjust-mss 1452
dialer pool 1
dialer-group 1
no snmp trap link-status
ppp pap sent-username xxxxx  password 0 xxxxxx
ip route 0.0.0.0 0.0.0.0 Dialer0
ip nat [...]]]></description>
			<content:encoded><![CDATA[<p>NAT overload（PAT）在进行地址转换时会为转换后的IP包随机分配一个端口，这也就造成了地址转换后IP数据包中源端口的不确定性了，配置PortForwarding（静态端口映射）可以弥补这一缺陷。更多关于PortForwarding的知识可以在Google上找到，或者在本站的文章：“<a href="http://alvinj.net/2010/02/07/dd-wrt-portforwarding%e9%85%8d%e7%bd%ae%e5%8f%8a%e5%85%b6%e4%bd%9c%e7%94%a8/">DD-WRT PortForwarding配置及其作用</a>”一文中了解到。</p>
<p>这项特性在绝大多数具有NAT功能的路由器上都可以配置，在cisco IOS上可以很简单地完成端口映射的配置，以我遇到的情况为例：</p>
<p>一个公司使用一台2621xm路由器作为网关通过ADSL上网，并在网关上启用PAT，但内网有一个监控摄像头需要被外网访问，并且需要通过特定的端口实现。所以这里有必要为监控摄像头所监听的端口进行静态的端口映射。先给出重点配置：</p>
<p>interface FastEthernet0/0<br />
description LAN<br />
ip address 192.168.1.1 255.255.255.0<br />
ip access-group upload_flow in<br />
<span style="color: #ff8040;">ip nat inside<br />
</span></p>
<p>interface FastEthernet0/1<br />
description WAN<br />
no ip address<br />
pppoe enable group global<br />
pppoe-client dial-pool-number 1<br />
no cdp enable</p>
<p>interface Dialer0<br />
ip address negotiated<br />
ip mtu 1492<br />
<span style="color: #ff8040;"> ip nat outside<br />
</span> encapsulation ppp<br />
ip tcp adjust-mss 1452<br />
dialer pool 1<br />
dialer-group 1<br />
no snmp trap link-status<br />
ppp pap sent-username xxxxx  password 0 xxxxxx</p>
<p>ip route 0.0.0.0 0.0.0.0 Dialer0</p>
<p><span style="color: #ff8040;">ip nat inside source list 1 interface Dialer0 overload<br />
ip nat inside source static tcp 192.168.1.234 23 interface Dialer0 3011</span></p>
<p>上面的配置可以看出，f0/0被定义为nat inside，连接内部网络。dialer 0接口被定义为nat outside</p>
<p>其中：<span style="color: #ff8040;">ip nat inside source list 1 interface Dialer0 overload  <span style="color: #000000;">这句的意思是匹配ACL 1将内部网络地址转换为Dialer 0接口的地址，并且是进行PAT。</span></span></p>
<p><span style="color: #ff8040;">ip nat inside source static tcp 192.168.1.19 800 interface Dialer0 800</span></p>
<p>这句才是端口映射中的重点，其意思是，对于来自内网原地址是192.168.1.19 端口号为800的IP包，静态地将其源地址和端口号转换为Dialer0的地址 和800源端口。而更重要的是，这句话还有另一种含义！对于来自dialer0，目的端口为800的数据包静态地转换为192.168.1.19 目的端口也为800。这种IP、传输层协议、端口的组合也被称为套接字（socket）。你也可以认为静态端口映射是将一个外网的端口静态映射为内网某个IP与端口的组合（套接字），当路由器从outside口收到目的端口为800的包时，就静态将其目的地址转换为192.168.1.19:800，而来自inside口的源地址为192.168.1.19:800的包，将其源地址静态的转换为dialer 0的地址，源端口也设置为所设置的端口800。</p>
<p>很简单但很实用的一个技术，这也是非常基础的网络技术，但有不少人还是不会配置，所以特意发上来给有需要的人看。</p>
]]></content:encoded>
			<wfw:commentRss>http://alvinj.net/2010/06/09/config-cisco-ios-port-forwarding%ef%bc%88%e9%9d%99%e6%80%81%e7%ab%af%e5%8f%a3%e6%98%a0%e5%b0%84%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>MPLS introducing Part.2</title>
		<link>http://alvinj.net/2010/04/15/mpls-introducing-part-2/</link>
		<comments>http://alvinj.net/2010/04/15/mpls-introducing-part-2/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 14:09:54 +0000</pubDate>
		<dc:creator>Alvin.J</dc:creator>
				<category><![CDATA[Cisco tech]]></category>
		<category><![CDATA[MPLS]]></category>

		<guid isPermaLink="false">http://alvinj.net/2010/04/15/mpls-introducing-part-2/</guid>
		<description><![CDATA[这些天一直在忙着准备面试，没能抽空出来更新一下，还好，笔试通过了，下星期一还有一次面试，希望可以通过吧！今天原以为出去的，结果还没出门就下起了大雨，趁有空就写一下MPLS introducing的第二部分吧。
MPLS是怎样工作的？
MPLS在转发数据包时使用了FEC（Forwarding Equivalence Class，转发等价类）这一概念，转发等价类是一组或者一系列沿相同路径转发的，且都按照相同的规则进行交换的数据流，属于同一个FEC的所有报文都使用相同的标签，需要注意，并不是所有拥有相同标签的报文都属于同一个FEC。所有运行MPLS的路由器（LSR、LER）为每一个FEC分配标签，并且使用标签分发协议（如LDP ，Label Distribution Protocol）把标签跟FEC的捆绑关系发送给邻居。最终， 某个FEC会在该MPLS区域内形成一条LSP（Label Switched path）。
一个Packet可能起源于MPLS区域的外部，从MPLS区域的边缘路由器进入，也有可能是起源于内部，这里假设Packet起源于外部。当入口路由器收到一个Packet时，它将会根据FIB表和LFIB表决定下一跳、为这个Packet打上一个或者多个的标签（当然可能因为PHP或者其他原因也有可能不打标签，以后再探讨）。打上标签的Packet被发送到下一条路由器（下游）。当下游路由器收到该Packet，它会检查Packet中的顶层标签，然后根据LFIB（Label Forward Information Base）确定对标签实施哪种操作（可能是交换、弹出或者添加标签等）和决定Packet的下一跳。
在经过LSP中的所有LSR之后，数据包最终到达LSP的末端，这时根据PHP机制，一般来说到达MPLS网络边缘的Packet应该不带标签以IP报文的形式发给出口路由器，然后出口路由器对Packet进行常规的IP查找和交换。但根据MPLS应用的不同，Packet到达最后一跳路由器时还可能包含标签（如显式空），这时就不得不为数据包进行两次查找了（题外话）。
下面是一个例子：
 
1. R1通过IGP通告了前缀10.10.10.0/24，这里假设R1是去往该子网的唯一路径；
2. 一个目的地为10.10.10.1的IP Packet进入R4（LER）；
3. R4会查找FIB和LFIB（cisco IOS中只需对CEF进行查找即可），确定下一跳为R3，然后为Packet压入一个由R3为10.10.10.0这一FEC分配的标签L4；
4. R3从R4收到这一Packet查看二层报头，发现这是一个带标签的报文，于是查看LFIB表，将L4的标签交换为由R3分配的标签L3，进而发给R2；
5. 同样地，R2收到Packet并确认其为带标签报文，查找LFIB表，对标签进行操作，这里是典型的例子，R2作为LSP的倒数第二跳，R1为FEC分配了隐式空标签3并传给R2，但R2并不会把这个标签值为3的标签压入报文，而是采取弹出一层标签的行为。而在这个例子中只有一层报文，所以标签被弹出后，就露出了原来的IP报文，这个Packet最终被R2以IP报文的形式发给了R1，这样当R1接收到Packet之后只需进行IP查找就可以确定Packet的去向，这也就是MPLS中的PHP机制。
6. R1从R2收到IP Packet，查看IP头，并转发报文，Packet顺利穿越MPLS网络并到达目的地！
由此可以体现出的好处就是，MPLS区域内的路由器可以设计成由此至终都使用标签作为转发依据，因此区域内的LSR根本不用理会标签以后的内容是什么，这有利于运营商使用MPLS去运载不同的流量。而且标签交换在大多数环境下比IP查找要快，开销要少。
将于近期更新part3，有关MPLS标签的操作。如果对本文有任何疑问或建议，请留言指出，谢谢！
To be continue……
]]></description>
			<content:encoded><![CDATA[<p>这些天一直在忙着准备面试，没能抽空出来更新一下，还好，笔试通过了，下星期一还有一次面试，希望可以通过吧！今天原以为出去的，结果还没出门就下起了大雨，趁有空就写一下MPLS introducing的第二部分吧。</p>
<p><b>MPLS</b><b>是怎样工作的？</b><b></b></p>
<p>MPLS在转发数据包时使用了FEC（Forwarding Equivalence Class，转发等价类）这一概念，转发等价类是一组或者一系列沿相同路径转发的，且都按照相同的规则进行交换的数据流，属于同一个FEC的所有报文都使用相同的标签，需要注意，并不是所有拥有相同标签的报文都属于同一个FEC。所有运行MPLS的路由器（LSR、LER）为每一个FEC分配标签，并且使用标签分发协议（如LDP ，Label Distribution Protocol）把标签跟FEC的捆绑关系发送给邻居。最终， 某个FEC会在该MPLS区域内形成一条LSP（Label Switched path）。</p>
<p>一个Packet可能起源于MPLS区域的外部，从MPLS区域的边缘路由器进入，也有可能是起源于内部，这里假设Packet起源于外部。当入口路由器收到一个Packet时，它将会根据FIB表和LFIB表决定下一跳、为这个Packet打上一个或者多个的标签（当然可能因为PHP或者其他原因也有可能不打标签，以后再探讨）。打上标签的Packet被发送到下一条路由器（下游）。当下游路由器收到该Packet，它会检查Packet中的顶层标签，然后根据LFIB（Label Forward Information Base）确定对标签实施哪种操作（可能是交换、弹出或者添加标签等）和决定Packet的下一跳。</p>
<p>在经过LSP中的所有LSR之后，数据包最终到达LSP的末端，这时根据PHP机制，一般来说到达MPLS网络边缘的Packet应该不带标签以IP报文的形式发给出口路由器，然后出口路由器对Packet进行常规的IP查找和交换。但根据MPLS应用的不同，Packet到达最后一跳路由器时还可能包含标签（如显式空），这时就不得不为数据包进行两次查找了（题外话）。</p>
<p>下面是一个例子：</p>
<p> <a href="http://alvinj.net/wp-content/uploads/2010/04/mplsillustrate.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="mpls-illustrate" border="0" alt="mpls-illustrate" src="http://alvinj.net/wp-content/uploads/2010/04/mplsillustrate_thumb.jpg" width="481" height="156" /></a>
<p>1. R1通过IGP通告了前缀10.10.10.0/24，这里假设R1是去往该子网的唯一路径；</p>
<p>2. 一个目的地为10.10.10.1的IP Packet进入R4（LER）；</p>
<p>3. R4会查找FIB和LFIB（cisco IOS中只需对CEF进行查找即可），确定下一跳为R3，然后为Packet压入一个由R3为10.10.10.0这一FEC分配的标签L4；</p>
<p>4. R3从R4收到这一Packet查看二层报头，发现这是一个带标签的报文，于是查看LFIB表，将L4的标签交换为由R3分配的标签L3，进而发给R2；</p>
<p>5. 同样地，R2收到Packet并确认其为带标签报文，查找LFIB表，对标签进行操作，这里是典型的例子，R2作为LSP的倒数第二跳，R1为FEC分配了隐式空标签3并传给R2，但R2并不会把这个标签值为3的标签压入报文，而是采取弹出一层标签的行为。而在这个例子中只有一层报文，所以标签被弹出后，就露出了原来的IP报文，这个Packet最终被R2以IP报文的形式发给了R1，这样当R1接收到Packet之后只需进行IP查找就可以确定Packet的去向，这也就是MPLS中的PHP机制。</p>
<p>6. R1从R2收到IP Packet，查看IP头，并转发报文，Packet顺利穿越MPLS网络并到达目的地！</p>
<p>由此可以体现出的好处就是，MPLS区域内的路由器可以设计成由此至终都使用标签作为转发依据，因此区域内的LSR根本不用理会标签以后的内容是什么，这有利于运营商使用MPLS去运载不同的流量。而且标签交换在大多数环境下比IP查找要快，开销要少。</p>
<p>将于近期更新part3，有关MPLS标签的操作。如果对本文有任何疑问或建议，请留言指出，谢谢！</p>
<p align="right">To be continue……</p>
]]></content:encoded>
			<wfw:commentRss>http://alvinj.net/2010/04/15/mpls-introducing-part-2/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>MPLS introducing Part1</title>
		<link>http://alvinj.net/2010/04/01/mpls-introducing-part1/</link>
		<comments>http://alvinj.net/2010/04/01/mpls-introducing-part1/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 06:52:30 +0000</pubDate>
		<dc:creator>Alvin.J</dc:creator>
				<category><![CDATA[Cisco tech]]></category>
		<category><![CDATA[MPLS]]></category>

		<guid isPermaLink="false">http://alvinj.net/2010/04/01/mpls-introducing-part1/</guid>
		<description><![CDATA[MPLS是Multi-protocol Label Switching（多协议标签交换）的缩写，MPLS是一种能够携带任何三层协议（数据）的包转发技术，这也名称中“多协议”一词的由来。当装有层三（或以上数据）的数据包需要穿越部署了MPLS的网络时，处于MPLS网络边缘的路由器会在该数据包的L3头和L2头之间打上标记（label），使这些三层的数据包可以顺利穿越一个部署了MPLS的网络到目的地。
MPLS Label的结构及其作用：
MPLS label是一个固定长度4Byte，被入口路由器添加在L2和L3报头之间，主要用于识别数据包目的地的标识符。这个标识符被那些MPLS网络内部（非边缘）路由器所使用，这些内部路由器只需要根据数据包中这个处于L2.5（2.5层）的标识符就可以知道它的目的地，而不用进行任何的三层路由表查找，这也意味着可以带来一定性能上的提升！
 
在入口路由器处，一个或多个标签被压（pushed）进了包里面，我们通常称第一个标签为顶层标签或者传输（transport）标签，根据不同MPLS应用（如MPLS VPN），这个顶层标签后可能还有其他标签。
上图是一个完整的标签结构，一共32位，可见除了标签（Label）之外，还有一些其他的字段。这里简单介绍一下这四个字段：

Label：“真正”的标签，20bits的标签值；
EXP：Experimental bits 实验位，3bits，主要用于区分流量，也是在MPLS网络中实施QoS的依据；
S Bit：Botton栈底位，1bit，用于标识当前标签是否为标签栈中的最后一个标签（栈底），值为“1”时表示当前标签为栈底，值为“0”时当前标签后面还有后续标签；
TTL：Time to live生存时间，8bits，跟IP报头中的TTL一样，主要用于防环，MPLS label与label，label与IP之间的TTL行为有详细定义，具体可参考相关文档；

MPLS的一些术语：

DownStream router：下游路由器，该路由器是某目的网络前缀的通告者，举个例，从下游路由器（A）收到网络前缀（N）的路由器的路由器（B）将以A作为该目的网络N的下一跳路由器，而这个前缀的接受者B向网络N发送数据时，数据流必须发送到A，因此我们称之为下游路由器，由此也可以看出，“下游”这一概念是相对于去往某特定网络前缀的数据流和路由器而言的。一路由器作为某网络前缀的下游路由器，但同时它也可能是另一网络前缀的上游路由器。
UpStream router：上游路由器，正如上面所说的，上游路由器是某网络前缀的被通告者（接收者），通俗一点，“下游”和“上游”的意思就是某网络前缀的“通告方”和“被通告方”。

我们可以通过路由信息的方向和数据流的方向对上游和下游进行区分，路由信息是从下游路由器传给上游路由器的，而针对某特定前缀的数据流是从上游路由器流向下游路由器的。关于这两个概念很多都容易搞混了，所以我就花一些周章说明一下。


Label Edge Router（LER）：边缘路由器，处于MPLS网络的边缘，一般地，他们根据IP报头作出转发决定；
Label Switch Router（LSR）：标签交换路由器，处于MPLS网络的内部的路由器根据标签作出转发决策。

本文参考：What is MPLS，在结合自己的见解后在内容上稍作扩张和修改，如有错漏之处敬请提出
未完，待续。
]]></description>
			<content:encoded><![CDATA[<p>MPLS是Multi-protocol Label Switching（多协议标签交换）的缩写，MPLS是一种能够携带任何三层协议（数据）的包转发技术，这也名称中“多协议”一词的由来。当装有层三（或以上数据）的数据包需要穿越部署了MPLS的网络时，处于MPLS网络边缘的路由器会在该数据包的L3头和L2头之间打上标记（label），使这些三层的数据包可以顺利穿越一个部署了MPLS的网络到目的地。</p>
<p><b>MPLS Label</b><b>的结构及其作用：</b><b></b></p>
<p>MPLS label是一个固定长度4Byte，被入口路由器添加在L2和L3报头之间，主要用于识别数据包目的地的标识符。这个标识符被那些MPLS网络内部（非边缘）路由器所使用，这些内部路由器只需要根据数据包中这个处于L2.5（2.5层）的标识符就可以知道它的目的地，而不用进行任何的三层路由表查找，这也意味着可以带来一定性能上的提升！</p>
<p><a href="http://alvinj.net/wp-content/uploads/2010/04/MPLS_label.gif"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="MPLS_label" border="0" alt="MPLS_label" src="http://alvinj.net/wp-content/uploads/2010/04/MPLS_label_thumb.gif" width="341" height="41" /></a> </p>
<p>在入口路由器处，一个或多个标签被压（pushed）进了包里面，我们通常称第一个标签为顶层标签或者传输（transport）标签，根据不同MPLS应用（如MPLS VPN），这个顶层标签后可能还有其他标签。</p>
<p>上图是一个完整的标签结构，一共32位，可见除了标签（Label）之外，还有一些其他的字段。这里简单介绍一下这四个字段：</p>
<ul>
<li>Label：“真正”的标签，20bits的标签值；</li>
<li>EXP：Experimental bits 实验位，3bits，主要用于区分流量，也是在MPLS网络中实施QoS的依据；</li>
<li>S Bit：Botton栈底位，1bit，用于标识当前标签是否为标签栈中的最后一个标签（栈底），值为“1”时表示当前标签为栈底，值为“0”时当前标签后面还有后续标签；</li>
<li>TTL：Time to live生存时间，8bits，跟IP报头中的TTL一样，主要用于防环，MPLS label与label，label与IP之间的TTL行为有详细定义，具体可参考相关文档；</li>
</ul>
<p><b>MPLS</b><b>的一些术语：</b><b></b></p>
<ul>
<li>DownStream router：下游路由器，该路由器是某目的网络前缀的通告者，举个例，从下游路由器（A）收到网络前缀（N）的路由器的路由器（B）将以A作为该目的网络N的下一跳路由器，而这个前缀的接受者B向网络N发送数据时，数据流必须发送到A，因此我们称之为下游路由器，由此也可以看出，“下游”这一概念是相对于去往某特定网络前缀的数据流和路由器而言的。一路由器作为某网络前缀的下游路由器，但同时它也可能是另一网络前缀的上游路由器。</li>
<li>UpStream router：上游路由器，正如上面所说的，上游路由器是某网络前缀的被通告者（接收者），通俗一点，“下游”和“上游”的意思就是某网络前缀的“通告方”和“被通告方”。</li>
</ul>
<blockquote><p>我们可以通过路由信息的方向和数据流的方向对上游和下游进行区分，路由信息是从下游路由器传给上游路由器的，而针对某特定前缀的数据流是从上游路由器流向下游路由器的。关于这两个概念很多都容易搞混了，所以我就花一些周章说明一下。</p>
</blockquote>
<ul>
<li>Label Edge Router（LER）：边缘路由器，处于MPLS网络的边缘，一般地，他们根据IP报头作出转发决定；</li>
<li>Label Switch Router（LSR）：标签交换路由器，处于MPLS网络的内部的路由器根据标签作出转发决策。</li>
</ul>
<p align="right">本文参考：<a href="http://networkers-online.com/blog/2010/03/what-is-mpls/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed:+NetworkersOnline+(NetworkersOnline)">What is MPLS</a>，在结合自己的见解后在内容上稍作扩张和修改，如有错漏之处敬请提出</p>
<p align="right">未完，待续。</p>
]]></content:encoded>
			<wfw:commentRss>http://alvinj.net/2010/04/01/mpls-introducing-part1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>MPLS-VPN基本配置实验</title>
		<link>http://alvinj.net/2009/12/07/mpls-vpn%e5%9f%ba%e6%9c%ac%e9%85%8d%e7%bd%ae%e5%ae%9e%e9%aa%8c/</link>
		<comments>http://alvinj.net/2009/12/07/mpls-vpn%e5%9f%ba%e6%9c%ac%e9%85%8d%e7%bd%ae%e5%ae%9e%e9%aa%8c/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 07:36:35 +0000</pubDate>
		<dc:creator>Alvin.J</dc:creator>
				<category><![CDATA[Cisco tech]]></category>

		<guid isPermaLink="false">http://alvinj.net/2009/12/07/mpls-vpn%e5%9f%ba%e6%9c%ac%e9%85%8d%e7%bd%ae%e5%ae%9e%e9%aa%8c/</guid>
		<description><![CDATA[ 

在我上一个实验“MPLS基础实验”中，在PE上不建立VRF的时候，要保证两个CE路由器可以互相学习到对方路由，不可避免地需要在CE和PE上运行路由协议，而且在没有BGP的协助下，这些路由必须要被重分布或者其他的方法进入Backbone区域，让Backbone区域帮忙传递路由信息，而这又可能会导致Backbone区域路由外泄和学习到了客户路由，这显然会带来包括路由条目过多、地址重叠等一连串问题。所以，分隔客户路由和Backbone路由时非常必要的，VRF应运而生，它可以有效分隔客户跟运营商路由，而Backbone区域并不需要知道这些路由，因为P路由器只需要运行MPLS就可以了，PE路由器会区分这些可会路由，在转发数据的时候为不同的路由打上不同的标签，所以P路由器只需要专注于标签转发就可以了。
如何使这些路由在Backbone区域不知道的情况下去传递呢？这就需要在PE路由器之间建立MP-BGP了，PE路由器将使用MP-BGP来传递客户的VPN路由，并且在这个过程中为他们分配和传递VPN标签。下面我们来做一下这个实验。
拓扑如图所示：在MPLS的基础上，PE与CE间运行了OSPF协议，两个PE路由器 R2、R4间运行了MP-BGP协议。为了不让客户路由跑进运营商内部，R4将建立VRF表达到客户路由和互联网路由隔离的目的。而分隔于运营商两端的客户路由将通过MP-BGP进行传递，期间需要对BGP和OSPF进行双向重分发。
实验步骤：
1. 先为各路由器接口配置好地址，保证底层的连通性，并配置好MPLS OSPF Backbone区域，（MPLS配置方法请参考以前的文章：MPLS基础实验）；
2. 在PE路由器R2、R4上激活BGP进程，使两者建立iBGP邻居关系；
3. 在PE路由器R2、R4上全局建立VRF cisco；
4. 在PE路由器R2、R4上的BGP进程中激活VPNV4邻居，并且对邻居发送扩展community属性；
5. 在PE路由器R2、R4上与CE路由器相连的接口与vpn cisco关联起来（可能需要重新配置该接口IP地址）；
6. 在PE路由器R2、R4上启动OSPF XX vrf cisco进程，将关联该VRF的接口宣告；
7. 在CE路由器R1、R5上启动ospf进程，将包括loopback口的所有直连接口宣告；
8. 在PE路由器R2上将ospf vrf cisco里的路由重发布到BGP中，并且在R4上观察BGP VPNV4路由的变化；
9. 在PE路由器R4上将BGP进程重分布到OSPF进程中，在R5上观察ospf路由的学习情况；
10. 在PE路由器R4上将ospf vrf cisco里的路由重发布到BGP中，并且在R2上观察BGP VPNV4路由的变化；
11. 在PE路由器R2上将BGP进程重发布到OSPF进程中，在R1上观察ospf路由的学习情况；
12. 检查R1上去往R5的所有路由可达性；
13. 检查运营商骨干路由器中是否获悉到客户路由（正常情况下没有），检查运营商内部路由是否泄漏到客户路由表中；
实验过程概要：
MP-BGP的配置：
首先需要两个BGP路由器建立BGP邻居，然后再激活他们的VPNV4邻居关系，同时要求他们互相发送扩展的community属性，详细配置见后。
在路由重分发的时候，需要在address-family IPV4中进行
在PE路由器R2、R4上配置VRF：
ip vrf cisco
rd 24:100
route-target export 24:100
route-target import 24:100
RD用于区分路由表中不同的路由条目
RT的import必须要与需要学习的路由export的值一样（即R2 的Import要与 R4的export保持一致才可以学习到R4 export的路由）
在R2与R1连接的接口上关联vrf cisco时，IP地址会被移除，需要重新配置
R2(config-subif)#ip vrf forwarding cisco
% Interface FastEthernet1/0.12 IP address 12.0.0.2 removed due to enabling VRF cisco
在R2上开启OSPF [...]]]></description>
			<content:encoded><![CDATA[<p><strong> </strong></p>
<p><a href="http://alvinj.net/wp-content/uploads/2009/12/MPLS_basic_config_2.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="MPLS_basic_config_2" src="http://alvinj.net/wp-content/uploads/2009/12/MPLS_basic_config_2_thumb.png" border="0" alt="MPLS_basic_config_2" width="502" height="202" /></a></p>
<p>在我上一个实验“MPLS基础实验”中，在PE上不建立VRF的时候，要保证两个CE路由器可以互相学习到对方路由，不可避免地需要在CE和PE上运行路由协议，而且在没有BGP的协助下，这些路由必须要被重分布或者其他的方法进入Backbone区域，让Backbone区域帮忙传递路由信息，而这又可能会导致Backbone区域路由外泄和学习到了客户路由，这显然会带来包括路由条目过多、地址重叠等一连串问题。所以，分隔客户路由和Backbone路由时非常必要的，VRF应运而生，它可以有效分隔客户跟运营商路由，而Backbone区域并不需要知道这些路由，因为P路由器只需要运行MPLS就可以了，PE路由器会区分这些可会路由，在转发数据的时候为不同的路由打上不同的标签，所以P路由器只需要专注于标签转发就可以了。</p>
<p>如何使这些路由在Backbone区域不知道的情况下去传递呢？这就需要在PE路由器之间建立MP-BGP了，PE路由器将使用MP-BGP来传递客户的VPN路由，并且在这个过程中为他们分配和传递VPN标签。下面我们来做一下这个实验。</p>
<p>拓扑如图所示：在MPLS的基础上，PE与CE间运行了OSPF协议，两个PE路由器 R2、R4间运行了MP-BGP协议。为了不让客户路由跑进运营商内部，R4将建立VRF表达到客户路由和互联网路由隔离的目的。而分隔于运营商两端的客户路由将通过MP-BGP进行传递，期间需要对BGP和OSPF进行双向重分发。</p>
<p><strong>实验步骤：</strong></p>
<p>1. 先为各路由器接口配置好地址，保证底层的连通性，并配置好MPLS OSPF Backbone区域，（MPLS配置方法请参考以前的文章：<a href="http://alvinj.net/2009/11/24/mpls%e5%9f%ba%e7%a1%80%e5%ae%9e%e9%aa%8c/">MPLS基础实验</a>）；</p>
<p>2. 在PE路由器R2、R4上激活BGP进程，使两者建立iBGP邻居关系；</p>
<p>3. 在PE路由器R2、R4上全局建立VRF cisco；</p>
<p>4. 在PE路由器R2、R4上的BGP进程中激活VPNV4邻居，并且对邻居发送扩展community属性；</p>
<p>5. 在PE路由器R2、R4上与CE路由器相连的接口与vpn cisco关联起来（可能需要重新配置该接口IP地址）；</p>
<p>6. 在PE路由器R2、R4上启动OSPF XX vrf cisco进程，将关联该VRF的接口宣告；</p>
<p>7. 在CE路由器R1、R5上启动ospf进程，将包括loopback口的所有直连接口宣告；</p>
<p>8. 在PE路由器R2上将ospf vrf cisco里的路由重发布到BGP中，并且在R4上观察BGP VPNV4路由的变化；</p>
<p>9. 在PE路由器R4上将BGP进程重分布到OSPF进程中，在R5上观察ospf路由的学习情况；</p>
<p>10. 在PE路由器R4上将ospf vrf cisco里的路由重发布到BGP中，并且在R2上观察BGP VPNV4路由的变化；</p>
<p>11. 在PE路由器R2上将BGP进程重发布到OSPF进程中，在R1上观察ospf路由的学习情况；</p>
<p>12. 检查R1上去往R5的所有路由可达性；</p>
<p>13. 检查运营商骨干路由器中是否获悉到客户路由（正常情况下没有），检查运营商内部路由是否泄漏到客户路由表中；</p>
<p><strong><span id="more-369"></span>实验过程概要：</strong><strong></strong></p>
<p><strong>MP-BGP的配置：</strong></p>
<p>首先需要两个BGP路由器建立BGP邻居，然后再激活他们的VPNV4邻居关系，同时要求他们互相发送扩展的community属性，详细配置见后。</p>
<p><strong>在路由重分发的时候，需要在address-family IPV4中进行</strong></p>
<p>在PE路由器R2、R4上配置VRF：</p>
<p>ip vrf cisco</p>
<p>rd 24:100</p>
<p>route-target export 24:100</p>
<p>route-target import 24:100</p>
<p><em>RD用于区分路由表中不同的路由条目</em></p>
<p><em>RT的import必须要与需要学习的路由export的值一样（即R2 的Import要与 R4的export保持一致才可以学习到R4 export的路由）</em></p>
<p>在R2与R1连接的接口上关联vrf cisco时，IP地址会被移除，需要重新配置</p>
<p>R2(config-subif)#ip vrf forwarding cisco</p>
<p>% Interface FastEthernet1/0.12 IP address 12.0.0.2 removed due to enabling VRF cisco</p>
<p>在R2上开启OSPF 12 vrf cisco进程</p>
<p>R2(config)#router os 12 vrf cisco</p>
<p>将ospf路由重分布到BGP</p>
<p>R2(config-router)#redistribute bgp 24 metric 10 subnets</p>
<p>将ospf路由重分布到BGP后：</p>
<p>R4#show ip bgp vpnv4 all</p>
<p>Network Next Hop Metric LocPrf Weight Path</p>
<p>Route Distinguisher: 24:100 (default for vrf cisco)</p>
<p>*&gt;i12.0.0.0/24 2.2.2.2 0 100 0 ?</p>
<p>*&gt;i192.168.10.1/32 2.2.2.2 2 100 0 ?</p>
<p>*&gt;i192.168.20.1/32 2.2.2.2 2 100 0 ?</p>
<p>*&gt;i192.168.30.1/32 2.2.2.2 2 100 0 ?</p>
<p>R4上将BGP重发布到OSPF中：</p>
<p>R4(config-router-af)#redistribute ospf 12 metric 10 match internal external 1 external 2</p>
<p>R4上没有将BGP重发布到ospf vrf cisco时，R5路由表上只有直连的本地路由</p>
<p>将BGP重分布到ospf vrf cisco后：</p>
<p>R5#show ip route</p>
<p>192.168.30.0/32 is subnetted, 1 subnets</p>
<p>O E2 192.168.30.1 [110/2] via 45.0.0.4, 00:00:01, FastEthernet1/0.45</p>
<p>192.168.60.0/32 is subnetted, 1 subnets</p>
<p>C 192.168.60.1 is directly connected, Loopback2</p>
<p>192.168.10.0/32 is subnetted, 1 subnets</p>
<p>O E2 192.168.10.1 [110/2] via 45.0.0.4, 00:00:01, FastEthernet1/0.45</p>
<p>192.168.40.0/32 is subnetted, 1 subnets</p>
<p>C 192.168.40.1 is directly connected, Loopback0</p>
<p>192.168.20.0/32 is subnetted, 1 subnets</p>
<p>O E2 192.168.20.1 [110/2] via 45.0.0.4, 00:00:01, FastEthernet1/0.45</p>
<p>12.0.0.0/24 is subnetted, 1 subnets</p>
<p>O E2 12.0.0.0 [110/1] via 45.0.0.4, 00:00:01, FastEthernet1/0.45</p>
<p>192.168.50.0/32 is subnetted, 1 subnets</p>
<p>C 192.168.50.1 is directly connected, Loopback1</p>
<p>45.0.0.0/24 is subnetted, 1 subnets</p>
<p>C 45.0.0.0 is directly connected, FastEthernet1/0.45</p>
<p>R5已经成功从R4学习到由BGP重分布到OSPF的路由</p>
<p>同样地在R4上将OSPF重分发到BGP中后（redistribute ospf 45 match internal external 1 external 2）</p>
<p>在R2上查看：</p>
<p>R2#show ip bgp vpnv4 all</p>
<p>Network Next Hop Metric LocPrf Weight Path</p>
<p>Route Distinguisher: 24:100 (default for vrf cisco)</p>
<p>*&gt; 12.0.0.0/24 0.0.0.0 0 32768 ?</p>
<p>*&gt;i45.0.0.0/24 4.4.4.4 0 100 0 ?</p>
<p>*&gt; 192.168.10.1/32 12.0.0.1 2 32768 ?</p>
<p>*&gt; 192.168.20.1/32 12.0.0.1 2 32768 ?</p>
<p>*&gt; 192.168.30.1/32 12.0.0.1 2 32768 ?</p>
<p>*&gt;i192.168.40.1/32 4.4.4.4 2 100 0 ?</p>
<p>*&gt;i192.168.50.1/32 4.4.4.4 2 100 0 ?</p>
<p>*&gt;i192.168.60.1/32 4.4.4.4 2 100 0 ?</p>
<p>BGP里已经学习到由R4上重分发过来的BGP路由</p>
<p>同样地在R2上将BGP重分发到OSPF中：（redistribute bgp 24 subnets）</p>
<p>R1上查看路由表：</p>
<p>R1#show ip route</p>
<p>192.168.30.0/32 is subnetted, 1 subnets</p>
<p>C 192.168.30.1 is directly connected, Loopback2</p>
<p>192.168.60.0/32 is subnetted, 1 subnets</p>
<p>O E2 192.168.60.1 [110/2] via 12.0.0.2, 00:00:07, FastEthernet1/0.12</p>
<p>192.168.10.0/32 is subnetted, 1 subnets</p>
<p>C 192.168.10.1 is directly connected, Loopback0</p>
<p>192.168.40.0/32 is subnetted, 1 subnets</p>
<p>O E2 192.168.40.1 [110/2] via 12.0.0.2, 00:00:07, FastEthernet1/0.12</p>
<p>192.168.20.0/32 is subnetted, 1 subnets</p>
<p>C 192.168.20.1 is directly connected, Loopback1</p>
<p>12.0.0.0/24 is subnetted, 1 subnets</p>
<p>C 12.0.0.0 is directly connected, FastEthernet1/0.12</p>
<p>192.168.50.0/32 is subnetted, 1 subnets</p>
<p>O E2 192.168.50.1 [110/2] via 12.0.0.2, 00:00:09, FastEthernet1/0.12</p>
<p>45.0.0.0/24 is subnetted, 1 subnets</p>
<p>O E2 45.0.0.0 [110/1] via 12.0.0.2, 00:00:09, FastEthernet1/0.12</p>
<p>已经成功学习到来自R5后的网络，两个客户间的路由已经成型了，控制面上完成，下面测试数据面上是否正常：</p>
<p>在R1上ping 192.168.50.1</p>
<p>Sending 5, 100-byte ICMP Echos to 192.168.50.1, timeout is 2 seconds:</p>
<p>!!!!!</p>
<p>客户路由可达！</p>
<p>再来检查运营商网络中的核心路由器R3</p>
<p>R3#show ip route</p>
<p>34.0.0.0/24 is subnetted, 1 subnets</p>
<p>C 34.0.0.0 is directly connected, FastEthernet1/0.34</p>
<p>2.0.0.0/32 is subnetted, 1 subnets</p>
<p>O 2.2.2.2 [110/2] via 23.0.0.2, 00:39:40, FastEthernet1/0.23</p>
<p>3.0.0.0/32 is subnetted, 1 subnets</p>
<p>C 3.3.3.3 is directly connected, Loopback0</p>
<p>4.0.0.0/32 is subnetted, 1 subnets</p>
<p>O 4.4.4.4 [110/2] via 34.0.0.4, 00:39:40, FastEthernet1/0.34</p>
<p>23.0.0.0/24 is subnetted, 1 subnets</p>
<p>C 23.0.0.0 is directly connected, FastEthernet1/0.23、</p>
<p>可见运营商的核心路由器上没有获悉客户路由，而运营商内部的路由也没有泄露到客户的路由表中（从前面可以看出）</p>
<p><strong>各路由器详细配置</strong>：</p>
<p>R1：</p>
<p>interface Loopback0</p>
<p>ip address 192.168.10.1 255.255.255.255</p>
<p>!</p>
<p>interface Loopback1</p>
<p>ip address 192.168.20.1 255.255.255.255</p>
<p>!</p>
<p>interface Loopback2</p>
<p>ip address 192.168.30.1 255.255.255.255</p>
<p>!</p>
<p>interface FastEthernet1/0.12</p>
<p>encapsulation dot1Q 2</p>
<p>ip address 12.0.0.1 255.255.255.0</p>
<p>!</p>
<p>router ospf 12</p>
<p>network 12.0.0.0 0.0.0.255 area 0</p>
<p>network 192.168.0.0 0.0.255.255 area 0</p>
<p>R2:</p>
<p>ip vrf cisco</p>
<p>rd 24:100</p>
<p>route-target export 24:100</p>
<p>route-target import 24:100</p>
<p>!</p>
<p>ip vrf forwarding</p>
<p>!</p>
<p>ip cef</p>
<p>mpls label range 1000 1999</p>
<p>mpls label protocol ldp</p>
<p>tag-switching tdp router-id Loopback0 force</p>
<p>interface Loopback0</p>
<p>ip address 2.2.2.2 255.255.255.255</p>
<p>!</p>
<p>interface FastEthernet1/0.12</p>
<p>encapsulation dot1Q 2</p>
<p>ip vrf forwarding cisco</p>
<p>ip address 12.0.0.2 255.255.255.0</p>
<p>!</p>
<p>interface FastEthernet1/0.23</p>
<p>encapsulation dot1Q 3</p>
<p>ip address 23.0.0.2 255.255.255.0</p>
<p>tag-switching ip</p>
<p>router ospf 110</p>
<p>log-adjacency-changes</p>
<p>network 2.2.2.2 0.0.0.0 area 0</p>
<p>network 23.0.0.0 0.0.0.255 area 0</p>
<p>!</p>
<p>router ospf 12 vrf cisco</p>
<p>log-adjacency-changes</p>
<p>redistribute bgp 24 subnets</p>
<p>network 12.0.0.0 0.0.0.255 area 0</p>
<p>!</p>
<p>router bgp 24</p>
<p>bgp log-neighbor-changes</p>
<p>neighbor 4.4.4.4 remote-as 24</p>
<p>neighbor 4.4.4.4 update-source Loopback0</p>
<p>!</p>
<p>address-family ipv4</p>
<p>neighbor 4.4.4.4 activate</p>
<p>no auto-summary</p>
<p>no synchronization</p>
<p>exit-address-family</p>
<p>!</p>
<p>address-family vpnv4</p>
<p>neighbor 4.4.4.4 activate</p>
<p>neighbor 4.4.4.4 send-community extended</p>
<p>exit-address-family</p>
<p>!</p>
<p>address-family ipv4 vrf cisco</p>
<p>redistribute ospf 12 match internal external 1 external 2</p>
<p>no auto-summary</p>
<p>no synchronization</p>
<p>exit-address-family</p>
<p>R3:</p>
<p>ip cef</p>
<p>mpls label range 2000 2999</p>
<p>mpls label protocol ldp</p>
<p>tag-switching tdp router-id Loopback0 force</p>
<p>!</p>
<p>interface Loopback0</p>
<p>ip address 3.3.3.3 255.255.255.255</p>
<p>!</p>
<p>interface FastEthernet1/0.23</p>
<p>encapsulation dot1Q 3</p>
<p>ip address 23.0.0.3 255.255.255.0</p>
<p>tag-switching ip</p>
<p>!</p>
<p>interface FastEthernet1/0.34</p>
<p>encapsulation dot1Q 4</p>
<p>ip address 34.0.0.3 255.255.255.0</p>
<p>tag-switching ip</p>
<p>!</p>
<p>router ospf 110</p>
<p>log-adjacency-changes</p>
<p>network 3.3.3.3 0.0.0.0 area 0</p>
<p>network 23.0.0.0 0.0.0.255 area 0</p>
<p>network 34.0.0.0 0.0.0.255 area 0</p>
<p>R4:</p>
<p>ip vrf cisco</p>
<p>rd 24:100</p>
<p>route-target export 24:100</p>
<p>route-target import 24:100</p>
<p>!</p>
<p>ip cef</p>
<p>mpls label range 3000 3999</p>
<p>mpls label protocol ldp</p>
<p>tag-switching tdp router-id Loopback0 force</p>
<p>!</p>
<p>interface Loopback0</p>
<p>ip address 4.4.4.4 255.255.255.255</p>
<p>!</p>
<p>interface FastEthernet1/0.34</p>
<p>encapsulation dot1Q 4</p>
<p>ip address 34.0.0.4 255.255.255.0</p>
<p>tag-switching ip</p>
<p>!</p>
<p>interface FastEthernet1/0.45</p>
<p>encapsulation dot1Q 5</p>
<p>ip vrf forwarding cisco</p>
<p>ip address 45.0.0.4 255.255.255.0</p>
<p>!</p>
<p>router ospf 110</p>
<p>log-adjacency-changes</p>
<p>network 4.4.4.4 0.0.0.0 area 0</p>
<p>network 34.0.0.0 0.0.0.255 area 0</p>
<p>!</p>
<p>router ospf 45 vrf cisco</p>
<p>log-adjacency-changes</p>
<p>redistribute bgp 24 subnets</p>
<p>network 45.0.0.0 0.0.0.255 area 0</p>
<p>!</p>
<p>router bgp 24</p>
<p>no synchronization</p>
<p>bgp log-neighbor-changes</p>
<p>neighbor 2.2.2.2 remote-as 24</p>
<p>neighbor 2.2.2.2 update-source Loopback0</p>
<p>no auto-summary</p>
<p>!</p>
<p>address-family vpnv4</p>
<p>neighbor 2.2.2.2 activate</p>
<p>neighbor 2.2.2.2 send-community extended</p>
<p>exit-address-family</p>
<p>!</p>
<p>address-family ipv4 vrf cisco</p>
<p>redistribute ospf 45 match internal external 1 external 2</p>
<p>no auto-summary</p>
<p>no synchronization</p>
<p>exit-address-family</p>
<p>R5:</p>
<p>interface Loopback0</p>
<p>ip address 192.168.40.1 255.255.255.255</p>
<p>!</p>
<p>interface Loopback1</p>
<p>ip address 192.168.50.1 255.255.255.255</p>
<p>!</p>
<p>interface Loopback2</p>
<p>ip address 192.168.60.1 255.255.255.255</p>
<p>!</p>
<p>interface FastEthernet1/0.45</p>
<p>encapsulation dot1Q 5</p>
<p>ip address 45.0.0.5 255.255.255.0</p>
<p>!</p>
<p>router ospf 45</p>
<p>log-adjacency-changes</p>
<p>network 45.0.0.0 0.0.0.255 area 0</p>
<p>network 192.168.0.0 0.0.255.255 area 0</p>
]]></content:encoded>
			<wfw:commentRss>http://alvinj.net/2009/12/07/mpls-vpn%e5%9f%ba%e6%9c%ac%e9%85%8d%e7%bd%ae%e5%ae%9e%e9%aa%8c/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>MPLS基础实验</title>
		<link>http://alvinj.net/2009/11/24/mpls%e5%9f%ba%e7%a1%80%e5%ae%9e%e9%aa%8c/</link>
		<comments>http://alvinj.net/2009/11/24/mpls%e5%9f%ba%e7%a1%80%e5%ae%9e%e9%aa%8c/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 06:16:48 +0000</pubDate>
		<dc:creator>Alvin.J</dc:creator>
				<category><![CDATA[Cisco tech]]></category>
		<category><![CDATA[MPLS，cisco]]></category>

		<guid isPermaLink="false">http://alvinj.net/2009/11/24/mpls%e5%9f%ba%e7%a1%80%e5%ae%9e%e9%aa%8c/</guid>
		<description><![CDATA[MPLS Basic Config

拓扑如上图所示，中间的网云是运营商骨干网络，R2、R4路由器是运营商边缘路由器，R1、R5是客户边缘路由器。为了达到快速转发客户数据流，运营商在骨干网中部署了MPLS，并使用OSPF来交换路由信息。
实验步骤：
1. 先按图中的信息，将各接口的IP地址配置好，检验相连端口是否可达；
2. 在R2、R3、R4上运行OSPF协议，使相应的接口处于Area0，宣告处于area0的本地网络。完成后，检查相应的网络地址是否出现在路由表中，并检查处于area0中的端口是否全部可达；
3. 在R2、R3、R4上开启CEF，并在全局下配置MPLS，使用LDP作为标签交换协议，指定LDP的router-id。为了便于检查，为各个运行MPLS的路由器指定相应的标签分发范围；
4. 在R2、R3、R4相应的接口上激活MPLS（使用ip mpls命令）并启用标签转发（tag-switching ip）；
5. 验证MPLS的运行状况，使用Traceroute命令检查去往某个网络粘贴的标签，查看MPLS路由器上运行MPLS的接口、LDP邻居信息、MPLS转发表、Mpls与IP的绑定情况等
R2关键配置：
ip cef
mpls label range 1000 1999
mpls label protocol ldp
tag-switching tdp router-id Loopback0 force
!
interface Loopback0
ip address 2.2.2.2 255.255.255.255
!
interface FastEthernet1/0.23
encapsulation dot1Q 3
ip address 23.0.0.2 255.255.255.0
tag-switching ip
router ospf 110
log-adjacency-changes
network 2.2.2.2 0.0.0.0 area 0
network 23.0.0.0 0.0.0.255 area 0
R3关键配置:
ip cef
mpls label range 2000 2999
mpls label protocol ldp
tag-switching tdp router-id Loopback0 force
!
interface [...]]]></description>
			<content:encoded><![CDATA[<p><strong>MPLS Basic Config</strong></p>
<p><a href="http://alvinj.net/wp-content/uploads/2009/11/mpls_lab.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="mpls_lab" src="http://alvinj.net/wp-content/uploads/2009/11/mpls_lab_thumb.png" border="0" alt="mpls_lab" width="525" height="211" /></a></p>
<p>拓扑如上图所示，中间的网云是运营商骨干网络，R2、R4路由器是运营商边缘路由器，R1、R5是客户边缘路由器。为了达到快速转发客户数据流，运营商在骨干网中部署了MPLS，并使用OSPF来交换路由信息。</p>
<p>实验步骤：</p>
<p>1. 先按图中的信息，将各接口的IP地址配置好，检验相连端口是否可达；</p>
<p>2. 在R2、R3、R4上运行OSPF协议，使相应的接口处于Area0，宣告处于area0的本地网络。完成后，检查相应的网络地址是否出现在路由表中，并检查处于area0中的端口是否全部可达；</p>
<p>3. 在R2、R3、R4上开启CEF，并在全局下配置MPLS，使用LDP作为标签交换协议，指定LDP的router-id。为了便于检查，为各个运行MPLS的路由器指定相应的标签分发范围；</p>
<p>4. 在R2、R3、R4相应的接口上激活MPLS（使用ip mpls命令）并启用标签转发（tag-switching ip）；</p>
<p>5. 验证MPLS的运行状况，使用Traceroute命令检查去往某个网络粘贴的标签，查看MPLS路由器上运行MPLS的接口、LDP邻居信息、MPLS转发表、Mpls与IP的绑定情况等<span id="more-320"></span></p>
<p><strong>R2</strong><strong>关键配置：</strong></p>
<p>ip cef<br />
mpls label range 1000 1999<br />
mpls label protocol ldp<br />
tag-switching tdp router-id Loopback0 force<br />
!<br />
interface Loopback0<br />
ip address 2.2.2.2 255.255.255.255<br />
!<br />
interface FastEthernet1/0.23<br />
encapsulation dot1Q 3<br />
ip address 23.0.0.2 255.255.255.0<br />
tag-switching ip</p>
<p>router ospf 110<br />
log-adjacency-changes<br />
network 2.2.2.2 0.0.0.0 area 0<br />
network 23.0.0.0 0.0.0.255 area 0</p>
<p><strong>R3</strong><strong>关键配置</strong><strong>:</strong><strong><br />
</strong>ip cef<br />
mpls label range 2000 2999<br />
mpls label protocol ldp<br />
tag-switching tdp router-id Loopback0 force<br />
!<br />
interface Loopback0<br />
ip address 3.3.3.3 255.255.255.255</p>
<p>!<br />
interface FastEthernet1/0.23<br />
encapsulation dot1Q 3<br />
ip address 23.0.0.3 255.255.255.0<br />
tag-switching ip<br />
!<br />
interface FastEthernet1/0.34<br />
encapsulation dot1Q 4<br />
ip address 34.0.0.3 255.255.255.0<br />
tag-switching ip</p>
<p><strong>R4</strong><strong>关键配置：</strong><br />
ip cef<br />
mpls label range 3000 3999<br />
mpls label protocol ldp<br />
tag-switching tdp router-id Loopback0 force<br />
!<br />
interface Loopback0<br />
ip address 4.4.4.4 255.255.255.255<br />
!<br />
interface FastEthernet1/0.34<br />
encapsulation dot1Q 4<br />
ip address 34.0.0.4 255.255.255.0<br />
tag-switching ip<br />
！<br />
router ospf 110<br />
log-adjacency-changes<br />
network 4.4.4.4 0.0.0.0 area 0<br />
network 34.0.0.0 0.0.0.255 area 0</p>
<p><strong>验证</strong><strong>MPLS</strong><strong>：</strong></p>
<p>R2上：show mpls ldp nei<br />
Peer LDP Ident: 3.3.3.3:0; Local LDP Ident 2.2.2.2:0<br />
TCP connection: 3.3.3.3.52391 &#8211; 2.2.2.2.646<br />
State: Oper; Msgs sent/rcvd: 22/20; Downstream<br />
Up time: 00:11:21<br />
LDP discovery sources:<br />
FastEthernet1/0.23, Src IP addr: 23.0.0.3<br />
Addresses bound to peer LDP Ident:<br />
23.0.0.3        34.0.0.3        3.3.3.3</p>
<p>R2成功与R3建立LDP邻居</p>
<p>R3上：show mpls forwarding-table<br />
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop<br />
tag    tag or VC   or Tunnel Id      switched   interface<br />
2000   Pop tag     2.2.2.2/32        0          Fa1/0.23   23.0.0.2<br />
2001   Pop tag     4.4.4.4/32        276        Fa1/0.34   34.0.0.4</p>
<p>R3为4.4.4.4/32的网络分配了标签2001,对于收到标签为2001的数据将弹出标签（PHP，倒数第二跳弹出）</p>
<p>R2#traceroute 4.4.4.4<br />
1 23.0.0.3 [MPLS: Label 2001 Exp 0] 28 msec 28 msec 28 msec<br />
2 34.0.0.4 20 msec *  64 msec<br />
可以看见23.0.0.3使用了由R3为4.4.4.4分配的标签2001了，证明R2为去往4.4.4.4的包贴上了正确的标签，该包也成功到达了4.4.4.4所在的路由器，数据转发正常。</p>
<p>R2上： show mpls ip binding<br />
2.2.2.2/32<br />
in label:     imp-null<br />
out label:    2000      lsr: 3.3.3.3:0<br />
3.3.3.3/32<br />
in label:     1001<br />
out label:    imp-null  lsr: 3.3.3.3:0        inuse<br />
4.4.4.4/32<br />
in label:     1002<br />
out label:    2001      lsr: 3.3.3.3:0        inuse</p>
<p>由MPLS与IP的绑定情况可以看出，R3为3.3.3.3网络分配了隐含空的标签（imp-null），究竟从R2发出的到达3.3.3.3网络的数据有没有被打上标签呢？我尝试在R2跟R3连接的端口上抓包，同时ping 3.3.3.3网络，结果发现发往3.3.3.3的ICMP包并没有MPLS头！而ping 4.4.4.4时，ICMP报文在IP头与二层头间插入了MPLS头。为什么去往3.3.3.3的报文不打标签？因为3.3.3.3网络并不运行MPLS，R2已经是去往3.3.3.3网络的（MPLS）倒数第二跳了，不用打标签，避免增加R3的负荷。</p>
<p>至此，MPLS已经成功部署了，骨干网络可以通过MPLS正常转发数据。</p>
<p>而来自客户的数据，显然还没正常转发，在没有VRF的支持下，客户之间转发数据需要PE路由器在C网络与P网络间进行双向重分发，这无疑会使客户的路由进入运营商内部，如果PE路由器连接了多个客户，而这些客户间的地址发生了重叠，以现在的方案是没发解决的，所以我们必须要在PE路由器上为各个客户建立一个虚拟路由表，使他们之间的路由互不干扰。</p>
<p>MPLS VPN的实验我将会在稍后发上来。敬请期待~~~</p>
]]></content:encoded>
			<wfw:commentRss>http://alvinj.net/2009/11/24/mpls%e5%9f%ba%e7%a1%80%e5%ae%9e%e9%aa%8c/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>CEF对BGP负载均衡的影响</title>
		<link>http://alvinj.net/2009/11/07/cef%e5%af%b9bgp%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1%e7%9a%84%e5%bd%b1%e5%93%8d/</link>
		<comments>http://alvinj.net/2009/11/07/cef%e5%af%b9bgp%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1%e7%9a%84%e5%bd%b1%e5%93%8d/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 14:09:49 +0000</pubDate>
		<dc:creator>Alvin.J</dc:creator>
				<category><![CDATA[Cisco tech]]></category>
		<category><![CDATA[BGP]]></category>
		<category><![CDATA[CEF]]></category>
		<category><![CDATA[Load-sharing]]></category>

		<guid isPermaLink="false">http://alvinj.net/2009/11/07/cef%e5%af%b9bgp%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1%e7%9a%84%e5%bd%b1%e5%93%8d/</guid>
		<description><![CDATA[前几天做了几个实验，想研究一下BGP的负载均衡。本来BGP的负载均衡实现起来也不难，在特定点环境下，多条到达同一目的地的路由符合选路原则的前八条，并且修改BGP maximum-paths，基本上就可以实现BGP的负载均衡了，下面写一写我做这个实验的一点点心得吧
这是一个：Dual-Homed to one internet service的环境
 AS 65001中的R1通过两条串行链路连接连接到ISP AS 65023中的两个路由器R2、R3上。其中R1，R3上的LoopBack口代表了两个AS的内部网络，而我们的目的就是让从来自AS 65001的数据流分别通过两个出接口到达ISP内部的网络。
底层配置我就不写了，写一下关键的R1上的配置吧
R1：
router bgp 65001
no synchronization
bgp router-id 1.1.1.1
bgp log-neighbor-changes
network 1.1.1.1 mask 255.255.255.255
neighbor 12.0.0.2 remote-as 65013
neighbor 13.0.0.3 remote-as 65013
maximum-paths 2
no auto-summary
上面的配置中，与平常的BGP配置唯一不同之处就是多了 [maximum-paths 2]这条命令，而这条命令就是修改BGP将多少条到达同一目的地代价相同的路由放进路由表中（需要符合我开始说的那几个条件）。
完成三个路由器的配置后可以发现R1的路由表上到达3.3.3.3的网络拥有两个出口了：
1.0.0.0/32 is subnetted, 1 subnets
C       1.1.1.1 is directly connected, Loopback0
3.0.0.0/32 is subnetted, 1 subnets
B       3.3.3.3 [20/0] via 13.0.0.3, 00:00:08
[20/0] via 12.0.0.2, 00:00:08
 12.0.0.0/24 is subnetted, 1 [...]]]></description>
			<content:encoded><![CDATA[<p>前几天做了几个实验，想研究一下BGP的负载均衡。本来BGP的负载均衡实现起来也不难，在特定点环境下，多条到达同一目的地的路由符合选路原则的前八条，并且修改BGP maximum-paths，基本上就可以实现BGP的负载均衡了，下面写一写我做这个实验的一点点心得吧<img onclick="grin(';-)');" src="../wp-includes/images/smilies/icon_wink.gif" alt=";-)" /></p>
<p>这是一个：Dual-Homed to one internet service的环境</p>
<p><a href="http://alvinj.net/wp-content/uploads/CEFBGP_1A71/bgp_load_sharing3.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="bgp_load_sharing3" src="http://alvinj.net/wp-content/uploads/CEFBGP_1A71/bgp_load_sharing3_thumb.png" border="0" alt="bgp_load_sharing3" width="447" height="268" /></a> AS 65001中的R1通过两条串行链路连接连接到ISP AS 65023中的两个路由器R2、R3上。其中R1，R3上的LoopBack口代表了两个AS的内部网络，而我们的目的就是让从来自AS 65001的数据流分别通过两个出接口到达ISP内部的网络。</p>
<p>底层配置我就不写了，写一下关键的R1上的配置吧</p>
<blockquote><p>R1：</p>
<p>router bgp 65001<br />
no synchronization<br />
bgp router-id 1.1.1.1<br />
bgp log-neighbor-changes<br />
network 1.1.1.1 mask 255.255.255.255<br />
neighbor 12.0.0.2 remote-as 65013<br />
neighbor 13.0.0.3 remote-as 65013<br />
<span style="color: #ff8000;">maximum-paths 2<br />
</span>no auto-summary<span id="more-312"></span></p></blockquote>
<p>上面的配置中，与平常的BGP配置唯一不同之处就是多了 [maximum-paths 2]这条命令，而这条命令就是修改BGP将多少条到达同一目的地代价相同的路由放进路由表中（需要符合我开始说的那几个条件）。</p>
<p>完成三个路由器的配置后可以发现R1的路由表上到达3.3.3.3的网络拥有两个出口了：</p>
<p>1.0.0.0/32 is subnetted, 1 subnets<br />
C       1.1.1.1 is directly connected, Loopback0<br />
3.0.0.0/32 is subnetted, 1 subnets<br />
<span style="color: #ff8000;">B       3.3.3.3 [20/0] via 13.0.0.3, 00:00:08<br />
[20/0] via 12.0.0.2, 00:00:08<br />
</span> 12.0.0.0/24 is subnetted, 1 subnets<br />
C       12.0.0.0 is directly connected, Serial1/0<br />
13.0.0.0/24 is subnetted, 1 subnets<br />
C       13.0.0.0 is directly connected, Serial1/1</p>
<p>通常，要验证路由是否发生负载均衡，可以使用Traceroute命令对数据的转发路径进行跟踪，但有一点需要注意的是，我们无法透过该命令知道数据时是去往目的地时经过某地，还是在返程是经过某地。所以，为了更清楚地了解数据的流动情况我们需要进行抓包验证</p>
<p>我们尝试在R1上以LoopBack 0接口地址为源地址ping 3.3.3.3，如无意外是可以ping通的。在cisco的官方文档介绍BGP的负载均衡时，验证BGP负载均衡是否实现的依据是：1.路由表中是否有标记为B并且到达同一目的有多个出口的路由；2.使用traceroute命令时出现了R1上两个物理出口的地址；从上面这两个信息中基本可以判断在路由层面上已经实现了负载均衡了，但是在数据面上呢？接下来我们在R1上分别ping另一个AS内的网络，并在R1的两个出口上抓一下包，看看数据包的流动情况。</p>
<p>我们需要在Dynagen的控制台上使用Capture命令同时抓取R1两个接口上的数据，命令：<span style="color: #ff8000;">capture R1 s1/0 r1s0.cap HDLC <span style="color: #000000;">和</span> capture R1 s1/1 r1s1.cap HDLC</span><br />
然后在R1上：ping 3.3.3.3 source lo0 repet 10<br />
等待ping过程结束后，这时停掉R1上的数据抓取，避免抓取过多无用的数据包。命令：<span style="color: #ff8000;">no capture R1 s1/0 <span style="color: #000000;">和</span> no capture R1 s1/1</span><br />
现在我们来打开两个cap文件，这里推荐你使用wiresshark。</p>
<p><a href="http://alvinj.net/wp-content/uploads/CEFBGP_1A71/bgp_load_sharing.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="bgp_load_sharing" src="http://alvinj.net/wp-content/uploads/CEFBGP_1A71/bgp_load_sharing_thumb.png" border="0" alt="bgp_load_sharing" width="559" height="158" /></a><br />
经过观测可以发现，ping包的走向跟我们预期中的不同（如上图）<img onclick="grin(':|');" src="../wp-includes/images/smilies/icon_neutral.gif" alt=":|" />！从R1发出的源地址为1.1.1.1的ICMP报文全部经由R1的s1/0口发出，而回包时却是从它的s1/1口收到。开始的时候我以为是BGP的属性引起的选路问题，但根据路由表，BGP已经接受了两条路径，并把它们放进了路由表，可以确定BGP已经实现了负载均衡（在控制面上），所以我只能向更底层去探究了。这时在我脑海中出现了一个东东：CEF！</p>
<blockquote><p><img onclick="grin(':?:');" src="../wp-includes/images/smilies/icon_question.gif" alt=":?:" />什么是CEF？CEF全称Cisco Express Forwarding，思科特快转发。该技术是思科私有的用以提高数据转发能力的技术，在配备Supervisor引擎的路由器上CEF甚至可以实现线速的路由转发！简单地说：在普通的数据转发时，IOS判断数据适合使用哪种转发方式转发，最原始的方式就是根据路由表、各接口的连接关系、是否启用了策略等逐一递归，最后得出数据的出口。但这是一个比较费时的过程，而且效率不高。所以，cisco就在每次转发数据的同时，缓存路由的相关递归结果（CEF表），下次再转发同一目的的数据时就不用再进行耗时的递归查找了！直接就可以找到数据出口。CEF是cisco很优秀的技术之一，其中的原理比较复杂，不是我一言两语可以说清的，有兴趣的可以到cisco的官网看看：<a href="http://www.cisco.com/en/US/docs/ios/12_1/switch/configuration/guide/xcdcef.html">http://www.cisco.com/en/US/docs/ios/12_1/switch/configuration/guide/xcdcef.html</a></p></blockquote>
<p>很明显，在普通的路由转发中，CEF才是最终决定数据转发的依据！我们不妨看看CEF表：<br />
R1#show ip cef<br />
Prefix              Next Hop             Interface<br />
0.0.0.0/32          receive<br />
1.1.1.1/32          receive<br />
3.3.3.3/32          13.0.0.3             Serial1/1<br />
12.0.0.2             Serial1/0<br />
可以看出，在cef上已经实现了负载均衡（一个目的地两个出口），但为什么转发数据时却不是同时从两个出口转发呢？由于手上没有太多关于CEF的资料，只能上cisco官网查阅相关文档，终于被我找到了一份讲述load-sharing with CEF的资料。上面提到，CEF支持两种负载均衡转发：per-destination、per-packet。而默认情况下，CEF是采取per-destination模式进行转发的，对于同一目的地的数据包，将被以同一路径进行转发！而我们刚才在R1上发送的ICMP报文都是到达同一目的地的，所以都被安排从同一路径发出，而回来时，由于R3认为去往1.1.1.1的出口只有一个，就是发给R1的s1/1口，所以就出现了上面发包和回包路径不一样的情况了。那有什么方法可以看到数据包从两个不同的出口同时发出呢？答案就是将数据包出口的load-sharing模式改为per-packet！在接口模式下使用命令：ip load-sharing per-packet（R1上的两个接口都要配置）。好了现在再从新抓包验证一下吧！</p>
<p><a href="http://alvinj.net/wp-content/uploads/CEFBGP_1A71/bgp_load_sharing2.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="bgp_load_sharing2" src="http://alvinj.net/wp-content/uploads/CEFBGP_1A71/bgp_load_sharing2_thumb.png" border="0" alt="bgp_load_sharing2" width="579" height="167" /></a><br />
从抓包的结果可以看出，源地址为1.1.1.1的ICMP报文已经分别由两个接口平均发送了！（回包路径只有一条，因为在R3上去往1.1.1.1的路径只有一条，所以回包时全都经R1的s1/1进入）</p>
<p><img onclick="grin(':arrow:');" src="../wp-includes/images/smilies/icon_arrow.gif" alt=":arrow:" />R1上两个通向ISP接口的配置：</p>
<blockquote><p>interface Serial1/0<br />
ip address 12.0.0.1 255.255.255.0<br />
<span style="color: #ff8000;"> ip load-sharing per-packet</span><br />
serial restart-delay 0<br />
!<br />
interface Serial1/1<br />
ip address 13.0.0.1 255.255.255.0<br />
<span style="color: #ff8000;"> ip load-sharing per-packet</span><br />
serial restart-delay 0</p></blockquote>
<p><img onclick="grin(':oops:');" src="../wp-includes/images/smilies/icon_redface.gif" alt=":oops:" />呼~终于写完了，花了一个晚上，还请大家多多支持！如果有任何纰漏，请务必给小弟指出，不胜感激！</p>
<h3><img onclick="grin(':!:');" src="../wp-includes/images/smilies/icon_exclaim.gif" alt=":!:" /><span style="color: #ff8000;">本文原创！如需转载请与我联系</span></h3>
]]></content:encoded>
			<wfw:commentRss>http://alvinj.net/2009/11/07/cef%e5%af%b9bgp%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1%e7%9a%84%e5%bd%b1%e5%93%8d/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>双点双向重分发进阶实验（附详解分析）</title>
		<link>http://alvinj.net/2009/10/12/%e5%8f%8c%e7%82%b9%e5%8f%8c%e5%90%91%e9%87%8d%e5%88%86%e5%8f%91%e8%bf%9b%e9%98%b6%e5%ae%9e%e9%aa%8c%ef%bc%88%e9%99%84%e8%af%a6%e8%a7%a3%e5%88%86%e6%9e%90%ef%bc%89/</link>
		<comments>http://alvinj.net/2009/10/12/%e5%8f%8c%e7%82%b9%e5%8f%8c%e5%90%91%e9%87%8d%e5%88%86%e5%8f%91%e8%bf%9b%e9%98%b6%e5%ae%9e%e9%aa%8c%ef%bc%88%e9%99%84%e8%af%a6%e8%a7%a3%e5%88%86%e6%9e%90%ef%bc%89/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 12:07:19 +0000</pubDate>
		<dc:creator>Alvin.J</dc:creator>
				<category><![CDATA[Cisco tech]]></category>
		<category><![CDATA[Cisco]]></category>
		<category><![CDATA[OSPF]]></category>
		<category><![CDATA[Redistribute]]></category>

		<guid isPermaLink="false">http://alvinj.net/2009/10/12/%e5%8f%8c%e7%82%b9%e5%8f%8c%e5%90%91%e9%87%8d%e5%88%86%e5%8f%91%e8%bf%9b%e9%98%b6%e5%ae%9e%e9%aa%8c%ef%bc%88%e9%99%84%e8%af%a6%e8%a7%a3%e5%88%86%e6%9e%90%ef%bc%89/</guid>
		<description><![CDATA[昨天老师给我们做了一个小测试，现在写上来和分享一下心得，也是我第一次写实验指南，希望大家可以多多支持，另外如果其中有什么纰漏请大家给小弟指出，不胜感激
题目要求是这样的：
为了方便理解，我特意弄了一个拓扑图

第一次弄拓扑图，还可以把？
实验要求：

R1、R2、R4上要运行Eigrp，AS号为10，R2、R3、R4上要运行OSPF，此外R1上还要运行Eigrp 100
R2、R4、R3上的Lo0口要加入到OSPF进程中，R1的lo0口加入到Eigrp 10中，而lo100口加入到Eigrp 100中；
在R2、R4上进行双向重分发
全网可达
R3&#8212;-&#62;R1的LoopBack 100接口要实现负载均衡；
R3&#8212;-&#62;R1的LoopBack 0 口首选R2作为它的下一跳（但R2出现问题时应该有备用路由）

实验过程、需求分析及注意事项：

首先，为各路由器接口配好地址，然后分别在R1、R2、R4上跑Eigrp并将上面要求中的接口加入到路由进程中，在R2、R3、R4上跑OSPF并将要求的接口加入到路由进程中，做完以上工作后，查看各路由表是否正常。在R2、R4上应该可以ping通除100.100.100.100以外的所有接口。
确保各路由器正常获得路由之后，我们先在R1上将Eigrp100 重分布到Eigrp 10中，让其他路由器获得100.100.100.100路由，完成后可以在R2、R4上看到标记为D EX的外部路由（注意其AD为170）
下面就要在R2、R4上对Eigrp和OSPF进行双向重分布了。我们先在R2上做，先将eigrp 10重分布到OSPF10中（redistribute Eigrp 10 subnets），此时将可以在R3的路由表上看到四条由Eigrp重分发进来的O E2路由，再来看看R4上面的路由表，请注意去往100.100.100.100的路由，其标记已经由D EX变为O E2了！这条Eigrp的外部路由被AD值更低的OSPF路由取代了！这明显不是到达100.100.100.100的最优路由，先不管，完成单点双向重分布先。在Eigrp进程中将OSPF10重分布，查看R1路由表，四条标记为D EX的路由成功学习到了，全网可达。
为了让R4上去往100.100.100.100的路由最优，我们需要在R4上使用分发列表（distribute-List）将从F0/0口进入的100.100.100.100路由过滤掉。这里我们需要结合access-list来做：access-list 40 deny   100.100.100.0 0.0.0.255 用来过滤掉该路由，但不要忘记在后面加上一条：access-list 40 permit any。然后在OSPF进程中：distribute-list 40 in FastEthernet0/0 是用分发列表将F0/0口进来的匹配ACL 40的路由过滤掉，再查看R4上路由表，去往100.100.100.100的最优了！
现在我们再来在R4上将Eigrp重分发到OSPF，完成后回过头来看看R3的路由表，去往100.100.100.100的下一跳变成了R4了！没有达到负载均衡的效果，再来看看R2上的路由表，奇怪的事情再次发生了，R2去往100.100.100.100的下一跳又变成R3了，因为从OSPF通告过来的相同的路由具有更低的AD！而我们要做的就是重复步骤3中的工作，使用distribute-list来过滤该路由，完成后查看R2上路由表，去往100.100.100.100路由最优，而且R3上也实现了该路由的负载均衡了！继续完成双向重分发。
现在前面5个要求都实现了，接下实现第6个要求。我们查看R3上的路由表，可以看到从它去往R1上的lo0口正在负载均衡，我们需要它只有一个下一跳，而且需要有备用路由，所以修改该路由的Cost值是较好的方法，使用Route-map可以实现该效果，修改Cost值之后该路由将会被Cost更低的来自R2的路由替代，而如果当R2走不通时，该路由将成为唯一选择，自动进入路由表，实现冗余，请结合下面贴出的配置理解

详细配置如下：（其中颜色字体处为关键配置）

R1:
!
interface Loopback0
ip address 10.10.10.10 255.255.255.255
!
interface Loopback100
ip address 100.100.100.100 255.255.255.255
!
interface FastEthernet0/0
ip address 172.16.12.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 172.16.14.1 255.255.255.0
duplex auto
speed auto
!
!
router eigrp 10
redistribute eigrp 100 [...]]]></description>
			<content:encoded><![CDATA[<p>昨天老师给我们做了一个小测试，现在写上来和分享一下心得，也是我第一次写实验指南，希望大家可以多多支持，另外如果其中有什么纰漏请大家给小弟指出，不胜感激<img onclick="grin(':shock:');" src="http://alvinj.net/wp-includes/images/smilies/icon_eek.gif" alt=":shock:" /></p>
<p>题目要求是这样的：</p>
<p>为了方便理解，我特意弄了一个拓扑图</p>
<p><a href="http://alvinj.net/wp-content/uploads/e215177c63ff_D234/redistribute.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="redistribute" src="http://alvinj.net/wp-content/uploads/e215177c63ff_D234/redistribute_thumb.jpg" border="0" alt="redistribute" width="546" height="328" /></a></p>
<p>第一次弄拓扑图，还可以把？<img onclick="grin(':grin:');" src="http://alvinj.net/wp-includes/images/smilies/icon_biggrin.gif" alt=":grin:" /></p>
<p>实验要求：</p>
<ol>
<li>R1、R2、R4上要运行Eigrp，AS号为10，R2、R3、R4上要运行OSPF，此外R1上还要运行Eigrp 100</li>
<li>R2、R4、R3上的Lo0口要加入到OSPF进程中，R1的lo0口加入到Eigrp 10中，而lo100口加入到Eigrp 100中；</li>
<li>在R2、R4上进行双向重分发</li>
<li>全网可达</li>
<li>R3&#8212;-&gt;R1的LoopBack 100接口要实现负载均衡；</li>
<li>R3&#8212;-&gt;R1的LoopBack 0 口首选R2作为它的下一跳（但R2出现问题时应该有备用路由）</li>
</ol>
<p><img onclick="grin(':!:');" src="http://alvinj.net/wp-includes/images/smilies/icon_exclaim.gif" alt=":!:" />实验过程、需求分析及注意事项：</p>
<ol>
<li>首先，为各路由器接口配好地址，然后分别在R1、R2、R4上跑Eigrp并将上面要求中的接口加入到路由进程中，在R2、R3、R4上跑OSPF并将要求的接口加入到路由进程中，做完以上工作后，查看各路由表是否正常。在R2、R4上应该可以ping通除100.100.100.100以外的所有接口。</li>
<li>确保各路由器正常获得路由之后，我们先在R1上将Eigrp100 重分布到Eigrp 10中，让其他路由器获得100.100.100.100路由，完成后可以在R2、R4上看到标记为D EX的外部路由（注意其AD为170）</li>
<li>下面就要在R2、R4上对Eigrp和OSPF进行双向重分布了。我们先在R2上做，先将eigrp 10重分布到OSPF10中（redistribute Eigrp 10 subnets），此时将可以在R3的路由表上看到四条由Eigrp重分发进来的O E2路由，再来看看R4上面的路由表，请注意去往100.100.100.100的路由，其标记已经由D EX变为O E2了！这条Eigrp的外部路由被AD值更低的OSPF路由取代了！这明显不是到达100.100.100.100的最优路由，先不管，完成单点双向重分布先。在Eigrp进程中将OSPF10重分布，查看R1路由表，四条标记为D EX的路由成功学习到了，全网可达。</li>
<li>为了让R4上去往100.100.100.100的路由最优，我们需要在R4上使用分发列表（distribute-List）将从F0/0口进入的100.100.100.100路由过滤掉。这里我们需要结合access-list来做：access-list 40 deny   100.100.100.0 0.0.0.255 用来过滤掉该路由，但不要忘记在后面加上一条：access-list 40 permit any。然后在OSPF进程中：distribute-list 40 in FastEthernet0/0 是用分发列表将F0/0口进来的匹配ACL 40的路由过滤掉，再查看R4上路由表，去往100.100.100.100的最优了！</li>
<li>现在我们再来在R4上将Eigrp重分发到OSPF，完成后回过头来看看R3的路由表，去往100.100.100.100的下一跳变成了R4了！没有达到负载均衡的效果，再来看看R2上的路由表，奇怪的事情再次发生了，R2去往100.100.100.100的下一跳又变成R3了，因为从OSPF通告过来的相同的路由具有更低的AD！而我们要做的就是重复步骤3中的工作，使用distribute-list来过滤该路由，完成后查看R2上路由表，去往100.100.100.100路由最优，而且R3上也实现了该路由的负载均衡了！继续完成双向重分发。</li>
<li>现在前面5个要求都实现了，接下实现第6个要求。我们查看R3上的路由表，可以看到从它去往R1上的lo0口正在负载均衡，我们需要它只有一个下一跳，而且需要有备用路由，所以修改该路由的Cost值是较好的方法，使用Route-map可以实现该效果，修改Cost值之后该路由将会被Cost更低的来自R2的路由替代，而如果当R2走不通时，该路由将成为唯一选择，自动进入路由表，实现冗余，请结合下面贴出的配置理解</li>
</ol>
<p><span style="color: #ff8000;"><span style="color: #000000;"><img onclick="grin(':arrow:');" src="http://alvinj.net/wp-includes/images/smilies/icon_arrow.gif" alt=":arrow:" /></span>详细配置如下</span>：（其中颜色字体处为关键配置）</p>
<blockquote><p><span id="more-292"></span></p>
<p>R1:<br />
!<br />
interface Loopback0<br />
ip address 10.10.10.10 255.255.255.255<br />
!<br />
interface Loopback100<br />
ip address 100.100.100.100 255.255.255.255<br />
!<br />
interface FastEthernet0/0<br />
ip address 172.16.12.1 255.255.255.0<br />
duplex auto<br />
speed auto<br />
!<br />
interface FastEthernet0/1<br />
ip address 172.16.14.1 255.255.255.0<br />
duplex auto<br />
speed auto<br />
!<br />
!<br />
router eigrp 10<br />
<span style="color: #ff8000;">redistribute eigrp 100</span> <span style="color: #89dd22;">/&#8212;&#8211;将eigrp 100 重分发到eigrp 10 中,由于是同类协议重分发,不需要指定Metric参数<br />
</span> network 10.10.10.10 0.0.0.0<br />
network 172.16.12.0 0.0.0.255<br />
network 172.16.14.0 0.0.0.255<br />
no auto-summary<br />
!<br />
router eigrp 100<br />
network 100.100.100.100 0.0.0.0  /<br />
no auto-summary<br />
<span style="color: #89dd22;">!/&#8212;&#8211;我们不需要将eigrp 10中的路由重分发到eigrp 100中,因为只有一个接口被加入到路由进程中而且它后面没有连接更多的路由器,到达其他目的地的路由已经存在在路由表,但如果接口后面还连接了其他路由器,而这些路由器也需要达到本网络,那么就需要进行双向重分发了,这也是从减少开销方面考虑的</span></p></blockquote>
<blockquote><p>R2:</p>
<p>interface Loopback0<br />
ip address 10.10.20.20 255.255.255.255<br />
!<br />
interface FastEthernet0/0<br />
ip address 172.16.12.2 255.255.255.0<br />
duplex auto<br />
speed auto<br />
!<br />
interface FastEthernet0/1<br />
ip address 172.16.23.2 255.255.255.0<br />
duplex auto<br />
speed auto<br />
!<br />
router eigrp 10<br />
<span style="color: #ff8000;">redistribute ospf 10 metric 10000 100 255 1 1500</span><br />
network 172.16.12.0 0.0.0.255<br />
no auto-summary<br />
!<br />
router ospf 10<br />
log-adjacency-changes<br />
<span style="color: #ff8000;">redistribute eigrp 10 subnets</span><br />
network 10.10.20.20 0.0.0.0 area 0<br />
network 172.16.23.0 0.0.0.255 area 0<br />
<span style="color: #ff8000;">distribute-list 20 in FastEthernet0/1</span> <span style="color: #89dd22;">/&#8212;&#8211;这里使用了distribute-list来过滤符合Access-List 20的路由条目从F0/1接口进入路由器,因为在重分发过程中管理距离更小的OSPF次优路由将取代原来最优的外部Eigrp路由(OSPF是110,外部Eigrp为170!),所以我们需要阻止从OSPF通告过来的次优路由进入本路由器路由表,使管理距离更大但最优的外部Eigrp路由顺利进入路由表</span><br />
!<br />
!<br />
<span style="color: #ff8000;">access-list 20 deny   100.100.100.0 0.0.0.255<br />
access-list 20 permit any</span><br />
!</p>
<p>R3:<br />
interface Loopback0<br />
ip address 10.10.30.30 255.255.255.255<br />
!<br />
interface FastEthernet0/0<br />
ip address 172.16.34.3 255.255.255.0<br />
duplex auto<br />
speed auto<br />
!<br />
interface FastEthernet0/1<br />
ip address 172.16.23.3 255.255.255.0<br />
duplex auto<br />
speed auto<br />
!<br />
!<br />
router ospf 10<br />
log-adjacency-changes<br />
network 10.10.30.30 0.0.0.0 area 0<br />
network 172.16.23.0 0.0.0.255 area 0<br />
network 172.16.34.0 0.0.0.255 area 0<br />
!<br />
<span style="color: #89dd22;">!/&#8212;&#8211;R3上比较简单,只运行了一个OSPF进程</span></p>
<p>R4:</p>
<p>!<br />
interface Loopback0<br />
ip address 10.10.40.40 255.255.255.255<br />
!<br />
interface FastEthernet0/0<br />
ip address 172.16.34.4 255.255.255.0<br />
duplex auto<br />
speed auto<br />
!<br />
interface FastEthernet0/1<br />
ip address 172.16.14.4 255.255.255.0<br />
duplex auto<br />
speed auto<br />
!<br />
!<br />
router eigrp 10<br />
<span style="color: #ff8000;"> redistribute ospf 10 metric 10000 100 255 1 150</span>0  <span style="color: #89dd22;">/&#8212;&#8211;正常地将OSPF重分发到Eigrp中<br />
</span> network 172.16.14.0 0.0.0.255<br />
no auto-summary<br />
!<br />
router ospf 10<br />
log-adjacency-changes<br />
<span style="color: #ff8000;">redistribute eigrp 10 subnets route-map 100</span> <span style="color: #89dd22;">/&#8212;&#8211;在将Eigrp重分发到OSPF的过程中调用route-map来实现修改Metric值的目的<br />
</span> network 10.10.40.40 0.0.0.0 area 0<br />
network 172.16.34.0 0.0.0.255 area 0<br />
<span style="color: #ff8000;">distribute-list 40 in FastEthernet0/0</span> <span style="color: #89dd22;">/&#8212;&#8211;上面已经在R2上面做好了distribute-list了,从Eigrp中学到的100.100.100.100路由也成功进入路由表,但你会发现,R2上会将重分布过来的100.100.100.100路由通告给R4,造成R4的路由表上面出现次优路由,此处调用distribute-list将该路由过滤调,防止它进入路由表<br />
</span>!<br />
<span style="color: #ff8000;">access-list 10 permit 10.10.10.0 0.0.0.255<br />
access-list 40 deny   100.100.100.0 0.0.0.255<br />
access-list 40 permit any</span><br />
!<br />
<span style="color: #ff8000;">route-map 100 permit 10<br />
match ip address 10<br />
set metric 60<br />
</span><span style="color: #89dd22;">!/&#8212;&#8211;序号为10的route-map,如果匹配Access-List 10,执行set metric动作,将路由的Metric只改为60<br />
</span>!<br />
<span style="color: #ff8000;">route-map 100 permit 20<br />
set metric 20<br />
</span><span style="color: #89dd22;">!/&#8212;&#8211;序号20的route-map,其中没有匹配内容,即是所有的不匹配第10条的route-map都符合条件,将Metric至改为20,也就是路由本来Metric值大小</span><br />
!<br />
<img onclick="grin(':!:');" src="http://alvinj.net/wp-includes/images/smilies/icon_exclaim.gif" alt=":!:" />还有另外一种做法就是,改为在路由器R2上面做route-map,在第10条route-map中直接将匹配Access-List 10 路由的Metric值改小,这样就不需要对其他路由的Metric值进行修改了,这样做的好处是减小了开销,而且实施起来也比较简单,以这次的要求来做,这种做法显得更好些</p></blockquote>
<p>下面我们来看看效果：</p>
<p>从R3上用traceroute 100.100.100.100结果：</p>
<p>Tracing the route to 100.100.100.100</p>
<p>1 172.16.34.4 188 msec<br />
172.16.23.2 116 msec<br />
172.16.34.4 40 msec<br />
2 12.0.0.1 228 msec<br />
14.0.0.1 52 msec *</p>
<p>可以看出，到达100.100.100.100有两条路可以走（R2、R4）负载均衡达成！</p>
<p>再从R3上traceroute 10.10.10.10：</p>
<p>1 172.1623.2 196 msec 80 msec 48 msec<br />
2 172.1612.1 216 msec *  40 msec</p>
<p>第5、6个要求实现了，全网也可达了！任务完成！<img onclick="grin(':cool:');" src="http://alvinj.net/wp-includes/images/smilies/icon_cool.gif" alt=":cool:" /></p>
<p><img onclick="grin(':x');" src="http://alvinj.net/wp-includes/images/smilies/icon_mad.gif" alt=":x" />呼~终于写完了，花了一个下午的时间，请大家多多支持！哈哈，第一次写实验指南，如果有任何纰漏，请给小弟指出，不胜感激！</p>
]]></content:encoded>
			<wfw:commentRss>http://alvinj.net/2009/10/12/%e5%8f%8c%e7%82%b9%e5%8f%8c%e5%90%91%e9%87%8d%e5%88%86%e5%8f%91%e8%bf%9b%e9%98%b6%e5%ae%9e%e9%aa%8c%ef%bc%88%e9%99%84%e8%af%a6%e8%a7%a3%e5%88%86%e6%9e%90%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>简单实验:OSPF中DR和BDR的选举的疑问..</title>
		<link>http://alvinj.net/2009/03/20/%e7%ae%80%e5%8d%95%e5%ae%9e%e9%aa%8cospf%e4%b8%addr%e5%92%8cbdr%e7%9a%84%e9%80%89%e4%b8%be%e7%9a%84%e7%96%91%e9%97%ae/</link>
		<comments>http://alvinj.net/2009/03/20/%e7%ae%80%e5%8d%95%e5%ae%9e%e9%aa%8cospf%e4%b8%addr%e5%92%8cbdr%e7%9a%84%e9%80%89%e4%b8%be%e7%9a%84%e7%96%91%e9%97%ae/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 16:18:45 +0000</pubDate>
		<dc:creator>Alvin.J</dc:creator>
				<category><![CDATA[Cisco tech]]></category>
		<category><![CDATA[Cisco]]></category>
		<category><![CDATA[OSPF]]></category>
		<category><![CDATA[实验]]></category>

		<guid isPermaLink="false">http://alvinj.net/?p=48</guid>
		<description><![CDATA[今天在看OSPF路由选择协议时突然对DR和BDR的选举过程有点好奇,于是做了个实验去了解一下
实验是在Dynamips模拟器中进行的,拓扑如下图:
 
将R1~R4上的F0/0接口打开,地址段用10.0.0.0,所有Router配置在area0中
4个路由器形成一个典型的多路访问广播网络.在这种网络中开启ospf是会引起DR和BDR的选举的.
在R1~R4上开启ospf进程,宣告10.0.0.0网络,为方便起见,在所有路由器上配上loopback地址(R1上为1.1.1.1,依次类推)并将他们都宣告到ospf进程中.如无意外4个路由器都会以各自的loopback口地址为RID,在全局配置模式下用show ip ospf nei查看DR和BDR的选举状况.或许你会见到DB不是我们希望见到的R4(因为R4的RID是最大的4.4.4.4)因为DR和BDR是非抢占试的,所以可能在你设置R4的loopback口时DR和BDR都已经选好了.R4就只能做DROther了,为了使R4成为DR,R3成为BDR,我需要使用clear ip ospf process命令去重置OSPF进程.在这之后ospf的邻居关系和链路状态数据库等将会重新建立
稍等片刻后,再次查看邻居表,R4已经成为了DR,R3也顺利成为BDR.
为了更加清晰了解DR的选举.我尝试将R2(DRother)的F0/0链路断开,并开启debug ip ospf adj查看邻居的建立过程
得出的信息如下(内容有删减):
Router(config-if)#no shut&#160;&#160;&#160;&#160; //&#8212;&#8212;-关闭F0/0链路   06:03:15: OSPF: Interface FastEthernet0/0 going Up&#160;&#160; 06:03:15: OSPF: Build router LSA for area 0, router ID 10.0.0.2, seq 0&#215;8000000B 
06:03:17: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up   06:03:17: OSPF: 2 Way Communication to 10.0.0.3 on FastEthernet0/0, state 2WAY(与R3建立双向关系) [...]]]></description>
			<content:encoded><![CDATA[<p>今天在看OSPF路由选择协议时突然对DR和BDR的选举过程有点好奇,于是做了个实验去了解一下</p>
<p>实验是在Dynamips模拟器中进行的,拓扑如下图:</p>
<p><a href="http://alvinj.net/wp-content/uploads/OSPFDRBDR_40E/lab_1.png"><img title="lab_1" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="276" alt="lab_1" src="http://alvinj.net/wp-content/uploads/OSPFDRBDR_40E/lab_1_thumb.png" width="459" border="0" /></a> </p>
<p>将R1~R4上的F0/0接口打开,地址段用10.0.0.0,所有Router配置在area0中</p>
<p>4个路由器形成一个典型的多路访问广播网络.在这种网络中开启ospf是会引起DR和BDR的选举的.</p>
<p>在R1~R4上开启ospf进程,宣告10.0.0.0网络,为方便起见,在所有路由器上配上loopback地址(R1上为1.1.1.1,依次类推)并将他们都宣告到ospf进程中.如无意外4个路由器都会以各自的loopback口地址为RID,在全局配置模式下用<em><strong>show ip ospf</strong></em> nei查看DR和BDR的选举状况.或许你会见到DB不是我们希望见到的R4(因为R4的RID是最大的4.4.4.4)因为DR和BDR是非抢占试的,所以可能在你设置R4的loopback口时DR和BDR都已经选好了.R4就只能做DROther了,为了使R4成为DR,R3成为BDR,我需要使用<em><strong>clear ip ospf process</strong></em>命令去重置OSPF进程.在这之后ospf的邻居关系和链路状态数据库等将会重新建立</p>
<p>稍等片刻后,再次查看邻居表,R4已经成为了DR,R3也顺利成为BDR.</p>
<p>为了更加清晰了解DR的选举.我尝试将R2(DRother)的F0/0链路断开,并开启<strong><em>debug ip ospf adj</em></strong>查看邻居的建立过程</p>
<p>得出的信息如下(内容有删减):</p>
<p>Router(config-if)#no shut&#160;&#160;&#160;&#160; //&#8212;&#8212;-关闭F0/0链路   <br />06:03:15: OSPF: Interface FastEthernet0/0 going Up&#160;&#160; <br />06:03:15: OSPF: Build router LSA for area 0, router ID 10.0.0.2, seq 0&#215;8000000B </p>
<p>06:03:17: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up   <br />06:03:17: OSPF: 2 Way Communication to 10.0.0.3 on FastEthernet0/0, state 2WAY(与R3建立双向关系)    <br />06:03:17: OSPF: Backup seen Event before WAIT timer on FastEthernet0/0    <br />06:03:17: OSPF: DR/BDR election on FastEthernet0/0&#160; (在F0/0上选举DR和BDR)    <br />06:03:17: OSPF: Elect BDR 10.0.0.3&#160; (选举了R3为DR和BDR)    <br />06:03:17: OSPF: Elect DR 10.0.0.3    <br />06:03:17:&#160;&#160;&#160;&#160;&#160;&#160;&#160; DR: 10.0.0.3 (Id)&#160;&#160; BDR: 10.0.0.3 (Id)    <br />06:03:17: OSPF: Send DBD to 10.0.0.3 on FastEthernet0/0 seq 0xC6D opt 0&#215;42 flag 0&#215;7 len 32</p>
<p>06:03:18: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up   <br />06:03:20: OSPF: 2 Way Communication to 10.0.0.1 on FastEthernet0/0, state 2WAY    <br />06:03:20: OSPF: Neighbor change Event on interface FastEthernet0/0    <br />06:03:20: OSPF: DR/BDR election on FastEthernet0/0     <br />06:03:20: OSPF: Elect BDR 10.0.0.3    <br />06:03:20: OSPF: Elect DR 10.0.0.3    <br />06:03:20:&#160;&#160;&#160;&#160;&#160;&#160;&#160; DR: 10.0.0.3 (Id)&#160;&#160; BDR: 10.0.0.3 (Id)    <br />06:03:20: OSPF: 2 Way Communication to 10.0.0.4 on FastEthernet0/0, state 2WAY    <br />06:03:20: OSPF: Neighbor change Event on interface FastEthernet0/0    <br />06:03:20: OSPF: DR/BDR election on FastEthernet0/0     <br />06:03:20: OSPF: Elect BDR 10.0.0.3    <br />06:03:20: OSPF: Elect DR 10.0.0.4    <br />06:03:20:&#160;&#160;&#160;&#160;&#160;&#160;&#160; DR: 10.0.0.4 (Id)&#160;&#160; BDR: 10.0.0.3 (Id)</p>
<p>上面可以看出,R2首先是跟R3发Hello包的?所以他开始就认为R3是DR?然后,他又与R1建立邻居关系,但R3 RID比R1高,所以R3依然是DR,然后R2又跟R4建立邻居关系,但因为R4的RID比R3高,所以成为了DR.而R3降级为BDR,但上面不是说过DR是非抢占式的吗?这看似很矛盾,不过其实是我想错了.DR与BDR的选举不是个人问题.早在R2加入区域0时,DR跟BDR就已经选出了,R2 的加入时只是在area0中</p>
<p>下面的这段信息有点不明白:</p>
<p>06:03:20: OSPF: Send DBD to 10.0.0.4 on FastEthernet0/0 seq 0&#215;1B79 opt 0&#215;42 flag 0&#215;7 len 32   <br />06:03:20: OSPF: Remember old DR 10.0.0.3 (id)    <br />06:03:21: OSPF: Reset old DR on FastEthernet0/0</p>
<p>不明白Remember old DR 10.0.0.3 (id),和Reset old DR on FastEthernet0/0的用意   </p>
<p>上面只是初步了解,明天有时间再做实验或找个IE去讨论下</p>
<p><strong>未完待续&#8230;&#8230;&#8230;</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://alvinj.net/2009/03/20/%e7%ae%80%e5%8d%95%e5%ae%9e%e9%aa%8cospf%e4%b8%addr%e5%92%8cbdr%e7%9a%84%e9%80%89%e4%b8%be%e7%9a%84%e7%96%91%e9%97%ae/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
