- 浏览: 136249 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
weitongyixun:
多谢。。。。。
PL/SQL Developer 高亮括号 -
guojigjkill:
谢了。,对我有用
泛型. -
56148083:
我也看到类似的方式修改oracleXE字符集,安装第一种方法修 ...
Oracle10g Express 版本修改字符集全过程 -
q821424508:
人烟稀少啊
泛型. -
zht110227:
很好,很强大。不过在这个地方:这个是由于VC6.0的INCLU ...
windows XP 调通tuxedo的simpapp所经历的艰苦过程
8.1. 配置OSPF
提问 NT-FAMILY: 宋体">在网络中启用OSPF
回答
Router5#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router5(config)#router ospf 87
Router5(config-router)#network 0.0.0.0 255.255.255.255 area 0
Router5(config-router)#exit
Router5(config)#end
Router5#
注释 这里OSPF的进程号是本地使用,不需要像EIGRP一样整个网络保持一致。在12.3(11)T以后有一个专门的命令来指定端口加入OSPF 区域,而不需要用network的命令
Router9#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router9(config)#router ospf 87
Router9(config-router)#exit
Router9(config)#interface FastEthernet0/0
Router9(config-if)#ip address 172.18.5.9 255.255.255.0
Router9(config-if)#ip ospf 87 area 10
Router9(config-if)#exit
Router9(config)#end
Router9#
8.2. 路由过滤
提问 进行路由过滤,只允许OSPF宣告特定路由进入路由表
回答
入方向
Router5#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router5(config)#access-list 1 deny 172.20.10.0
Router5(config)#access-list 1 permit any
Router5(config)#router ospf 87
Router5(config-router)#distribute-list 1 in Ethernet0/0
Router5(config-router)#exit
Router5(config)#end
Router5#
注释 根据OSPF的机制,所有区域内的路由器LSA数据库内容必须保持一致,所以正常情况下不能对出方向进行过滤,入方向过滤也是防止其进入路由表,在本地的LSA数据库还是有此路由。当然如果确实需要对出方向进行过滤就必须对出方向所有的LSA进行过滤,这样会导致下游路由器的LSA数据库不完整,一般不推荐使用。
点对多点链路出方向过滤
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#router ospf 87
Router1(config-router)#neighbor 192.168.1.3 database-filter all out
Router1(config-router)#exit
Router1(config)#end
Router1#
广播,点到点链路出方向过滤
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#interface Serial0/0
Router1(config-if)#encapsulation frame-relay
Router1(config-if)#exit
Router1(config)#interface Serial0/0.10 multipoint
Router1(config-subif)#ip address 192.168.1.1 255.255.255.0
Router1(config-subif)#ip ospf network broadcast
Router1(config-subif)#ip ospf database-filter all out
Router1(config-subif)#frame-relay map ip 192.168.1.3 101 broadcast
Router1(config-subif)#frame-relay map ip 192.168.1.5 109 broadcast
Router1(config-subif)#exit
Router1(config)#router ospf 1
Router1(config-router)#network 0.0.0.0 255.255.255.255 area 10
Router1(config-router)#exit
Router1(config)#end
Router1#
8.3. 调整OSPF代价值
提问 调整OSPF链路的代价值
回答
全局调整
Router5#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router5(config)#router ospf 87
Router5(config-router)#auto-cost reference-bandwidth 1000
Router5(config-router)#exit
Router5(config)#end
Router5#
接口调整
Router5#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router5(config)#interface Ethernet0
Router5(config-if)#ip ospf cost 31
Router5(config-if)# exit
Router5(config)#end
Router5#
注释
8.4. 宣告缺省路由到OSPF
提问 宣告缺省路由到OSPF网络
回答
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#ip route 0.0.0.0 0.0.0.0 172.25.1.1
Router1(config)#router ospf 55
Router1(config-router)#default-information originate metric 30 metric-type 1
Router1(config-router)#exit
Router1(config)#end
Router1#
注释 在这里不能使用再发布静态路由得命令来发布缺省路由
8.5. 再发布静态路由到OSPF
提问 宣告一条或者多条静态路由到OSPF
回答
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#ip route 192.168.10.0 255.255.255.0 172.22.1.4
Router1(config)#ip route 172.24.1.0 255.255.255.0 172.22.1.4
Router1(config)#ip route 10.100.1.0 255.255.255.0 172.22.1.4
Router1(config)#router ospf 55
Router1(config-router)#redistribute static
% Only classful networks will be redistributed
Router1(config-router)#exit
Router1(config)#end
Router1#
注释 根据上面得命令提示可以看到缺省情况下OSPF只再发布有类得路由,所以按照例子上虽然三条静态路由但是只有192.168.10.0/24是有类路由,能够发布出去,其它两个就不行。这时候就需要配置redistribute static subnets命令来发布子网,当然也可以添加metric等选项
8.6. 再发布外部路由到OSPF
提问 再发布其它路由协议得路由信息到OSPF
回答
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#router ospf 55
Router1(config-router)#redistribute eigrp 11 subnets
Router1(config-router)#exit
Router1(config)#end
Router1#
在12.3(2)T以后增加了下面得命令对再发布过来得条目做了限制
Router1(config-router)#redistribute maximum-prefix 1000 80
注释 这里还是要注意subnet得参数。对于最后一个条目限制得命令,第一个1000是路由条目数,第二个80是百分比
8.7. DR选举
提问 对DR选举做人为控制
回答
Router5#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router5(config)#interface Ethernet0
Router5(config-if)#ip ospf priority 10
Router5(config-if)#exit
Router5(config)#end
Router5#
注释 DR选举人工控制最重要得两种情况是MOSPF和NBMA网络。在MOSPF网络中,MOSPF得DR和正常OSPF得DR是相同得,而如果DR不是一个MOSPF得路由器那么所有组播得路由就不能转发,思科路由器是不支持MOPSF得,所以在这种情况下必须使用ip ospf priority 0得命令来禁止其称为BDR或者DR。在NBMA得网络中要不DR设置在Hub路由器上。还有一个重要得问题是DR是不能强占得,如果网络中已经有了DR,这时即使新加入得路由器有更高得优先级他也不能称为DR,必须等待现在得DR出了问题才可以重新选举为DR。
8.8. 设置OSPF RID
提问 人工设定路由器得Router ID
回答
一种是Loopback地址方式
Router5#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router5(config)#interface Loopback0
Router5(config-if)#ip address 172.25.25.6 255.255.255.255
Router5(config-if)#exit
Router5(config)#end
Router5#
一种是Router ID命令方式
Router5#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router5(config)#router ospf 87
Router5(config-router)#router-id 172.25.1.7
Router5(config-if)#exit
Router5(config)#end
Router5#
注释 缺省会用最大IP地址作为Router ID。Router id命令后面得IP地址可以随意,不需要必须是存在得地址。另外router id一旦定下来以后,即使重新修改了地址也不能变更,必须通过clear
ip ospf process得方式或者reload得方式来改变
8.9. 启用OSPF鉴权
提问 对邻居关系建立启用鉴权从而保证网络设备得安全性
回答
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#interface Serial0/1
Router1(config-if)#ip ospf message-digest-key 1 md5 oreilly
Router1(config-if)#exit
Router1(config)#router ospf 55
Router1(config-router)#area 2 authentication message-digest
Router1(config-router)#exit
Router1(config)#end
Router1#
注释 注意得是不同厂商得OPSF MD5加密认证互联可能会有问题,因为RFC没有规范。对于新老密码替换得问题,通过配置新旧两个密码得方式来解决
8.10. 选择合适得区域类型
提问 不同得区域有不同得链路状态数据库,通过不同区域得选择来节省路由器资源和更快收敛
回答
Stubby Area
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#router ospf 55
Router1(config-router)#area 100 stub
Router1(config-router)#exit
Router1(config)#end
Router1#
Totally Stubby Area
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#router ospf 55
Router1(config-router)#area 100 stub no-summary
Router1(config-router)#exit
Router1(config)#end
Router1#
Not So Stubby Areas (NSSA), 同时生成一条缺省路由
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#router ospf 55
Router1(config-router)#area 100 nssa default-information-originate
Router1(config-router)#exit
Router1(config)#end
Router1#
Totally Stubby, Not So Stubby Area.
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#router ospf 55
Router1(config-router)#area 100 nssa no-summary
Router1(config-router)#exit
Router1(config)#end
Router1#
注释 这些都是在ABR上的配置,对于区域里面其它的路由器就是只有NSSA和stub的配置没有必要配置是否为totally stubby。
8.11. 在拨号接口上配置OSPF
提问 在拨号接口上启用OSPF,但又不想让OSPF的协议数据一直保持拨号链路处于激活状态
回答
下面例子是R4只能拨号到R1
Router4#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router4(config)#username Router1 password 0 cisco
Router4(config)#interface BRI0
Router4(config-if)#ip address 192.168.15.4 255.255.255.0
Router4(config-if)#encapsulation ppp
Router4(config-if)#ip ospf demand-circuit
Router4(config-if)#dialer map ip 192.168.15.1 broadcast 4165550000
Router4(config-if)#dialer-group 1
Router4(config-if)#isdn switch-type basic-ni
Router4(config-if)#isdn spid1 416555001000 4165550010
Router4(config-if)#isdn spid2 416555001100 4165550011
Router4(config-if)#ppp authentication chap
Router4(config-if)#ppp multilink
Router4(config-if)#exit
Router4(config)#dialer-list 1 protocol ip permit
Router4(config)#router ospf 87
Router4(config-router)#network 192.168.15.0 0.0.0.255 area 10
Router4(config-router)#exit
Router4(config)#end
Router4#
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#username Router4 password 0 cisco
Router1(config)#interface BRI0/0
Router1(config-if)#ip address 192.168.15.1 255.255.255.0
Router1(config-if)#encapsulation ppp
Router1(config-if)#dialer-group 1
Router1(config-if)#isdn switch-type basic-ni
Router1(config-if)#isdn spid1 416555000000 4165550000
Router1(config-if)#isdn spid2 416555000100 4165550001
Router1(config-if)#ppp authentication chap
Router1(config-if)#ppp multilink
Router1(config-if)#exit
Router1(config)#dialer-list 1 protocol ip permit
Router1(config)#router ospf 87
Router1(config-router)#network 192.168.15.0 0.0.0.255 area 10
Router1(config-router)#exit
Router1(config)#end
Router1#
注释 使用ip ospf demand-circuit 的命令可以保持邻居关系一直是FULL状态,而不管链路是否激活
8.12. 路由汇总
提问 减少路由表大小
回答
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#router ospf 55
Router1(config-router)#area 100 range 172.20.0.0 255.255.0.0
Router1(config-router)#area 0 range 172.25.0.0 255.255.0.0
Router1(config-router)#area 2 range 10.0.0.0 255.0.0.0
Router1(config-router)#exit
Router1(config)#end
Router1#
注释 OSPF的路由汇总只能配置在ABR上。生成的汇总路由代价值缺省情况下和子网路由中最小的一致,也就是说汇总路由的稳定状态和代价值最小的那个路由条目相关,这也是RFC1583上的定义,在新的RFC中定义了汇总路由代价值和最大的那个路由条目相关,所以一定要确定所有路由器采用相同的计算方法,思科缺省使用RFC1583的方法,禁用可以使用no compatible rfc1583。在ABR上启用汇总以后会自动生成一条汇总路由的丢弃路由(12.1(6))来避免路由回环
8.13. 在特定端口禁用OSPF
提问 禁止某个端口参与OSPF
回答
Router3#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router3(config)#router ospf 44
Router3(config-router)#network 0.0.0.0 255.255.255.255 area 100
Router3(config-router)#passive-interface Ethernet0
Router3(config-router)#exit
Router3(config)#end
Router3#
注释 OSPF也是通过配置被动接口的方式来不生成邻居关系从而避免参与OSPF。当然也可以通过不在network命令中包含此端口来禁止,下面就是另外一种很好的配置方法,network了所有接口,但是缺省所有端口是被动接口,对于需要的接口再使用no的命令才参与OSPF:
Router3(config)#router ospf 44
Router3(config-router)#network 0.0.0.0 255.255.255.255 area 100
Router3(config-router)#passive-interface default
Router3(config-router)#no passive-interface Ethernet0
Router3(config-router)#exit
Router3(config)#end
Router3#
8.14. 修改接口的网络类型
提问 修改某个端口缺省的网络类型
回答
Router9#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router9(config)#interface FastEthernet0/0
Router9(config-if)#ip ospf network ?
broadcast Specify OSPF broadcast multi-access network
non-broadcast Specify OSPF NBMA network
point-to-multipoint Specify OSPF point-to-multipoint network
point-to-point Specify OSPF point-to-point network
Router9(config-if)#
注释 上述四个关键词主要定义媒介是否支持广播或者组播数据包,是否需要选举DR。对于Broadcast网络,支持组播,DR可以自动选择,不需要配置。对于nonbroadcast网络,不支持组播,必须人工使用neighbor命令配置邻居关系。对于point-to-multipoint网络,不需要DR选举,也不需要neighbor命令,这时候需要注意的是framerelay配置中要允许broadcast:
Router9(config)#interface Serial0/0
Router9(config-if)#ip address 192.168.10.9 255.255.255.0
Router9(config-if)#encapsulation frame-relay
Router9(config-if)#frame-relay map ip 192.168.10.2 123 broadcast
Router9(config-if)#ip ospf network point-to-multipoint
Router9(config-if)#exit
Router9(config)#router ospf 1
Router9(config-router)#network 192.168.10.0 0.0.0.255 area 0
Router9(config-router)#exit
否则必须配置neighbor
Router9(config)#interface Serial0/0
Router9(config-if)#ip address 192.168.10.9 255.255.255.0
Router9(config-if)#encapsulation frame-relay
Router9(config-if)#frame-relay map ip 192.168.10.2 123
Router9(config-if)#ip ospf network point-to-multipoint non-broadcast
Router9(config-if)#exit
Router9(config)#router ospf 1
Router9(config-router)#network 192.168.10.0 0.0.0.255 area 0
Router9(config-router)#neighbor 192.168.10.2
Router9(config-router)#exit
最后一种point-to-point网络不需要DR,但必须支持组播来建立邻居,否则需要配置neighbor命令。
还有一个特殊的回环地址,缺省情况OSPF会宣告回环地址为/32的网络,但是你可以在回环接口上配置其为ip ospf network point-to-point,来强制他宣告正确的网络掩码
8.15. 路由标签
提问 对特定的路由打标签避免互相再发布出现路由回环
回答
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#router ospf 55
Router1(config-router)#redistribute eigrp 11 metric-type 1 subnets tag 67
Router1(config-router)#exit
Router1(config)#end
Router1#
注释
8.16. 记录OSPF邻居状态变化
提问 记录OSPF邻居状态变化信息
回答
Router2#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router2(config)#router ospf 12
Router2(config-router)#log-adjacency-changes
Router2(config-router)#exit
Router2(config)#end
Router2#
注释 12.1后对上面命令增加了detail参数可以看到更多邻居状态变化的信息
8.17. OSPF定时器
提问 调整定时器,加快收敛
回答
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#interface Serial0/1
Router1(config-if)#ip ospf hello-interval 5
Router1(config-if)#ip ospf dead-interval 20
Router1(config-if)#exit
Router1(config)#end
Router1#
注释 要保证和此端口相连的设备采用相同的定时器值,否则邻居关系不能建立
8.18. 减少OSPF协议流量
提问 在稳定的网络要不需要LSA的过多数据包传递
回答
Router9#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router9(config)#interface Serial0/0
Router9(config-if)#ip address 192.168.10.9 255.255.255.0
Router9(config-if)#ip ospf flood-reduction
Router9(config-if)#exit
Router9(config)#end
Router9#
注释 正常情况下OSPF会每隔一小时进行所有的LSA泛洪,在稳定网络里面一般不需要,所以通过这种方式设定LSA的DoNotAge位,避免过多流量
8.19. OSPF虚拟链路
提问 把两个分开的路由器通过虚拟链路的方式相连
回答
Router9#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router9(config)#router ospf 1
Router9(config-router)#area 10 virtual-link 10.54.0.1
Router9(config-router)#exit
Router9(config)#end
Router9#
注释 通过show ip ospf virtual-links来验证。需要注意的是这个需要两个路由器都进行配置,IP地址是对方的Router ID,要确保这个地址是通的,area后面跟的是穿越的Area
8.20. 使用域名查看OSPF状态
提问 在OSPF的show命令中现实设备域名而不是地址
回答
Router3#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router3(config)#ip ospf name-lookup
Router3(config)#end
Router3#
注释 无
8.21. OSPF排错
提问 对OSPF进行排错
回答
Router3#debug ip ospf adj
OSPF adjacency events debugging is on
Router3#注释 OSPF排错命令很多,这里只提供了对邻居关系的排错命令,因为邻居是OSPF的基础
发表评论
-
E1端口与E1-F端口连接
2008-08-03 03:26 1233E1端口与E1-F端口连接 2008年05月06日 星期 ... -
cisco show interface详解 翻译中文
2008-08-03 16:34 1536Router#show interface e0/0 Et ... -
Cisco E1配置白皮书
2008-08-03 16:40 1350E1知识点总结 1、一条E1是2.048M的链路,用PC ... -
cisco IOS cookbook 中文精简版 1-23 路由器配置和文件管理
2008-08-03 17:26 1196第一章路由器配置和文件管理路由器配置和文件管理1.1. 通 ... -
cisco IOS cookbook 中文精简版 2-23 路由器管理
2008-08-03 17:31 9892.1. 创建命令别名 提问 为常用的命令创建简洁的别名回 ... -
Cisco IOS Cookbook 中文精简版 3-23 用户访问和权限管理
2008-08-03 17:36 11593.1. 设置用户名和密码 提问 为每个单独的人员设置不同 ... -
Cisco IOS Cookbook 中文精简版 4-23 TACAS+
2008-08-03 17:38 10254.1. 用户登录集中鉴权提问 使用集中的鉴权方式对用户登 ... -
Cisco IOS Cookbook 中文精简版 5-23 IP路由
2008-08-03 17:39 11155.1. 查找路由条目提问 在路由表中查找特定的路由条目回 ... -
Cisco IOS Cookbook 中文精简版 6-23 RIP
2008-08-03 17:40 8856.1. 配置RIP(V1)提问 在简单的网络中启用RIP ... -
Cisco IOS Cookbook 中文精简版 7-23 EIGRP
2008-08-03 17:41 794发表于:2007-3-13 14:20 7. ... -
Cisco IOS Cookbook 中文精简版 9-23 BGP
2008-08-03 17:44 12609.1. Configuring BGP 提问 在网络中启 ... -
Cisco IOS Cookbook 中文精简版 10-23 帧中继
2008-08-03 17:46 90210.1. 使用点对点子接口的方式配置帧中继提问 &quo ... -
Cisco IOS Cookbook 中文精简版 11-23 队列和拥塞
2008-08-03 17:48 1320第十一章队列和拥塞11.1. Fast Switching ... -
Cisco IOS Cookbook 中文精简版 13-23 拨号备份
2008-08-03 17:50 896提问 当广域网链路中断 得时候自动拨号恢复备份链路回答Rou ... -
Cisco IOS Cookbook 中文精简版 12-23 隧道和VPN
2008-08-03 17:50 120312.1. 创建Tunnel 提问 ="FONT ... -
Cisco IOS Cookbook 中文精简版 14-23 NTP和时钟
2008-08-03 17:51 131214.1. 路由器日志显示时间戳提问 在路由器 的日志和排 ... -
Cisco IOS Cookbook 中文精简版 17-23 SNMP
2008-08-03 17:53 166317.1. 配置SNMP 提问 FONT-FAMILY: ... -
Cisco IOS Cookbook 中文精简版 16-23 路由器接口
2008-08-03 17:53 115616.1. 查看接口状态 ... -
Cisco IOS Cookbook 中文精简版 18-23 日志
2008-08-03 17:55 136718.1. 启用本地路由器日志提问 实现路由器自身保存日志 ... -
Cisco IOS Cookbook 中文精简版 19-23 访问列表
2008-08-03 17:56 108119.1. 基于源或者目的地址过滤提问 阻止来自某地址或者 ...
相关推荐
新版Cisco IOS Cookbook 中文精简版
### 思科 Cisco IOS Cookbook 中文精简版 V1.5版 #### 书籍概述与特点 《思科 Cisco IOS Cookbook》是一本专注于思科IOS系统配置的专业指南,旨在帮助读者快速解决网络配置中遇到的问题。该书属于O'Reilly出版社的...
《Cisco IOS Cookbook 中文精简版 完全版》是一本深入浅出的Cisco网络设备配置指南,旨在帮助网络管理员和工程师快速掌握Cisco IOS(Internetwork Operating System)的使用技巧和配置方法。这本书以实例为主,提供...
《Cisco IOS Cookbook中文精简版》是一本专为网络管理员量身打造的实践指南,它涵盖了Cisco路由器和交换机操作系统的各种使用技巧和解决方案。这本书深入浅出地讲解了Cisco IOS(Internetwork Operating System)中...
C#3.0 CookBook(中文版)-1 (共3部分)
C#3.0 CookBook(中文版)-3 (共3部分)
C#3.0 CookBook(中文版)-2 (共3部分)
Cisco IOS handbook, applicable for 261X series router.
标题“coverage-cookbook-complete-verification-academy”表明这是一本关于覆盖度(coverage)的食谱手册,隶属于Cadence Academy的官方文件。这种手册通常包含一系列经过精心设计的指导方案,旨在帮助读者理解和...
iOS cookbook5中文版,适合开发者入门,由国外教材翻译而来,内容讲解清楚并且一步步地操作,初学者很容易上手;而且编排风格很清爽,极力推荐。开发过程中,遇到不清楚的地方还可以查看随带的源码,赶紧开始你的ios...
《iOS Cookbook(中文版)》是一本专注于iOS应用开发的实战指南,主要针对苹果的移动操作系统iOS进行深入探讨。这本书的中文版使得更多的中国开发者能够方便地学习和掌握iOS开发技术,为中国的iOS开发社区提供了宝贵的...
《iOS 8 Swift Programming Cookbook》源码分析 在iOS应用开发领域,Swift语言以其简洁、安全和高效的特点,迅速成为了主流编程语言。本资源“iOS-8-Swift-Programming-Cookbook源码”是与《iOS 8 Swift ...
Lott -- Modern Python Cookbook -- 2016 -- code.7z
Aggarwal -- Flask Framework Cookbook -- 2014 -- code.7z
Subramanian -- Python Data Science Cookbook -- 2015 -- code.7z