Juniper 模拟器使用指南 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

                                              Maa <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2007-5-19 BJ

前言

本文的立意是在没有友商设备的情况下,利用VMware模拟器实现对友商设备协议部分内容的分析,对于新业务的理解和开发以及与友商设备的互通有着一定程度的帮助。
在此特别感谢蛋蛋同学,在他的个人网站nio.name上我知道了Juniper的这个模拟器,并且从此入门,再次向他致敬。

 

PS:删除了自己新浪blog上的内容,将这一篇文档转移到51上来。

资源准备

VMware 5.5模拟器软件
Named Pipe TCP Proxy软件
JUNOS 8.1R1.5(提供封装好的VMware文件,我也是从蛋蛋的网站上获得的)

 

软件安装

分别安装VMwareNPTP软件,在此不对软件的安装进行说明,按照对应软件的默认提示安装进行即可。

 

软件使用

NPTP
其作用有点类似于部门使用的串口服务器,它把设备的串口和一个(IP+端口)对映射在一起,我们只用telnet这个ip的对应端口,就可以获得相当于访问该设备串口的服务。

 

按下图建立一个串口和(IP+端口)对的映射就可以了。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /> 

 

 

 

 
在建立好上面的映射关系后,保持NPTP软件始终打开就行。

 

VMware
    VMware打开封装成VMware文件的JUNOS后如下图所示:
 
 
该图是一个还未启动的JUNOS,可以看到上面的一些Devices,比如内存,硬盘,网卡以及串口(Serial)和CPU,都是可以编辑的,这里我们对Serial进行编辑,使其能够和NPTP软件设置的映射关联起来。双击Serial图标,弹出[Serial port]的对话框,设置其中的[Connection]部分,采用[Use named pipe]方式,并将named pipe设置为和NPTP软件中一致的named pipe,如下图所示。

 

 

这时,如上图中的junos2001junos2002junos2003分别代表三台Juniper的路由器,其中每台路由器具备4个网口。可以通过对网口的编辑,让路由器之间能够互通。双击网卡,通过弹出的[Network adapter]对话框可以看出网卡有四种类型,其中用户自定义类型可以通过自定义方式在window操作系统下产生一个虚拟网卡,使得虚拟机设备可以通过该虚拟网卡和windows操作系统通信,以便可以比较方便的抓包。
 
 
上面的相应配置做好之后,启动虚拟机,这时虚拟机界面会一直停留在如下图的界面,这是正常的。此时,请打开你的终端控制台,使用telnet方式访问之前通过NPTP软件设置好的ip地址和端口号,就可以看到本来是串口上看到的启动信息,等待系统启动完毕,会提示输入用户名和帐号。此后就可以正式配置Juniper的路由器了。

 

 

 

JUNOS使用

JUNOS的配置模式:按我的理解JUNOS有三种模式
@% 

    操作系统模式,处于FreeBSD操作系统,可以使用常用的FreeBSD相关命令,比如lspwdcd等等,通过命令cli可以进入用户模式;
>

 

    用户模式,经过JUNOS封装的系统,可以进行一些简单的命令配置和所有信息显示,类似于我司路由器的config t之前的模式,使用configure命令可以进入配置模式;
#

    配置模式,在此模式下对路由器进行配置,类似于我司路由器的config t之后的模式。

 

JUNOS的命令风格:
JUNOS的命令风格在业界很特别,仅与Alcatel的命令风格略有相似之处。这里只作简单的介绍,具体的使用希望大家钻研。

 

JUNOS采用editsetdeleteshowrun showcommit来完成主体功能的配置。值得注意的是,在完成了某项功能的配置之后,只有使用commit命令提交成功之后,该配置才会生效,在commit提交之后,系统会对提交的配置进行合法性检查,只有通过合法性检查才算提交成功,否则系统会给出错误信息。合法性检查仅检查配置的合法性,并不检查配置的准确性与正确性,请注意。

 

RSVP的相关配置

RSVP功能主要从interfacesprotocolsrouting-options三个方面进行配置。
Interfaces
初始时,interface视图下是没有什么配置的,但是我们可以通过(run) show interfaces terse命令看到有em0em3四个网口,这就是我们虚拟机里看到的四个intel千兆网卡。
 

 
 
这样,我们需要给对应的网卡和lo0配上需要的ip地址。  
完成如下的配置即可
 
 
     
当完成了上述配置之后再显示接口信息会如下图。
 
 
        
值得注意的是,进行TE的相关配置时,物理接口必须支持mpls协议族,即family mpls。同时给物理接口配置了地址之后,可能使用上面的命令看不到具体的地址信息,并且也ping不通对端接口,这是正常的,应该是模拟器的原因,这时候需要保存一下配置,重启模拟器,就正常了。

 

Protocols
    Protocol视图下,需要编辑三个对应的子视图,rsvp子视图、mpls子视图和ospf子视图(视具体选用的igp而定)。

 

Rsvp子视图的配置如下:
 
 
在子视图下添加rsvp接口,即使能对应接口的rsvp功能即可,这类似于我司设备在物理接口下使能te功能和设置带宽参数。
Mpls子视图的配置如下:
 
 
在该视图下,首先也要添加mpls接口,其次在te隧道和其路径的配置都在该视图下进行,上图中的lsppath分别对应te隧道和显示路径,其他的一些属性配置整个业界大致都是一致的,仔细找下具体的命令即可,这里主要描述一个配置框架,不对细节太过于描述。

 

Ospf子视图的配置如下:
 
 
在子视图下添加ospf接口,并配置ospf支持te,与我司设备配置一致。这里需要注意的是,由于模拟器的原因,ospf不能支持组播,所以需要将ospf接口类型设置为nbma,并且显示指定ospf邻居,才能触发ospf发送单播的协议报文,建立ospf邻居,还有哪些方式可以实现同样的功能,个人没有去探究,因为在这里重点关注的是te而非ospf,望谅。

 

相关附件

一个较完整的配置和相关lsp的显示信息
           
root@% cli 
root>      
           
root> configure                
Entering configuration mode    
Users currently editing the configuration:         
  root terminal d0 (pid 3417) on since 2007-04-22 21:26:51 UTC         
      [edit protocols]         
           
[edit]     
root# run show configuration   
## Last commit: 2007-04-22 21:31:39 UTC by root    
version 8.1R1.5;               
system {   
    root-authentication {       
        encrypted-password "$1$67/rC6nA$NeboJ.WtV2i2UNzJHAyZT/"; ## SECRET-DATA            
    }      
    login {
        user mafm {            
            uid 2000;          
            class super-user;  
            authentication {   
                encrypted-password "$1$sp2gEjZW$RSjEalukJwDsrMZplbM7L0"; ## SECRET-DATA    
            }                  
        }  
    }      
    services {                 
        telnet;                
    }      
}          
logical-routers {              
    J2001; 
}          
interfaces {
    em0 {  
        unit 0 {               
            bandwidth 2m;      
            family inet {      
                address 192.168.22.201/24;         
            }                  
            family mpls;       
        }  
    }      
    lo0 {  
        unit 0 {               
            family inet {      
                address 202.1.1.1/32;              
            }                  
        }  
    }      
}           
routing-options {              
    static {
        route 0.0.0.0/0 next-hop 192.168.22.1;     
    }      
    router-id 202.1.1.1;       
}          
protocols {
    rsvp { 
        interface em0.0 {      
            bandwidth 2m;      
        }  
        interface em1.0;       
    }      
    mpls { 
        traffic-engineering mpls-forwarding;       
        admin-groups {         
            gold 1;            
            silver 2;          
            copper 3;           
            best-effort 4;     
        }  
        class-of-service 0;    
        label-switched-path frr {                  
            to 202.1.1.3;      
            record;            
            admin-group include-all [ silver copper ];                  
            fast-reroute;      
            primary lsp1;      
        }  
        label-switched-path bypass {               
            disable;           
            to 202.1.1.2;      
            primary lsp2;      
        }  
        path lsp1 {            
            192.168.23.203 loose;                  
        }  
        path lsp2 {            
            192.168.23.202 strict;                 
        }  
        interface em0.0 {      
            admin-group [ gold silver copper best-effort ];            
        }  
        interface em1.0;       
    }      
    ospf { 
        traffic-engineering {  
            shortcuts lsp-metric-into-summary;     
        }  
        area 0.0.0.0 {         
            interface em0.0 {  
                interface-type nbma;               
                priority 10;   
                neighbor 192.168.22.202;           
            }                  
            interface lo0.0;    
            interface em1.0 {  
                interface-type nbma;               
                priority 20;   
                neighbor 192.168.23.202;           
            }                  
        }  
    }      
}          
            
[edit]     
root#      
           
[edit]     
root#      
           
[edit]     
root#      
           
[edit]     
root#      
           
[edit]     
root# run show mpls lsp        
Ingress LSP: 1 sessions        
To              From            State Rt ActivePath       P     LSPname
202.1.1.3       202.1.1.1       Up     1 lsp1             *     frr    
Total 1 displayed, Up 1, Down 0
           
Egress LSP: 0 sessions         
Total 0 displayed, Up 0, Down 0
           
Transit LSP: 0 sessions        
Total 0 displayed, Up 0, Down 0
           
[edit]     
root#      
           
[edit]     
root#      
           
[edit]     
root# run show mpls lsp extensive                  
Ingress LSP: 1 sessions        
            
202.1.1.3  
  From: 202.1.1.1, State: Up, ActiveRoute: 1, LSPname: frr             
  ActivePath: lsp1 (primary)   
  FastReroute desired          
  LoadBalance: Random          
  Encoding type: Packet, Switching type: Packet, GPID: IPv4             
 *Primary   lsp1             State: Up, COS: 0     
    SmartOptimizeTimer: 180    
          Include All: copper silver               
    Computed ERO (S [L] denotes strict [loose] hops): (CSPF metric: 51)
 192.168.22.202 S 192.168.23.203 S                 
    Received RRO (ProtectionFlag 1=Available 2=InUse 4=B/W 8=Node 10=SoftPreempt):         
          192.168.22.202 192.168.23.203            
    5 Apr 22 21:31:39.541 Selected as active path  
    4 Apr 22 21:31:39.523 Record Route:  192.168.22.202 192.168.23.203 
    3 Apr 22 21:31:39.523 Up   
    2 Apr 22 21:31:39.458 Originate Call           
    1 Apr 22 21:31:39.458 CSPF: computation result accepted  192.168.22.202 192.168.23.203 
  Created: Sun Apr 22 21:31:38 2007                 
Total 1 displayed, Up 1, Down 0
           
Egress LSP: 0 sessions         
Total 0 displayed, Up 0, Down 0
           
Transit LSP: 0 sessions        
Total 0 displayed, Up 0, Down 0
           
[edit]     
root#