More Related Content Similar to 自動でできるかな? (20) 自動でできるかな?5. シナリオ
VM VM VM
hyper visor bare metal
L2 switch(ToR)
L3 switch
trunk access
trunk
最近流行りのクラウド 昔ながらの物理サーバ
11. ❖ Speed/Duplex
❖ IF-MIB::ifHighSpeed
❖ EtherLike-MIB::dot3StatsDuplexStatus
実行
$ snmpset -v 1 -c community host ifXTable.ifXEntry.ifHighSpeed.10001 i 1000
Error in packet.
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: IF-MIB::ifHighSpeed.10001
13. ❖ C3750
CISCO-STACK-MIB::
portAdminSpeed OBJECT-TYPE
SYNTAX INTEGER {
autoDetect(1),
autoDetect10100(2),
-- Auto Detect with,
-- only allowed values: 10 & 100
s4000000(4000000), -- 4 Mbps
s10000000(10000000), -- 10 Mbps
・・・
s64000(64000), -- 64 kps
s10G(10) -- 10 Gps
}
MAX-ACCESS read-write
STATUS current IndexはCISCO-STACK-MIB::portIfIndexを指定( ifIndex)
$ snmpwalk -c public host ifDescr # ifIndex
IF-MIB::ifDescr.10002 = STRING: FastEthernet1/0/2
$ snmpwalk -c public host portIfIndex # ifIndex <=> portIfIndex
CISCO-STACK-MIB::portIfIndex.1.4 = INTEGER: 10002
$ snmpset -c private host portAdminSpeed.1.4 i 1 # autoDetect
※C2950はCISCO-C2900-MIBが対応
15. ❖ VLAN
❖ C3750/C2950
IF同様private MIBにて実装(VTP-MIB)
❖ VLANの追加
$ snmpset -c private crumpy vtpVlanEditOperation.1 integer 2
$ snmpset -c private crumpy vtpVlanEditBufferOwner.1 octetstring "Gerald"
$ snmpset -c private crumpy vtpVlanEditDot10Said.1.11 octetstringhex 000186AB
$ snmpset -c private crumpy vtpVlanEditOperation.1 integer 3
❖ ポートへVLAN追加
$ snmpget -c private crumpy ifDescr
interfaces.ifTable.ifEntry.ifDescr.6 : DISPLAY STRING- (ascii): FastEthernet0/5
$ snmpset -c private crumpy vmVlan.6 integer 48
http://www.cisco.com/cisco/web/support/JP/100/1004/1004104_vlans.html
19. ❖ ざっくりNETCONF
❖ RFC6241
❖ XMLで設定・取得ができる
❖ こんなのを投げます
<get-config>
<interface>
<name>fastethernet-1/0</name>
<type>ianaift:ethernetCsmacd</type>
</interface>
20. ❖ AX3600/2400
Request:
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<rpc message-id="4965">
<get-config>
<source> <running /> </source>
</get-config>
</rpc> </rpc>
Response
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<rpc-reply message-id="4965">
<data>
<ns1:ConfigData xmlns:ns1="urn:net:alaxala:oan:onapi:commons:netmod:1.0">
#Last modified by i2ts at Wed Jul 1 17:58:58 2015 with version 11.4
!
hostname "Labo-AX"
clock timezone JST +9
・・・
get−configはできたが設定用のschemaが見つからず断念
21. ❖ CSR1000v
標準schemaよりもなんでも出来る分、こっちの方が便利かも
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<edit-config>
<target>
<running/>
</target>
<config>
<cli-config-data>
<cmd> interface GigabitEthernet2 </cmd>
<cmd> speed 1000 </cmd>
</cli-config-data>
</config>
</edit-config>
</rpc>]]>]]>
23. CSR1000v
イマドキさんです :-)
❖ IF up/down
POST /api/v1/interfaces/gigabitEthernet1/state
Content-Type: application/json
{
"if-name" : "gigabitEthernet1",
"enabled" : true
}
❖ Sub-IF(VLAN) & IP設定
POST /api/v1/interfaces
Content-Type: application/json
{
"subinterface-vlan": {"vlan-id":23},
"if-name": "GigabitEthernet2.23",
"subnet-mask": "255.255.255.0",
"ip-address": "22.10.10.23",
"type": "ethernet"
}
28. ❖ SNMPは情報取得用と割り切る
❖ 設定 CLI、確認 SNMP、など役割分担するのが現実的
❖ SETに対応するMIBが増えれば使い勝手はかなり良くなるはず
❖ 10GbEが当たり前の時代、64bitカウンタは必須
❖ NETCONFの使い勝手は対応モデルの数次第
❖ 真っ当に使おうとするとモデルの数が少なすぎてSNMPより不便
現状の標準MIBくらいは対応してくれないと
❖ Commandの埋め込みが使えればこちらの方がはるかに便利
30. おまけ
❖ VMware ESX
❖ 仮想基盤(hyper visor)
❖ 設定・情報取得はGUI/CLIとSOAP(like NETCONF)
❖ オブジェクト設計がイマドキ
31. ❖ Request:
<QueryDvsConfigTarget xmlns="urn:vim25">
<_this type="DistributedVirtualSwitchManager">ha-dvsmanager</_this>
</QueryDvsConfigTarget>
❖ Response:
<QueryDvsConfigTargetResponse xmlns="urn:vim25">
<returnval>
<distributedVirtualPortgroup>
<switchName>DSwitch</switchName>
<switchUuid>0c 60 37 50 ef 60 45 49-07 36 1d 31 13 65 f5 dd</switchUuid>
<portgroupName>common segment</portgroupName>
・・・・・
<distributedVirtualSwitch>
<switchName>test-network</switchName>
<switchUuid>3f 90 03 50 64 12 05 33-49 84 05 2e 78 45 47 16</switchUuid>
</distributedVirtualSwitch>
</returnval>
</QueryDvsConfigTargetResponse>
require 'rbvmomi'
vim = RbVmomi::VIM.connect(:host=>host, :user=>user, :password=>pass, :insecure=>true) # connect server
vim.serviceContent.dvSwitchManager.QueryDvsConfigTarget # query
お膳立て含めて3行
仮想スイッチの取得